Implemented shield hardware. Added heal, damage and charge shield debug commands.

This commit is contained in:
simon
2018-03-10 13:54:43 -05:00
parent e4269b83c4
commit 2565d3338c
9 changed files with 159 additions and 13 deletions

View File

@@ -90,6 +90,8 @@ public class GameServer implements Runnable {
eventDispatcher.getListeners().add(new SpawnObjCommandListener());
eventDispatcher.getListeners().add(new TpObjectCommandListener());
eventDispatcher.getListeners().add(new UserInfoCommandListener());
eventDispatcher.getListeners().add(new HealObjCommandListener());
eventDispatcher.getListeners().add(new DamageObjCommandListener());
}
@@ -184,7 +186,7 @@ public class GameServer implements Runnable {
socketServer.tick();
LogManager.LOGGER.info("Processed " + gameUniverse.getWorldCount() + " worlds (" + updatedWorlds +
") updated");
" updated)");
}

View File

@@ -0,0 +1,46 @@
package net.simon987.server.game.debug;
import net.simon987.server.GameServer;
import net.simon987.server.event.DebugCommandEvent;
import net.simon987.server.event.GameEvent;
import net.simon987.server.event.GameEventListener;
import net.simon987.server.game.Attackable;
import net.simon987.server.game.GameObject;
public class DamageObjCommandListener implements GameEventListener {
@Override
public Class getListenedEventType() {
return DebugCommandEvent.class;
}
@Override
public void handle(GameEvent event) {
DebugCommandEvent e = (DebugCommandEvent) event;
if (e.getName().equals("damageObj")) {
GameObject object = GameServer.INSTANCE.getGameUniverse().getObject(e.getLong("objectId"));
if (object != null) {
if (object instanceof Attackable) {
int oldHp = ((Attackable) object).getHp();
int maxHp = ((Attackable) object).getMaxHp();
((Attackable) object).damage(e.getInt("amount"));
e.reply("Success: " + oldHp + "/" + maxHp + " -> " + ((Attackable) object).getHp() + "/" + maxHp);
} else {
e.reply("Object is not Attackable");
}
} else {
e.reply("Object not found: " + e.getLong("objectId"));
}
}
}
}

View File

@@ -0,0 +1,46 @@
package net.simon987.server.game.debug;
import net.simon987.server.GameServer;
import net.simon987.server.event.DebugCommandEvent;
import net.simon987.server.event.GameEvent;
import net.simon987.server.event.GameEventListener;
import net.simon987.server.game.Attackable;
import net.simon987.server.game.GameObject;
public class HealObjCommandListener implements GameEventListener {
@Override
public Class getListenedEventType() {
return DebugCommandEvent.class;
}
@Override
public void handle(GameEvent event) {
DebugCommandEvent e = (DebugCommandEvent) event;
if (e.getName().equals("healObj")) {
GameObject object = GameServer.INSTANCE.getGameUniverse().getObject(e.getLong("objectId"));
if (object != null) {
if (object instanceof Attackable) {
int oldHp = ((Attackable) object).getHp();
int maxHp = ((Attackable) object).getMaxHp();
((Attackable) object).heal(e.getInt("amount"));
e.reply("Success: " + oldHp + "/" + maxHp + " -> " + ((Attackable) object).getHp() + "/" + maxHp);
} else {
e.reply("Object is not Attackable");
}
} else {
e.reply("Object not found: " + e.getLong("objectId"));
}
}
}
}

View File

@@ -13,9 +13,8 @@ public class DebugCommandHandler implements MessageHandler {
if (json.get("t").equals("debug") && user.isModerator()) {
DebugCommandEvent e = new DebugCommandEvent(json, user);
GameServer.INSTANCE.getEventDispatcher().dispatch(e);
GameServer.INSTANCE.getEventDispatcher().dispatch(e); //Ignore cancellation
}
}
}

View File

@@ -18,7 +18,7 @@ public class TerrainRequestHandler implements MessageHandler {
try {
world = GameServer.INSTANCE.getGameUniverse().getWorld(
Long.valueOf((long) json.get("x")).intValue(),
Long.valueOf((long) json.get("y")).intValue(), false,
Long.valueOf((long) json.get("y")).intValue(), true,
(String) json.get("dimension"));
} catch (NullPointerException e) {
LogManager.LOGGER.severe("FIXME: handle TerrainRequestHandler");