|
@@ -42,58 +42,71 @@ import net.minecraft.world.World;
|
|
|
import net.minecraft.world.server.ServerWorld;
|
|
|
|
|
|
public class PlayerCommands {
|
|
|
-
|
|
|
- public static void registerFunctions(ScriptManager sm, Scripts scripts,
|
|
|
- Permissions perms, SnuviScheduler scheduler, MinecraftServer server,
|
|
|
- IPlayerBank playerBank) {
|
|
|
- sm.registerFunction("player.getitemamount", (sc, in) -> (double) InventoryUtils.searchInventoryFor(((PlayerEntity) in[0].get(sc)).inventory, (ItemStack) in[2].get(sc), in[1].getBoolean(sc)));
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ public static void registerFunctions(ScriptManager sm, Scripts scripts, Permissions perms,
|
|
|
+ SnuviScheduler scheduler, MinecraftServer server, IPlayerBank playerBank) {
|
|
|
+ sm.registerFunction("player.getitemamount",
|
|
|
+ (sc, in) -> (double) InventoryUtils.searchInventoryFor(
|
|
|
+ ((PlayerEntity) in[0].get(sc)).inventory, (ItemStack) in[2].get(sc),
|
|
|
+ in[1].getBoolean(sc)));
|
|
|
sm.registerFunction("player.removeitem", (sc, in) -> {
|
|
|
ItemStack stack = ((ItemStack) in[1].get(sc)).copy();
|
|
|
- stack.setCount(InventoryUtils.removeFromInventory(((PlayerEntity) in[0].get(sc)).inventory, stack));
|
|
|
+ stack.setCount(InventoryUtils
|
|
|
+ .removeFromInventory(((PlayerEntity) in[0].get(sc)).inventory, stack));
|
|
|
return stack;
|
|
|
});
|
|
|
sm.registerFunction("player.giveitem", (sc, in) -> {
|
|
|
ItemStack stack = ((ItemStack) in[1].get(sc)).copy();
|
|
|
- stack.setCount(InventoryUtils.addToInventory(((PlayerEntity) in[0].get(sc)).inventory, stack));
|
|
|
+ stack.setCount(
|
|
|
+ InventoryUtils.addToInventory(((PlayerEntity) in[0].get(sc)).inventory, stack));
|
|
|
return stack;
|
|
|
});
|
|
|
sm.registerConsumer("player.respawn", (sc, in) -> {
|
|
|
final ServerPlayerEntity p = ((ServerPlayerEntity) in[0].get(sc));
|
|
|
scheduler.scheduleTask(() -> {
|
|
|
try {
|
|
|
- p.connection.processClientStatus(new CClientStatusPacket(CClientStatusPacket.State.PERFORM_RESPAWN));
|
|
|
- } catch(ThreadQuickExitException ex) {
|
|
|
+ p.connection.processClientStatus(
|
|
|
+ new CClientStatusPacket(CClientStatusPacket.State.PERFORM_RESPAWN));
|
|
|
+ } catch (ThreadQuickExitException ex) {
|
|
|
// Minecraft needs this for canceling and queueing into main thread
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
- sm.registerConsumer("player.clearinventory", (sc, in) -> ((PlayerEntity) in[0].get(sc)).inventory.clear());
|
|
|
- sm.registerFunction("player.inventorytolist", (sc, in) -> ((PlayerEntity) in[1].get(sc)).inventory.mainInventory);
|
|
|
+ sm.registerConsumer("player.clearinventory",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).inventory.clear());
|
|
|
+ sm.registerFunction("player.inventorytolist",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[1].get(sc)).inventory.mainInventory);
|
|
|
sm.registerFunction("player.getnearest", (sc, in) -> {
|
|
|
Location l = (Location) in[0].get(sc);
|
|
|
return l.getWorld().getClosestPlayer(l.getX(), l.getY(), l.getZ(), -1, p -> true);
|
|
|
});
|
|
|
sm.registerConsumer("player.say", (sc, in) -> {
|
|
|
try {
|
|
|
- ((ServerPlayerEntity) in[0].get(sc)).connection.processChatMessage(new CChatMessagePacket(SnuviUtils.connect(sc, in, 1)));
|
|
|
- } catch(ThreadQuickExitException ex) {
|
|
|
+ ((ServerPlayerEntity) in[0].get(sc)).connection
|
|
|
+ .processChatMessage(new CChatMessagePacket(SnuviUtils.connect(sc, in, 1)));
|
|
|
+ } catch (ThreadQuickExitException ex) {
|
|
|
// Minecraft needs this for canceling and queueing into main thread
|
|
|
}
|
|
|
});
|
|
|
sm.registerConsumer("player.speak", (sc, in) -> {
|
|
|
- sendMessageToGroup(server, scripts, perms, in[0].get(sc), sc, concat(sc, 2, "[" + in[1].getString(sc) + "§r] ", in));
|
|
|
+ sendMessageToGroup(server, scripts, perms, in[0].get(sc), sc,
|
|
|
+ concat(sc, 2, "[" + in[1].getString(sc) + "§r] ", in));
|
|
|
});
|
|
|
sm.registerConsumer("player.setcompass", (sc, in) -> {
|
|
|
- ((ServerPlayerEntity) in[0].get(sc)).connection.sendPacket(new SWorldSpawnChangedPacket(
|
|
|
- ((Location) in[1].get(sc)).getBlockPos(), in.length > 2 ? in[2].getFloat(sc) : 0.0f));
|
|
|
+ ((ServerPlayerEntity) in[0].get(sc)).connection.sendPacket(
|
|
|
+ new SWorldSpawnChangedPacket(((Location) in[1].get(sc)).getBlockPos(),
|
|
|
+ in.length > 2 ? in[2].getFloat(sc) : 0.0f));
|
|
|
});
|
|
|
- sm.registerFunction("player.gethunger", (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).getFoodStats().getFoodLevel());
|
|
|
+ sm.registerFunction("player.gethunger",
|
|
|
+ (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).getFoodStats().getFoodLevel());
|
|
|
sm.registerConsumer("player.sethunger", (sc, in) -> {
|
|
|
((PlayerEntity) in[0].get(sc)).getFoodStats().setFoodLevel(in[1].getInt(sc));
|
|
|
});
|
|
|
- sm.registerFunction("player.getsaturation", (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).getFoodStats().getSaturationLevel());
|
|
|
+ sm.registerFunction("player.getsaturation", (sc,
|
|
|
+ in) -> (double) ((PlayerEntity) in[0].get(sc)).getFoodStats().getSaturationLevel());
|
|
|
sm.registerConsumer("player.setsaturation", (sc, in) -> {
|
|
|
- ReflectionUtils.setSaturation(((PlayerEntity) in[0].get(sc)).getFoodStats(), in[1].getFloat(sc));
|
|
|
+ ReflectionUtils.setSaturation(((PlayerEntity) in[0].get(sc)).getFoodStats(),
|
|
|
+ in[1].getFloat(sc));
|
|
|
});
|
|
|
sm.registerFunction("player.getname", (sc, in) -> {
|
|
|
Object o = in[0].get(sc);
|
|
@@ -114,17 +127,25 @@ public class PlayerCommands {
|
|
|
return playerBank.getUUID(o.toString());
|
|
|
});
|
|
|
sm.registerFunction("player.getid", (sc, in) -> (double) getId(playerBank, in[0].get(sc)));
|
|
|
- sm.registerFunction("player.get", (sc, in) -> server.getPlayerList().getPlayerByUUID(getUUID(in[0].get(sc))));
|
|
|
- sm.registerFunction("player.getuuidfromid", (sc, in) -> playerBank.getUUIDfromID(in[0].getInt(sc)));
|
|
|
- sm.registerFunction("player.getnamefromid", (sc, in) -> playerBank.getNamefromID(in[0].getInt(sc)));
|
|
|
- sm.registerFunction("player.getip", (sc, in) -> ((ServerPlayerEntity) in[0].get(sc)).connection.netManager.getRemoteAddress().toString());
|
|
|
- sm.registerFunction("player.iscreative", (sc, in) -> ((PlayerEntity) in[0].get(sc)).isCreative());
|
|
|
- sm.registerFunction("player.isspectator", (sc, in) -> ((PlayerEntity) in[0].get(sc)).isSpectator());
|
|
|
+ sm.registerFunction("player.get",
|
|
|
+ (sc, in) -> server.getPlayerList().getPlayerByUUID(getUUID(in[0].get(sc))));
|
|
|
+ sm.registerFunction("player.getuuidfromid",
|
|
|
+ (sc, in) -> playerBank.getUUIDfromID(in[0].getInt(sc)));
|
|
|
+ sm.registerFunction("player.getnamefromid",
|
|
|
+ (sc, in) -> playerBank.getNamefromID(in[0].getInt(sc)));
|
|
|
+ sm.registerFunction("player.getip",
|
|
|
+ (sc, in) -> ((ServerPlayerEntity) in[0].get(sc)).connection.netManager
|
|
|
+ .getRemoteAddress().toString());
|
|
|
+ sm.registerFunction("player.iscreative",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).isCreative());
|
|
|
+ sm.registerFunction("player.isspectator",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).isSpectator());
|
|
|
sm.registerFunction("player.issurvival", (sc, in) -> {
|
|
|
PlayerEntity p = (PlayerEntity) in[0].get(sc);
|
|
|
return !p.isCreative() && !p.isSpectator();
|
|
|
});
|
|
|
- sm.registerFunction("player.isadventure", (sc, in) -> !((PlayerEntity) in[0].get(sc)).abilities.allowEdit);
|
|
|
+ sm.registerFunction("player.isadventure",
|
|
|
+ (sc, in) -> !((PlayerEntity) in[0].get(sc)).abilities.allowEdit);
|
|
|
sm.registerConsumer("player.setfly", (sc, in) -> {
|
|
|
PlayerEntity p = ((PlayerEntity) in[0].get(sc));
|
|
|
boolean b = in[1].getBoolean(sc);
|
|
@@ -132,11 +153,13 @@ public class PlayerCommands {
|
|
|
p.abilities.isFlying = b;
|
|
|
p.sendPlayerAbilities();
|
|
|
});
|
|
|
- sm.registerFunction("player.hasfly", (sc, in) -> ((PlayerEntity) in[0].get(sc)).abilities.allowFlying);
|
|
|
- sm.registerFunction("player.isflying", (sc, in) -> ((PlayerEntity) in[0].get(sc)).abilities.isFlying);
|
|
|
+ sm.registerFunction("player.hasfly",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).abilities.allowFlying);
|
|
|
+ sm.registerFunction("player.isflying",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).abilities.isFlying);
|
|
|
sm.registerConsumer("player.setgamemode", (sc, in) -> {
|
|
|
PlayerEntity p = (PlayerEntity) in[0].get(sc);
|
|
|
- switch(in[1].get(sc).toString()) {
|
|
|
+ switch (in[1].get(sc).toString()) {
|
|
|
case "survival":
|
|
|
case "s":
|
|
|
case "0":
|
|
@@ -191,7 +214,8 @@ public class PlayerCommands {
|
|
|
Vector3d unit = p.getLook(0.0f);
|
|
|
Vector3d end = start.add(unit.x * radius, unit.y * radius, unit.z * radius);
|
|
|
|
|
|
- BlockRayTraceResult result = p.world.rayTraceBlocks(new RayTraceContext(start, end, bm, fm, p));
|
|
|
+ BlockRayTraceResult result =
|
|
|
+ p.world.rayTraceBlocks(new RayTraceContext(start, end, bm, fm, p));
|
|
|
|
|
|
if(result.getType() == RayTraceResult.Type.BLOCK) {
|
|
|
return new Location(p.world, result.getPos());
|
|
@@ -199,17 +223,19 @@ public class PlayerCommands {
|
|
|
|
|
|
return new Location(p.world, end);
|
|
|
});
|
|
|
-
|
|
|
sm.registerFunction("player.gettargetentity", (sc, in) -> {
|
|
|
- return Utils.getTargetedEntity((PlayerEntity) in[0].get(sc), in[1].getDouble(sc), getNamedClass(in[2].getString(sc)));
|
|
|
+ return Utils.getTargetedEntity((PlayerEntity) in[0].get(sc), in[1].getDouble(sc),
|
|
|
+ (Class<? extends Entity>) getNamedClass(in[2].getString(sc)));
|
|
|
});
|
|
|
sm.registerAlias("player.hasscript", "player.hasquest");
|
|
|
sm.registerConsumer("player.action", (sc, in) -> {
|
|
|
StringTextComponent text = new StringTextComponent(SnuviUtils.connect(sc, in, 1));
|
|
|
- doForGroup(server, scripts, perms, in[0].get(sc), sc, p -> ((ServerPlayerEntity) p).sendStatusMessage(text, true));
|
|
|
+ doForGroup(server, scripts, perms, in[0].get(sc), sc,
|
|
|
+ p -> ((ServerPlayerEntity) p).sendStatusMessage(text, true));
|
|
|
});
|
|
|
sm.registerConsumer("player.disconnect", (sc, in) -> {
|
|
|
- ((ServerPlayerEntity) in[0].get(sc)).connection.disconnect(new StringTextComponent(in[1].getString(sc)));
|
|
|
+ ((ServerPlayerEntity) in[0].get(sc)).connection
|
|
|
+ .disconnect(new StringTextComponent(in[1].getString(sc)));
|
|
|
});
|
|
|
sm.registerFunction("player.getspawn", (sc, in) -> {
|
|
|
ServerPlayerEntity p = (ServerPlayerEntity) in[0].get(sc);
|
|
@@ -218,8 +244,9 @@ public class PlayerCommands {
|
|
|
sm.registerAlias("player.getspawn", "player.getbedspawn");
|
|
|
sm.registerConsumer("player.setspawn", (sc, in) -> {
|
|
|
Location l = (Location) in[1].get(sc);
|
|
|
- ((ServerPlayerEntity) in[0].get(sc)).func_242111_a(((ServerWorld) l.getWorld()).getDimensionKey(),
|
|
|
- l.getBlockPos(), in.length > 2 ? in[2].getFloat(sc) : 0.0f, true, false);
|
|
|
+ ((ServerPlayerEntity) in[0].get(sc)).func_242111_a(
|
|
|
+ ((ServerWorld) l.getWorld()).getDimensionKey(), l.getBlockPos(),
|
|
|
+ in.length > 2 ? in[2].getFloat(sc) : 0.0f, true, false);
|
|
|
});
|
|
|
sm.registerAlias("player.setspawn", "player.setbedspawn");
|
|
|
sm.registerConsumer("player.damageitem", (sc, in) -> {
|
|
@@ -228,7 +255,8 @@ public class PlayerCommands {
|
|
|
});
|
|
|
});
|
|
|
sm.registerConsumer("player.damagearmor", (sc, in) -> {
|
|
|
- ((PlayerEntity) in[0].get(sc)).inventory.func_234563_a_((DamageSource) in[2].get(sc), in[1].getFloat(sc));
|
|
|
+ ((PlayerEntity) in[0].get(sc)).inventory.func_234563_a_((DamageSource) in[2].get(sc),
|
|
|
+ in[1].getFloat(sc));
|
|
|
});
|
|
|
sm.registerConsumer("player.openenderchest", (sc, in) -> {
|
|
|
PlayerEntity p1 = (PlayerEntity) in[0].get(sc);
|
|
@@ -241,11 +269,13 @@ public class PlayerCommands {
|
|
|
sm.registerConsumer("player.addtotalexp", (sc, in) -> {
|
|
|
((ServerPlayerEntity) in[0].get(sc)).giveExperiencePoints(in[1].getInt(sc));
|
|
|
});
|
|
|
- sm.registerFunction("player.getlevel", (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).experienceLevel);
|
|
|
+ sm.registerFunction("player.getlevel",
|
|
|
+ (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).experienceLevel);
|
|
|
sm.registerConsumer("player.setlevel", (sc, in) -> {
|
|
|
((ServerPlayerEntity) in[0].get(sc)).setExperienceLevel(in[1].getInt(sc));
|
|
|
});
|
|
|
- sm.registerFunction("player.getexp", (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).experience);
|
|
|
+ sm.registerFunction("player.getexp",
|
|
|
+ (sc, in) -> (double) ((PlayerEntity) in[0].get(sc)).experience);
|
|
|
sm.registerConsumer("player.setexp", (sc, in) -> {
|
|
|
ServerPlayerEntity p = (ServerPlayerEntity) in[0].get(sc);
|
|
|
p.func_195394_a((int) (in[1].getDouble(sc) * p.xpBarCap()));
|
|
@@ -258,25 +288,34 @@ public class PlayerCommands {
|
|
|
com.put("SkullOwner", NBTUtil.writeGameProfile(new CompoundNBT(), gp));
|
|
|
return stack;
|
|
|
});
|
|
|
- sm.registerFunction("player.near", (sc, in) -> Utils.getPlayers((Entity) in[0].get(sc), in[1].getDouble(sc)));
|
|
|
+ sm.registerFunction("player.near",
|
|
|
+ (sc, in) -> Utils.getPlayers((Entity) in[0].get(sc), in[1].getDouble(sc)));
|
|
|
sm.registerFunction("player.getinv", (sc, in) -> ((PlayerEntity) in[0].get(sc)).inventory);
|
|
|
- sm.registerFunction("player.getinvslot", (sc, in) -> ((PlayerEntity) in[0].get(sc)).inventory.mainInventory.get(in[1].getInt(sc)));
|
|
|
+ sm.registerFunction("player.getinvslot",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).inventory.mainInventory
|
|
|
+ .get(in[1].getInt(sc)));
|
|
|
sm.registerConsumer("player.setinvslot", (sc, in) -> {
|
|
|
- ((PlayerEntity) in[0].get(sc)).inventory.mainInventory.set(in[1].getInt(sc), ((ItemStack) in[2].get(sc)).copy());
|
|
|
+ ((PlayerEntity) in[0].get(sc)).inventory.mainInventory.set(in[1].getInt(sc),
|
|
|
+ ((ItemStack) in[2].get(sc)).copy());
|
|
|
});
|
|
|
- sm.registerFunction("player.getenderinv", (sc, in) -> ((PlayerEntity) in[0].get(sc)).getInventoryEnderChest());
|
|
|
- sm.registerFunction("player.getenderslot", (sc, in) -> ((PlayerEntity) in[0].get(sc)).getInventoryEnderChest().getStackInSlot(in[1].getInt(sc)));
|
|
|
+ sm.registerFunction("player.getenderinv",
|
|
|
+ (sc, in) -> ((PlayerEntity) in[0].get(sc)).getInventoryEnderChest());
|
|
|
+ sm.registerFunction("player.getenderslot", (sc, in) -> ((PlayerEntity) in[0].get(sc))
|
|
|
+ .getInventoryEnderChest().getStackInSlot(in[1].getInt(sc)));
|
|
|
sm.registerConsumer("player.setenderslot", (sc, in) -> {
|
|
|
- ((PlayerEntity) in[0].get(sc)).getInventoryEnderChest().setInventorySlotContents(in[1].getInt(sc), ((ItemStack) in[2].get(sc)).copy());
|
|
|
+ ((PlayerEntity) in[0].get(sc)).getInventoryEnderChest()
|
|
|
+ .setInventorySlotContents(in[1].getInt(sc), ((ItemStack) in[2].get(sc)).copy());
|
|
|
});
|
|
|
sm.registerConsumer("player.setdisplayname", (sc, in) -> {
|
|
|
- ((ModEntityPlayerMP) in[0].get(sc)).setTabListDisplayName(in[1].getString(sc), scheduler);
|
|
|
+ ((ModEntityPlayerMP) in[0].get(sc)).setTabListDisplayName(in[1].getString(sc),
|
|
|
+ scheduler);
|
|
|
});
|
|
|
sm.registerConsumer("player.hide", (sc, in) -> {
|
|
|
ServerPlayerEntity p = (ServerPlayerEntity) in[0].get(sc);
|
|
|
GameType type = p.interactionManager.getGameType();
|
|
|
ReflectionUtils.setGameType(p.interactionManager, GameType.SPECTATOR);
|
|
|
- SPlayerListItemPacket packet = new SPlayerListItemPacket(SPlayerListItemPacket.Action.UPDATE_GAME_MODE, p);
|
|
|
+ SPlayerListItemPacket packet =
|
|
|
+ new SPlayerListItemPacket(SPlayerListItemPacket.Action.UPDATE_GAME_MODE, p);
|
|
|
ReflectionUtils.setGameType(p.interactionManager, type);
|
|
|
for(ServerPlayerEntity other : server.getPlayerList().getPlayers()) {
|
|
|
if(other == p) {
|
|
@@ -289,7 +328,8 @@ public class PlayerCommands {
|
|
|
sm.registerConsumer("player.show", (sc, in) -> {
|
|
|
ServerPlayerEntity p = (ServerPlayerEntity) in[0].get(sc);
|
|
|
p.setInvisible(false);
|
|
|
- SPlayerListItemPacket packet = new SPlayerListItemPacket(SPlayerListItemPacket.Action.UPDATE_GAME_MODE, p);
|
|
|
+ SPlayerListItemPacket packet =
|
|
|
+ new SPlayerListItemPacket(SPlayerListItemPacket.Action.UPDATE_GAME_MODE, p);
|
|
|
for(ServerPlayerEntity other : server.getPlayerList().getPlayers()) {
|
|
|
if(other == p) {
|
|
|
continue;
|
|
@@ -297,12 +337,16 @@ public class PlayerCommands {
|
|
|
other.connection.sendPacket(packet);
|
|
|
}
|
|
|
});
|
|
|
- sm.registerFunction("players.getamount", (sc, in) -> (double) server.getCurrentPlayerCount());
|
|
|
- sm.registerFunction("players.tolist", (sc, in) -> new ArrayList(server.getPlayerList().getPlayers()));
|
|
|
- sm.registerFunction("players.toworldlist", (sc, in) -> new ArrayList(((World) in[0].get(sc)).getPlayers()));
|
|
|
+ sm.registerFunction("players.getamount",
|
|
|
+ (sc, in) -> (double) server.getCurrentPlayerCount());
|
|
|
+ sm.registerFunction("players.tolist",
|
|
|
+ (sc, in) -> new ArrayList<>(server.getPlayerList().getPlayers()));
|
|
|
+ sm.registerFunction("players.toworldlist",
|
|
|
+ (sc, in) -> new ArrayList<>(((World) in[0].get(sc)).getPlayers()));
|
|
|
sm.registerFunction("players.near", (sc, in) -> {
|
|
|
Location l = (Location) in[0].get(sc);
|
|
|
- return Utils.getPlayers(l.getWorld(), l.getX(), l.getY(), l.getZ(), in[1].getDouble(sc));
|
|
|
+ return Utils.getPlayers(l.getWorld(), l.getX(), l.getY(), l.getZ(),
|
|
|
+ in[1].getDouble(sc));
|
|
|
});
|
|
|
}
|
|
|
}
|