|
@@ -27,6 +27,7 @@ import net.minecraft.nbt.NBTUtil;
|
|
|
import net.minecraft.network.ThreadQuickExitException;
|
|
|
import net.minecraft.network.play.client.CChatMessagePacket;
|
|
|
import net.minecraft.network.play.client.CClientStatusPacket;
|
|
|
+import net.minecraft.network.play.server.SPlayerListItemPacket;
|
|
|
import net.minecraft.network.play.server.SSpawnPositionPacket;
|
|
|
import net.minecraft.server.MinecraftServer;
|
|
|
import net.minecraft.tileentity.SkullTileEntity;
|
|
@@ -276,6 +277,31 @@ public class PlayerCommands {
|
|
|
sm.registerConsumer("player.setdisplayname", (sc, in) -> {
|
|
|
((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);
|
|
|
+ ReflectionUtils.setGameType(p.interactionManager, type);
|
|
|
+ for(ServerPlayerEntity other : server.getPlayerList().getPlayers()) {
|
|
|
+ if(other == p) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ other.connection.sendPacket(packet);
|
|
|
+ }
|
|
|
+ p.setInvisible(true);
|
|
|
+ });
|
|
|
+ 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);
|
|
|
+ for(ServerPlayerEntity other : server.getPlayerList().getPlayers()) {
|
|
|
+ if(other == p) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ 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()));
|