From a7566d3277d2c4f5b26b507c926019a8badad314 Mon Sep 17 00:00:00 2001 From: "micael.bergeron" Date: Wed, 14 Sep 2016 14:17:06 -0400 Subject: [PATCH 1/8] Add a warding processor this processor may be used to track down warding events, such as Counterwarding, Placement or Expiry. It uses the combat log events correlated with entity life state tracking. --- pom.xml | 61 +++++- .../processors/warding/OnWardCountered.java | 19 ++ .../processors/warding/OnWardExpired.java | 19 ++ .../yasp/processors/warding/OnWardPlaced.java | 19 ++ .../java/yasp/processors/warding/Wards.java | 188 ++++++++++++++++++ 5 files changed, 300 insertions(+), 6 deletions(-) create mode 100644 src/main/java/yasp/processors/warding/OnWardCountered.java create mode 100644 src/main/java/yasp/processors/warding/OnWardExpired.java create mode 100644 src/main/java/yasp/processors/warding/OnWardPlaced.java create mode 100644 src/main/java/yasp/processors/warding/Wards.java diff --git a/pom.xml b/pom.xml index e647df6db..72e004892 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,21 @@ - + + com.github.skadistats clarity @@ -58,7 +72,7 @@ clarity 2.3-SNAPSHOT - + com.google.code.gson gson @@ -69,13 +83,26 @@ org.apache.maven.plugins - maven-shade-plugin - 2.2 + maven-jar-plugin + 3.0.2 + + + + true + yasp.Main + + + + + + + com.jolira + onejar-maven-plugin + 1.4.4 - package - shade + one-jar @@ -87,6 +114,28 @@ + opendota-parser diff --git a/src/main/java/yasp/processors/warding/OnWardCountered.java b/src/main/java/yasp/processors/warding/OnWardCountered.java new file mode 100644 index 000000000..2fe0719da --- /dev/null +++ b/src/main/java/yasp/processors/warding/OnWardCountered.java @@ -0,0 +1,19 @@ +package yasp.processors.warding; + +import java.lang.annotation.Annotation; + +import skadistats.clarity.event.UsagePointMarker; +import skadistats.clarity.event.UsagePointType; +import skadistats.clarity.model.Entity; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(value = ElementType.METHOD) +@UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class, String.class }) +public @interface OnWardCountered { +} + diff --git a/src/main/java/yasp/processors/warding/OnWardExpired.java b/src/main/java/yasp/processors/warding/OnWardExpired.java new file mode 100644 index 000000000..affb3e08d --- /dev/null +++ b/src/main/java/yasp/processors/warding/OnWardExpired.java @@ -0,0 +1,19 @@ +package yasp.processors.warding; + +import java.lang.annotation.Annotation; + +import skadistats.clarity.event.UsagePointMarker; +import skadistats.clarity.event.UsagePointType; +import skadistats.clarity.model.Entity; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(value = ElementType.METHOD) +@UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class }) +public @interface OnWardExpired { +} + diff --git a/src/main/java/yasp/processors/warding/OnWardPlaced.java b/src/main/java/yasp/processors/warding/OnWardPlaced.java new file mode 100644 index 000000000..0312c8add --- /dev/null +++ b/src/main/java/yasp/processors/warding/OnWardPlaced.java @@ -0,0 +1,19 @@ +package yasp.processors.warding; + +import java.lang.annotation.Annotation; + +import skadistats.clarity.event.UsagePointMarker; +import skadistats.clarity.event.UsagePointType; +import skadistats.clarity.model.Entity; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(value = ElementType.METHOD) +@UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class }) +public @interface OnWardPlaced { +} + diff --git a/src/main/java/yasp/processors/warding/Wards.java b/src/main/java/yasp/processors/warding/Wards.java new file mode 100644 index 000000000..34866f9a2 --- /dev/null +++ b/src/main/java/yasp/processors/warding/Wards.java @@ -0,0 +1,188 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package yasp.processors.warding; + +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Queue; +import java.util.Set; + +import skadistats.clarity.event.Event; +import skadistats.clarity.event.EventListener; +import skadistats.clarity.event.Initializer; +import skadistats.clarity.event.Provides; +import skadistats.clarity.model.Entity; +import skadistats.clarity.model.FieldPath; +import skadistats.clarity.model.CombatLogEntry; +import skadistats.clarity.processor.entities.OnEntityCreated; +import skadistats.clarity.processor.entities.OnEntityDeleted; +import skadistats.clarity.processor.entities.OnEntityUpdated; +import skadistats.clarity.processor.entities.UsesEntities; +import skadistats.clarity.processor.gameevents.OnCombatLogEntry; +import skadistats.clarity.processor.reader.OnTickEnd; +import skadistats.clarity.processor.runner.Context; +import skadistats.clarity.wire.common.proto.DotaUserMessages; + +/** + * @author micaelbergeron + */ +@UsesEntities +@Provides({ OnWardCountered.class, OnWardExpired.class, OnWardPlaced.class }) +public class Wards { + + private static final Set WARDS_DT_CLASSES = new HashSet(Arrays.asList( + new String[] { + "CDOTA_NPC_Observer_Ward", + "CDOTA_NPC_Observer_Ward_TrueSight" + } + )); + + private static final Set WARDS_TARGET_NAMES = new HashSet(Arrays.asList( + new String[] { + "npc_dota_observer_wards", + "npc_dota_sentry_wards" + } + )); + + private final Map lifeStatePaths = new HashMap<>(); + private final Map currentLifeState = new HashMap<>(); + + private final Queue wardKillers = new ArrayDeque<>(); + private Queue toProcess = new ArrayDeque<>(); + + private Event evCountered; + private Event evExpired; + private Event evPlaced; + + private class ProcessEntityCommand { + + private Entity entity; + private FieldPath fieldPath; + + public ProcessEntityCommand(Entity e, FieldPath p) { + entity = e; + fieldPath = p; + } + } + + @Initializer(OnWardCountered.class) + public void initOnWardCountered(final Context ctx, final EventListener listener) { + evCountered = ctx.createEvent(OnWardCountered.class, Entity.class, String.class); + } + + @Initializer(OnWardExpired.class) + public void initOnWardExpired(final Context ctx, final EventListener listener) { + evExpired = ctx.createEvent(OnWardExpired.class, Entity.class); + } + + @Initializer(OnWardPlaced.class) + public void initOnWardPlaced(final Context ctx, final EventListener listener) { + evPlaced = ctx.createEvent(OnWardPlaced.class, Entity.class); + } + + @OnEntityCreated + public void onCreated(Context ctx, Entity e) { + if (!isWard(e)) return; + + FieldPath lifeStatePath; + + clearCachedState(e); + ensureFieldPathForEntityInitialized(e); + if ((lifeStatePath = getFieldPathForEntity(e)) != null) + processLifeStateChange(e, lifeStatePath); + } + + @OnEntityUpdated + public void onUpdated(Context ctx, Entity e, FieldPath[] fieldPaths, int num) { + FieldPath p; + if ((p = getFieldPathForEntity(e)) != null) { + for (int i = 0; i < num; i++) { + if (fieldPaths[i].equals(p)) { + toProcess.add(new ProcessEntityCommand(e, p)); + break; + } + } + } + } + + @OnEntityDeleted + public void onDeleted(Context ctx, Entity e) { + clearCachedState(e); + } + + @OnCombatLogEntry + public void onCombatLogEntry(Context ctx, CombatLogEntry entry) { + if (!isWardDeath(entry)) return; + + String killer; + if ((killer = entry.getAttackerName()) != null) + wardKillers.add(killer); + } + + @OnTickEnd + public void onTickEnd(Context ctx, boolean synthetic) { + if (!synthetic) return; + + ProcessEntityCommand cmd; + while ((cmd = toProcess.poll()) != null) { + processLifeStateChange(cmd.entity, cmd.fieldPath); + } + } + + private FieldPath getFieldPathForEntity(Entity e) { + return lifeStatePaths.get(e.getDtClass().getClassId()); + } + + private void clearCachedState(Entity e) { + currentLifeState.remove(e.getIndex()); + } + + private void ensureFieldPathForEntityInitialized(Entity e) { + Integer cid = e.getDtClass().getClassId(); + if (!lifeStatePaths.containsKey(cid)) { + lifeStatePaths.put(cid, e.getDtClass().getFieldPathForName("m_lifeState")); + } + } + + private boolean isWard(Entity e) { + return WARDS_DT_CLASSES.contains(e.getDtClass().getDtName()); + } + + private boolean isWardDeath(CombatLogEntry e) { + return e.getType().equals(DotaUserMessages.DOTA_COMBATLOG_TYPES.DOTA_COMBATLOG_DEATH) + && WARDS_TARGET_NAMES.contains(e.getTargetName()); + } + + public void processLifeStateChange(Entity e, FieldPath p) { + int oldState = currentLifeState.containsKey(e.getIndex()) ? currentLifeState.get(e.getIndex()) : 2; + int newState = e.getPropertyForFieldPath(p); + if (oldState != newState) { + switch(newState) { + case 0: + if (evPlaced != null) + evPlaced.raise(e); + break; + case 1: + String killer; + if ((killer = wardKillers.poll()) != null) { + if (evCountered != null) + evCountered.raise(e, killer); + } else { + if (evExpired != null) + evExpired.raise(e); + } + break; + } + } + + currentLifeState.put(e.getIndex(), newState); + } + +} + From deccd8a05bcede574a4fb166fb9ab63018b73c44 Mon Sep 17 00:00:00 2001 From: "micael.bergeron" Date: Wed, 14 Sep 2016 23:07:00 -0400 Subject: [PATCH 2/8] reword annotions and fix code style --- ...OnWardCountered.java => OnWardKilled.java} | 2 +- .../java/yasp/processors/warding/Wards.java | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 14 deletions(-) rename src/main/java/yasp/processors/warding/{OnWardCountered.java => OnWardKilled.java} (93%) diff --git a/src/main/java/yasp/processors/warding/OnWardCountered.java b/src/main/java/yasp/processors/warding/OnWardKilled.java similarity index 93% rename from src/main/java/yasp/processors/warding/OnWardCountered.java rename to src/main/java/yasp/processors/warding/OnWardKilled.java index 2fe0719da..bc615ad6e 100644 --- a/src/main/java/yasp/processors/warding/OnWardCountered.java +++ b/src/main/java/yasp/processors/warding/OnWardKilled.java @@ -14,6 +14,6 @@ @Retention(RetentionPolicy.RUNTIME) @Target(value = ElementType.METHOD) @UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class, String.class }) -public @interface OnWardCountered { +public @interface OnWardKilled { } diff --git a/src/main/java/yasp/processors/warding/Wards.java b/src/main/java/yasp/processors/warding/Wards.java index 34866f9a2..b51178a9e 100644 --- a/src/main/java/yasp/processors/warding/Wards.java +++ b/src/main/java/yasp/processors/warding/Wards.java @@ -33,11 +33,13 @@ * @author micaelbergeron */ @UsesEntities -@Provides({ OnWardCountered.class, OnWardExpired.class, OnWardPlaced.class }) +@Provides({ OnWardKilled.class, OnWardExpired.class, OnWardPlaced.class }) public class Wards { private static final Set WARDS_DT_CLASSES = new HashSet(Arrays.asList( new String[] { + "DT_DOTA_NPC_Observer_Ward", + "DT_DOTA_NPC_Observer_Ward_TrueSight", "CDOTA_NPC_Observer_Ward", "CDOTA_NPC_Observer_Ward_TrueSight" } @@ -56,7 +58,7 @@ public class Wards { private final Queue wardKillers = new ArrayDeque<>(); private Queue toProcess = new ArrayDeque<>(); - private Event evCountered; + private Event evKilled; private Event evExpired; private Event evPlaced; @@ -71,9 +73,9 @@ public ProcessEntityCommand(Entity e, FieldPath p) { } } - @Initializer(OnWardCountered.class) - public void initOnWardCountered(final Context ctx, final EventListener listener) { - evCountered = ctx.createEvent(OnWardCountered.class, Entity.class, String.class); + @Initializer(OnWardKilled.class) + public void initOnWardKilled(final Context ctx, final EventListener listener) { + evKilled = ctx.createEvent(OnWardKilled.class, Entity.class, String.class); } @Initializer(OnWardExpired.class) @@ -94,8 +96,9 @@ public void onCreated(Context ctx, Entity e) { clearCachedState(e); ensureFieldPathForEntityInitialized(e); - if ((lifeStatePath = getFieldPathForEntity(e)) != null) - processLifeStateChange(e, lifeStatePath); + if ((lifeStatePath = getFieldPathForEntity(e)) != null) { + processLifeStateChange(e, lifeStatePath); + } } @OnEntityUpdated @@ -121,8 +124,9 @@ public void onCombatLogEntry(Context ctx, CombatLogEntry entry) { if (!isWardDeath(entry)) return; String killer; - if ((killer = entry.getAttackerName()) != null) - wardKillers.add(killer); + if ((killer = entry.getAttackerName()) != null) { + wardKillers.add(killer); + } } @OnTickEnd @@ -165,17 +169,20 @@ public void processLifeStateChange(Entity e, FieldPath p) { if (oldState != newState) { switch(newState) { case 0: - if (evPlaced != null) + if (evPlaced != null) { evPlaced.raise(e); + } break; case 1: String killer; if ((killer = wardKillers.poll()) != null) { - if (evCountered != null) - evCountered.raise(e, killer); + if (evKilled != null) { + evKilled.raise(e, killer); + } } else { - if (evExpired != null) + if (evExpired != null) { evExpired.raise(e); + } } break; } From 64c6163a1ce5aec30f62cca0f6c293bcc4a92d42 Mon Sep 17 00:00:00 2001 From: "micael.bergeron" Date: Wed, 14 Sep 2016 14:17:06 -0400 Subject: [PATCH 3/8] Add a warding processor this processor may be used to track down warding events, such as Counterwarding, Placement or Expiry. It uses the combat log events correlated with entity life state tracking. --- .../processors/warding/OnWardCountered.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/yasp/processors/warding/OnWardCountered.java diff --git a/src/main/java/yasp/processors/warding/OnWardCountered.java b/src/main/java/yasp/processors/warding/OnWardCountered.java new file mode 100644 index 000000000..2fe0719da --- /dev/null +++ b/src/main/java/yasp/processors/warding/OnWardCountered.java @@ -0,0 +1,19 @@ +package yasp.processors.warding; + +import java.lang.annotation.Annotation; + +import skadistats.clarity.event.UsagePointMarker; +import skadistats.clarity.event.UsagePointType; +import skadistats.clarity.model.Entity; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(value = ElementType.METHOD) +@UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class, String.class }) +public @interface OnWardCountered { +} + From 16b87d16d4a6fbcff3e3b9560f414b1cd96c8bf8 Mon Sep 17 00:00:00 2001 From: "micael.bergeron" Date: Wed, 14 Sep 2016 23:07:00 -0400 Subject: [PATCH 4/8] reword annotions and fix code style --- .../processors/warding/OnWardCountered.java | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 src/main/java/yasp/processors/warding/OnWardCountered.java diff --git a/src/main/java/yasp/processors/warding/OnWardCountered.java b/src/main/java/yasp/processors/warding/OnWardCountered.java deleted file mode 100644 index 2fe0719da..000000000 --- a/src/main/java/yasp/processors/warding/OnWardCountered.java +++ /dev/null @@ -1,19 +0,0 @@ -package yasp.processors.warding; - -import java.lang.annotation.Annotation; - -import skadistats.clarity.event.UsagePointMarker; -import skadistats.clarity.event.UsagePointType; -import skadistats.clarity.model.Entity; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(value = ElementType.METHOD) -@UsagePointMarker(value = UsagePointType.EVENT_LISTENER, parameterClasses = { Entity.class, String.class }) -public @interface OnWardCountered { -} - From 20e0325caefb5707b270d3eb7d29e20a02e8fd43 Mon Sep 17 00:00:00 2001 From: "micael.bergeron" Date: Mon, 24 Oct 2016 17:33:57 -0400 Subject: [PATCH 5/8] correct an edge case on same-tick events upon a same-tick event, there is a chance that the ward kill will be credited to the wrong attacker, but this commit limits the impact of this caveat by separating the wards from the sentries. thus you will always be credited a ward kill if you last hit a ward --- pom.xml | 4 ++ .../java/yasp/processors/warding/Wards.java | 65 ++++++++++++------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 72e004892..889f894d7 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,7 @@ yasp.Main + ${project.build.finalName}-original @@ -113,6 +114,9 @@ + + ${project.build.finalName}.jar + - - + - - com.jolira - onejar-maven-plugin - 1.4.4 + maven-shade-plugin + 2.2 + package - one-jar + shade @@ -114,32 +86,7 @@ - - ${project.build.finalName}.jar - - - opendota-parser diff --git a/src/main/java/opendota/Parse.java b/src/main/java/opendota/Parse.java index ab51e4224..1440ce797 100644 --- a/src/main/java/opendota/Parse.java +++ b/src/main/java/opendota/Parse.java @@ -38,6 +38,9 @@ import opendota.combatlogvisitors.TrackVisitor; import opendota.combatlogvisitors.GreevilsGreedVisitor; import opendota.combatlogvisitors.TrackVisitor.TrackStatus; +import opendota.processors.warding.OnWardExpired; +import opendota.processors.warding.OnWardKilled; +import opendota.processors.warding.OnWardPlaced; public class Parse { @@ -401,7 +404,6 @@ else if (cle.getType() == DOTA_COMBATLOG_TYPES.DOTA_COMBATLOG_XP) { @OnEntityEntered public void onEntityEntered(Context ctx, Entity e) { - processEntity(ctx, e, false); if (e.getDtClass().getDtName().equals("CDOTAWearableItem")) { Integer accountId = getEntityProperty(e, "m_iAccountID", null); Integer itemDefinitionIndex = getEntityProperty(e, "m_iItemDefinitionIndex", null); @@ -418,11 +420,6 @@ public void onEntityEntered(Context ctx, Entity e) { } } } - - @OnEntityLeft - public void onEntityLeft(Context ctx, Entity e) { - processEntity(ctx, e, true); - } @UsesStringTable("EntityNames") @UsesEntities @@ -727,45 +724,43 @@ public T getEntityProperty(Entity e, String property, Integer idx) { } } - public void processEntity(Context ctx, Entity e, boolean entityLeft) - { - //CDOTA_NPC_Observer_Ward - //CDOTA_NPC_Observer_Ward_TrueSight - //s1 "DT_DOTA_NPC_Observer_Ward" - //s1 "DT_DOTA_NPC_Observer_Ward_TrueSight" - boolean isObserver = e.getDtClass().getDtName().equals("CDOTA_NPC_Observer_Ward"); - boolean isSentry = e.getDtClass().getDtName().equals("CDOTA_NPC_Observer_Ward_TrueSight"); - if (isObserver || isSentry) { - //System.err.println(e); - Entry entry = new Entry(time); - Integer x = getEntityProperty(e, "CBodyComponent.m_cellX", null); - Integer y = getEntityProperty(e, "CBodyComponent.m_cellY", null); - Integer z = getEntityProperty(e, "CBodyComponent.m_cellZ", null); - Integer[] pos = {x, y}; - entry.x = x; - entry.y = y; - entry.z = z; - if (entityLeft) - { - entry.type = isObserver ? "obs_left" : "sen_left"; - } - else - { - entry.type = isObserver ? "obs" : "sen"; - } - entry.key = Arrays.toString(pos); - entry.entityleft = entityLeft; - entry.ehandle = e.getHandle(); - //System.err.println(entry.key); - Integer owner = getEntityProperty(e, "m_hOwnerEntity", null); - Entity ownerEntity = ctx.getProcessor(Entities.class).getByHandle(owner); - entry.slot = ownerEntity != null ? (Integer) getEntityProperty(ownerEntity, "m_iPlayerID", null) : ward_ehandle_to_slot.get(entry.ehandle); - if (entry.slot != null && !ward_ehandle_to_slot.containsKey(entry.ehandle)) { - ward_ehandle_to_slot.put(entry.ehandle, entry.slot); - } - //2/3 radiant/dire - //entry.team = e.getProperty("m_iTeamNum"); - output(entry); + @OnWardKilled + public void onWardKilled(Context ctx, Entity e, String killerHeroName) { + Entry wardEntry = buildWardEntry(ctx, e); + wardEntry.attackername = killerHeroName; + output(wardEntry); + } + + @OnWardExpired + @OnWardPlaced + public void onWardExistenceChanged(Context ctx, Entity e) { + output(buildWardEntry(ctx, e)); + } + + private Entry buildWardEntry(Context ctx, Entity e) { + Entry entry = new Entry(time); + boolean isObserver = !e.getDtClass().getDtName().contains("TrueSight"); + Integer x = getEntityProperty(e, "CBodyComponent.m_cellX", null); + Integer y = getEntityProperty(e, "CBodyComponent.m_cellY", null); + Integer z = getEntityProperty(e, "CBodyComponent.m_cellZ", null); + Integer life_state = getEntityProperty(e, "m_lifeState", null); + Integer[] pos = {x, y}; + entry.x = x; + entry.y = y; + entry.z = z; + entry.type = isObserver ? "obs" : "sen"; + entry.entityleft = life_state == 1; + entry.key = Arrays.toString(pos); + entry.ehandle = e.getHandle(); + + if (entry.entityleft) { + entry.type += "_left"; } + + Integer owner = getEntityProperty(e, "m_hOwnerEntity", null); + Entity ownerEntity = ctx.getProcessor(Entities.class).getByHandle(owner); + entry.slot = ownerEntity != null ? (Integer) getEntityProperty(ownerEntity, "m_iPlayerID", null) : null; + + return entry; } } diff --git a/src/main/java/yasp/processors/warding/OnWardExpired.java b/src/main/java/opendota/processors/warding/OnWardExpired.java similarity index 93% rename from src/main/java/yasp/processors/warding/OnWardExpired.java rename to src/main/java/opendota/processors/warding/OnWardExpired.java index affb3e08d..ab9bb6cb5 100644 --- a/src/main/java/yasp/processors/warding/OnWardExpired.java +++ b/src/main/java/opendota/processors/warding/OnWardExpired.java @@ -1,4 +1,4 @@ -package yasp.processors.warding; +package opendota.processors.warding; import java.lang.annotation.Annotation; diff --git a/src/main/java/yasp/processors/warding/OnWardKilled.java b/src/main/java/opendota/processors/warding/OnWardKilled.java similarity index 93% rename from src/main/java/yasp/processors/warding/OnWardKilled.java rename to src/main/java/opendota/processors/warding/OnWardKilled.java index bc615ad6e..376390a91 100644 --- a/src/main/java/yasp/processors/warding/OnWardKilled.java +++ b/src/main/java/opendota/processors/warding/OnWardKilled.java @@ -1,4 +1,4 @@ -package yasp.processors.warding; +package opendota.processors.warding; import java.lang.annotation.Annotation; diff --git a/src/main/java/yasp/processors/warding/OnWardPlaced.java b/src/main/java/opendota/processors/warding/OnWardPlaced.java similarity index 93% rename from src/main/java/yasp/processors/warding/OnWardPlaced.java rename to src/main/java/opendota/processors/warding/OnWardPlaced.java index 0312c8add..b4d5721a5 100644 --- a/src/main/java/yasp/processors/warding/OnWardPlaced.java +++ b/src/main/java/opendota/processors/warding/OnWardPlaced.java @@ -1,4 +1,4 @@ -package yasp.processors.warding; +package opendota.processors.warding; import java.lang.annotation.Annotation; diff --git a/src/main/java/yasp/processors/warding/Wards.java b/src/main/java/opendota/processors/warding/Wards.java similarity index 99% rename from src/main/java/yasp/processors/warding/Wards.java rename to src/main/java/opendota/processors/warding/Wards.java index 203956b06..d0c8f18d7 100644 --- a/src/main/java/yasp/processors/warding/Wards.java +++ b/src/main/java/opendota/processors/warding/Wards.java @@ -1,4 +1,4 @@ -package yasp.processors.warding; +package opendota.processors.warding; import java.util.ArrayDeque; import java.util.Collections;