MrScautHD

Untitled

Nov 19th, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. import net.minecraftforge.fml.network.simple.SimpleChannel;
  2. import net.minecraftforge.fml.network.PacketDistributor;
  3. import net.minecraftforge.fml.network.NetworkRegistry;
  4. import net.minecraftforge.fml.network.NetworkEvent;
  5. import net.minecraftforge.eventbus.api.SubscribeEvent;
  6. import net.minecraftforge.event.entity.player.PlayerInteractEvent;
  7. import net.minecraftforge.event.TickEvent;
  8. import net.minecraftforge.common.MinecraftForge;
  9.  
  10. import net.minecraft.util.ResourceLocation;
  11. import net.minecraft.network.PacketBuffer;
  12. import net.minecraft.entity.player.ServerPlayerEntity;
  13. import net.minecraft.entity.player.PlayerEntity;
  14. import net.minecraft.entity.Entity;
  15. import net.minecraft.client.Minecraft;
  16.  
  17. import net.mcreator.boss_tools.BossToolsModElements;
  18.  
  19. import java.util.function.Supplier;
  20. import java.util.Map;
  21.  
  22. @BossToolsModElements.ModElement.Tag
  23. public class FuelSyncEventProcedure extends BossToolsModElements.ModElement {
  24. public static SimpleChannel INSTANCE;
  25. private static int id = 1;
  26. public static int nextID() {
  27. return id++;
  28. }
  29.  
  30. public static void registerMessages() {
  31. INSTANCE = NetworkRegistry.newSimpleChannel(new ResourceLocation("space", "channel"), () -> "1.0", s -> true, s -> true);
  32. INSTANCE.registerMessage(nextID(), PacketFuelSync.class, PacketFuelSync::encode, PacketFuelSync::decode, PacketFuelSync::handle);
  33. }
  34.  
  35. public FuelSyncEventProcedure(BossToolsModElements instance) {
  36. super(instance, 217);
  37. registerMessages();
  38. MinecraftForge.EVENT_BUS.register(this);
  39. }
  40.  
  41. public static void executeProcedure(Map<String, Object> dependencies) {
  42. }
  43.  
  44. @SubscribeEvent
  45. public void clickSync(PlayerInteractEvent.EntityInteract event) {
  46. event.getPlayer().getPersistentData().putDouble("fuel", event.getTarget().getPersistentData().getDouble("fuel"));
  47. event.getPlayer().getPersistentData().putInt("connectedfueledentityid", event.getTarget().getEntityId());
  48. }
  49.  
  50. @SubscribeEvent
  51. public void playerTraceCheckSync(TickEvent.PlayerTickEvent event) {
  52. PlayerEntity playerEntity = event.player;
  53. Entity entity = playerEntity.world.getEntityByID(playerEntity.getPersistentData().getInt("connectedfueledentityid"));
  54. if (!playerEntity.world.isRemote) {
  55. if (entity != null) {
  56. playerEntity.getPersistentData().putDouble("fuel", entity.getPersistentData().getDouble("fuel"));
  57. }
  58. INSTANCE.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) playerEntity),
  59. new PacketFuelSync(playerEntity.getEntityId(), playerEntity.getPersistentData().getDouble("fuel")));
  60. }
  61. }
  62. private static class PacketFuelSync {
  63. private int entityId;
  64. private double fuel;
  65. public PacketFuelSync(int entityId, double fuel) {
  66. this.entityId = entityId;
  67. this.fuel = fuel;
  68. }
  69.  
  70. public static void encode(PacketFuelSync msg, PacketBuffer buf) {
  71. buf.writeInt(msg.entityId);
  72. buf.writeDouble(msg.fuel);
  73. }
  74.  
  75. public static PacketFuelSync decode(PacketBuffer buf) {
  76. return new PacketFuelSync(buf.readInt(), buf.readDouble());
  77. }
  78.  
  79. public static void handle(PacketFuelSync msg, Supplier<NetworkEvent.Context> ctx) {
  80. ctx.get().enqueueWork(() -> {
  81. Entity entity = Minecraft.getInstance().world.getEntityByID(msg.entityId);
  82. if (entity != null) {
  83. entity.getPersistentData().putDouble("fuel", msg.fuel);
  84. }
  85. });
  86. ctx.get().setPacketHandled(true);
  87. }
  88. }
  89. }
  90.  
Advertisement
Add Comment
Please, Sign In to add comment