diff --git a/src/main/java/net/mcreator/target/TargetMod.java b/src/main/java/net/mcreator/target/TargetMod.java index b99081552..9068c1eea 100644 --- a/src/main/java/net/mcreator/target/TargetMod.java +++ b/src/main/java/net/mcreator/target/TargetMod.java @@ -1,6 +1,8 @@ package net.mcreator.target; import net.mcreator.target.init.*; +import net.mcreator.target.network.DoubleJumpMessage; +import net.mcreator.target.network.ZoomMessage; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.MinecraftForge; @@ -8,6 +10,7 @@ import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkRegistry; @@ -28,23 +31,21 @@ public class TargetMod { public static final String ATTRIBUTE_MODIFIER = "target_attribute_modifier"; public TargetMod() { - MinecraftForge.EVENT_BUS.register(this); IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + TargetModSounds.REGISTRY.register(bus); TargetModBlocks.REGISTRY.register(bus); - TargetModItems.register(bus); - TargetModEntities.REGISTRY.register(bus); TargetCustomModEntities.ENTITY_TYPES.register(bus); - TargetModTabs.TABS.register(bus); - TargetModMobEffects.REGISTRY.register(bus); - TargetModParticleTypes.REGISTRY.register(bus); - TargetModMenus.REGISTRY.register(bus); + + bus.addListener(this::onCommonSetup); + + MinecraftForge.EVENT_BUS.register(this); } private static final String PROTOCOL_VERSION = "1"; @@ -75,4 +76,10 @@ public class TargetMod { workQueue.removeAll(actions); } } + + public void onCommonSetup(final FMLCommonSetupEvent event) { + addNetworkMessage(ZoomMessage.class, ZoomMessage::buffer, ZoomMessage::new, ZoomMessage::handler); + addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::buffer, DoubleJumpMessage::new, DoubleJumpMessage::handler); + + } } diff --git a/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java b/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java index b735eb303..f4bc885c1 100644 --- a/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java +++ b/src/main/java/net/mcreator/target/init/TargetModKeyMappings.java @@ -41,8 +41,10 @@ public class TargetModKeyMappings { public void setDown(boolean isDown) { super.setDown(isDown); if (isDownOld != isDown && isDown) { - TargetMod.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(0, 0)); - DoubleJumpMessage.pressAction(Minecraft.getInstance().player, 0, 0); + TargetMod.PACKET_HANDLER.sendToServer(new DoubleJumpMessage(0)); + if (Minecraft.getInstance().player != null) { + DoubleJumpMessage.pressAction(Minecraft.getInstance().player, 0); + } } isDownOld = isDown; } @@ -68,12 +70,12 @@ public class TargetModKeyMappings { super.setDown(isDown); if (isDownOld != isDown && isDown) { TargetMod.PACKET_HANDLER.sendToServer(new ZoomMessage(0, 0)); - ZoomMessage.pressAction(Minecraft.getInstance().player, 0, 0); + ZoomMessage.pressAction(Minecraft.getInstance().player, 0); ZOOM_LASTPRESS = System.currentTimeMillis(); } else if (isDownOld != isDown) { int dt = (int) (System.currentTimeMillis() - ZOOM_LASTPRESS); TargetMod.PACKET_HANDLER.sendToServer(new ZoomMessage(1, dt)); - ZoomMessage.pressAction(Minecraft.getInstance().player, 1, dt); + ZoomMessage.pressAction(Minecraft.getInstance().player, 1); } isDownOld = isDown; } diff --git a/src/main/java/net/mcreator/target/network/DoubleJumpMessage.java b/src/main/java/net/mcreator/target/network/DoubleJumpMessage.java index 9415dc7ed..16756d93b 100644 --- a/src/main/java/net/mcreator/target/network/DoubleJumpMessage.java +++ b/src/main/java/net/mcreator/target/network/DoubleJumpMessage.java @@ -1,58 +1,65 @@ package net.mcreator.target.network; -import net.mcreator.target.TargetMod; -import net.mcreator.target.procedures.DoublejumpProcedure; +import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent; +import net.minecraftforge.registries.ForgeRegistries; import java.util.function.Supplier; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class DoubleJumpMessage { - int type, pressedms; + private final int type; - public DoubleJumpMessage(int type, int pressedms) { + public DoubleJumpMessage(int type) { this.type = type; - this.pressedms = pressedms; } public DoubleJumpMessage(FriendlyByteBuf buffer) { this.type = buffer.readInt(); - this.pressedms = buffer.readInt(); } public static void buffer(DoubleJumpMessage message, FriendlyByteBuf buffer) { buffer.writeInt(message.type); - buffer.writeInt(message.pressedms); } public static void handler(DoubleJumpMessage message, Supplier contextSupplier) { NetworkEvent.Context context = contextSupplier.get(); - context.enqueueWork(() -> pressAction(context.getSender(), message.type, message.pressedms)); + context.enqueueWork(() -> { + if (context.getSender() != null) { + pressAction(context.getSender(), message.type); + } + }); context.setPacketHandled(true); } - public static void pressAction(Player entity, int type, int pressedms) { - Level world = entity.level(); + public static void pressAction(Player entity, int type) { + Level level = entity.level(); double x = entity.getX(); double y = entity.getY(); double z = entity.getZ(); - // security measure to prevent arbitrary chunk generation - if (!world.hasChunkAt(entity.blockPosition())) - return; - if (type == 0) { - DoublejumpProcedure.execute(world, x, y, z, entity); + if (!level.hasChunkAt(entity.blockPosition())) { + return; + } + + if (type == 0) { + if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).playerdoublejump) { + entity.setDeltaMovement(new Vec3((1 * entity.getLookAngle().x), 0.8, (1 * entity.getLookAngle().z))); + if (!level.isClientSide()) { + level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:doublejump")), SoundSource.BLOCKS, 1, 1); + } else { + level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:doublejump")), SoundSource.BLOCKS, 1, 1, false); + } + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.playerdoublejump = false; + capability.syncPlayerVariables(entity); + }); + } } } - - @SubscribeEvent - public static void registerMessage(FMLCommonSetupEvent event) { - TargetMod.addNetworkMessage(DoubleJumpMessage.class, DoubleJumpMessage::buffer, DoubleJumpMessage::new, DoubleJumpMessage::handler); - } } diff --git a/src/main/java/net/mcreator/target/network/ZoomMessage.java b/src/main/java/net/mcreator/target/network/ZoomMessage.java index 5273304fd..f3c233527 100644 --- a/src/main/java/net/mcreator/target/network/ZoomMessage.java +++ b/src/main/java/net/mcreator/target/network/ZoomMessage.java @@ -1,63 +1,65 @@ package net.mcreator.target.network; -import net.mcreator.target.TargetMod; -import net.mcreator.target.procedures.OutZoomProcedure; -import net.mcreator.target.procedures.ToZoomProcedure; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class ZoomMessage { - int type, pressedms; + private final int type; + private final int pressedMs; - public ZoomMessage(int type, int pressedms) { + public ZoomMessage(int type, int pressedMs) { this.type = type; - this.pressedms = pressedms; + this.pressedMs = pressedMs; } public ZoomMessage(FriendlyByteBuf buffer) { this.type = buffer.readInt(); - this.pressedms = buffer.readInt(); + this.pressedMs = buffer.readInt(); } public static void buffer(ZoomMessage message, FriendlyByteBuf buffer) { buffer.writeInt(message.type); - buffer.writeInt(message.pressedms); + buffer.writeInt(message.pressedMs); } public static void handler(ZoomMessage message, Supplier contextSupplier) { NetworkEvent.Context context = contextSupplier.get(); - context.enqueueWork(() -> pressAction(context.getSender(), message.type, message.pressedms)); + context.enqueueWork(() -> { + if (context.getSender() != null) { + pressAction(context.getSender(), message.type); + } + }); context.setPacketHandled(true); } - public static void pressAction(Player entity, int type, int pressedms) { + public static void pressAction(Player entity, int type) { Level world = entity.level(); - double x = entity.getX(); - double y = entity.getY(); - double z = entity.getZ(); - // security measure to prevent arbitrary chunk generation - if (!world.hasChunkAt(entity.blockPosition())) - return; - if (type == 0) { - ToZoomProcedure.execute(entity); + if (!world.hasChunkAt(entity.blockPosition())) { + return; + } + + if (type == 0) { + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.zoom = true; + capability.syncPlayerVariables(entity); + }); } if (type == 1) { + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.zoom = false; + capability.syncPlayerVariables(entity); + }); + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.zooming = false; + capability.syncPlayerVariables(entity); + }); + entity.getPersistentData().putDouble("miaozhunshijian", 0); - OutZoomProcedure.execute(entity); } } - - @SubscribeEvent - public static void registerMessage(FMLCommonSetupEvent event) { - TargetMod.addNetworkMessage(ZoomMessage.class, ZoomMessage::buffer, ZoomMessage::new, ZoomMessage::handler); - } } diff --git a/src/main/java/net/mcreator/target/procedures/DoublejumpProcedure.java b/src/main/java/net/mcreator/target/procedures/DoublejumpProcedure.java deleted file mode 100644 index 319bd6bc9..000000000 --- a/src/main/java/net/mcreator/target/procedures/DoublejumpProcedure.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.network.TargetModVariables; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.registries.ForgeRegistries; - -public class DoublejumpProcedure { - public static void execute(LevelAccessor world, double x, double y, double z, Entity entity) { - if (entity == null) - return; - if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).playerdoublejump) { - entity.setDeltaMovement(new Vec3((1 * entity.getLookAngle().x), 0.8, (1 * entity.getLookAngle().z))); - if (world instanceof Level _level) { - if (!_level.isClientSide()) { - _level.playSound(null, BlockPos.containing(x, y, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:doublejump")), SoundSource.BLOCKS, 1, 1); - } else { - _level.playLocalSound(x, y, z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:doublejump")), SoundSource.BLOCKS, 1, 1, false); - } - } - { - boolean _setval = false; - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.playerdoublejump = _setval; - capability.syncPlayerVariables(entity); - }); - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/OutZoomProcedure.java b/src/main/java/net/mcreator/target/procedures/OutZoomProcedure.java deleted file mode 100644 index 9867a3531..000000000 --- a/src/main/java/net/mcreator/target/procedures/OutZoomProcedure.java +++ /dev/null @@ -1,27 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.world.entity.Entity; - -import net.mcreator.target.network.TargetModVariables; - -public class OutZoomProcedure { - public static void execute(Entity entity) { - if (entity == null) - return; - { - boolean _setval = false; - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.zoom = _setval; - capability.syncPlayerVariables(entity); - }); - } - { - boolean _setval = false; - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.zooming = _setval; - capability.syncPlayerVariables(entity); - }); - } - entity.getPersistentData().putDouble("miaozhunshijian", 0); - } -} diff --git a/src/main/java/net/mcreator/target/procedures/ToZoomProcedure.java b/src/main/java/net/mcreator/target/procedures/ToZoomProcedure.java deleted file mode 100644 index e17b610ae..000000000 --- a/src/main/java/net/mcreator/target/procedures/ToZoomProcedure.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.network.TargetModVariables; -import net.minecraft.world.entity.Entity; - -public class ToZoomProcedure { - public static void execute(Entity entity) { - if (entity == null) - return; - { - boolean _setval = true; - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.zoom = _setval; - capability.syncPlayerVariables(entity); - }); - } - } -}