diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2020-04-13 19:16:10 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2020-04-13 19:16:10 +0200 |
commit | c532050d4d29cc55559fadd591f3ffad47246572 (patch) | |
tree | a1d29829949456485a46aefca452fff59646a5bd /src/main/java/re/jag/parquet/commands/CameraMode.java | |
parent | 792549e981f5370f07502cab8ca4063e3c76feb9 (diff) | |
download | parquet-c532050d4d29cc55559fadd591f3ffad47246572.tar.gz |
added camermode command with location reset
Diffstat (limited to 'src/main/java/re/jag/parquet/commands/CameraMode.java')
-rw-r--r-- | src/main/java/re/jag/parquet/commands/CameraMode.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/re/jag/parquet/commands/CameraMode.java b/src/main/java/re/jag/parquet/commands/CameraMode.java new file mode 100644 index 0000000..f65e1e7 --- /dev/null +++ b/src/main/java/re/jag/parquet/commands/CameraMode.java @@ -0,0 +1,61 @@ +package re.jag.parquet.commands; + +import static net.minecraft.server.command.CommandManager.argument; +import static net.minecraft.server.command.CommandManager.literal; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; + +import net.minecraft.command.arguments.EntityArgumentType; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; +import net.minecraft.network.packet.s2c.play.RemoveEntityStatusEffectS2CPacket; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.LiteralText; +import net.minecraft.world.GameMode; + +public class CameraMode { + public static void register(CommandDispatcher<ServerCommandSource> dispatcher) { + LiteralArgumentBuilder<ServerCommandSource> camermode = literal("c"). + executes((c) -> camera( c.getSource(), c.getSource().getPlayer())). + then(argument("player", EntityArgumentType.player()). + executes( (c) -> camera(c.getSource(), EntityArgumentType.getPlayer(c, "player")))); + LiteralArgumentBuilder<ServerCommandSource> survivalmode = literal("s"). + executes((c) -> survival( c.getSource(), c.getSource().getPlayer())). + then(argument("player", EntityArgumentType.player()). + executes( (c) -> survival(c.getSource(), EntityArgumentType.getPlayer(c, "player")))); + + dispatcher.register(camermode); + dispatcher.register(survivalmode); + } + + private static int camera(ServerCommandSource source, ServerPlayerEntity player) { + if (! ((CameraModeData)player).saveCameraPosition() ) { + source.sendFeedback(new LiteralText("Gamemode is already camera"), false); + return 0; + } + + player.setGameMode(GameMode.SPECTATOR); + player.addVelocity(0,0.1,0); + player.networkHandler.sendPacket(new EntityVelocityUpdateS2CPacket(player)); + player.addStatusEffect(new StatusEffectInstance(StatusEffects.NIGHT_VISION, 999999, 0, false, false)); + player.addStatusEffect(new StatusEffectInstance(StatusEffects.CONDUIT_POWER, 999999, 0, false, false)); + return 1; + } + + private static int survival(ServerCommandSource source, ServerPlayerEntity player) { + if (! ((CameraModeData)player).restoreCameraPosition() ) { + source.sendFeedback(new LiteralText("Gamemode is already survival"), false); + return 0; + } + + player.setGameMode(GameMode.SURVIVAL); + player.networkHandler.sendPacket(new RemoveEntityStatusEffectS2CPacket(player.getEntityId(), StatusEffects.NIGHT_VISION)); + player.removeStatusEffect(StatusEffects.NIGHT_VISION); + player.networkHandler.sendPacket(new RemoveEntityStatusEffectS2CPacket(player.getEntityId(), StatusEffects.CONDUIT_POWER)); + player.removeStatusEffect(StatusEffects.CONDUIT_POWER); + return 1; + } +} |