From 3cd683d7016ef6a4e5b3411aaef8135b54f62ae7 Mon Sep 17 00:00:00 2001 From: loordgek Date: Fri, 20 Mar 2020 19:28:56 +0100 Subject: [PATCH] working --- .../java/mod/dragonita/fantasymod/Main.java | 7 ++-- .../client/models/ModelUnicorn.java | 3 +- .../customthings/ClientSendFunction.java | 40 ------------------ .../customthings/PacketHandler.java | 15 ------- .../fantasymod/customthings/PanicMessage.java | 41 ------------------- .../fantasymod/entities/UnicornEntity.java | 29 ++++++++----- src/main/java/network/PacketHandler.java | 27 ++++++++++++ 7 files changed, 50 insertions(+), 112 deletions(-) delete mode 100644 src/main/java/mod/dragonita/fantasymod/customthings/ClientSendFunction.java delete mode 100644 src/main/java/mod/dragonita/fantasymod/customthings/PacketHandler.java delete mode 100644 src/main/java/mod/dragonita/fantasymod/customthings/PanicMessage.java create mode 100644 src/main/java/network/PacketHandler.java diff --git a/src/main/java/mod/dragonita/fantasymod/Main.java b/src/main/java/mod/dragonita/fantasymod/Main.java index 041864d..7e5ac5c 100644 --- a/src/main/java/mod/dragonita/fantasymod/Main.java +++ b/src/main/java/mod/dragonita/fantasymod/Main.java @@ -5,8 +5,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import mod.dragonita.fantasymod.customthings.PacketHandler; -import mod.dragonita.fantasymod.customthings.PanicMessage; +import network.PacketHandler; import mod.dragonita.fantasymod.init.ModBlocks; import mod.dragonita.fantasymod.init.ModDimensions; import mod.dragonita.fantasymod.init.ModEntityTypes; @@ -42,7 +41,7 @@ public final class Main public static final String MODID = "fantasymod"; public static final Logger LOGGER = LogManager.getLogger(MODID); public static final ResourceLocation DIMENSION_TYPE = new ResourceLocation(Main.MODID, "rainbow_dimension"); - private static int ID = 505156459; + private static int ID; public Main() { @@ -73,7 +72,7 @@ public Main() public void setup(final FMLCommonSetupEvent event) { - PacketHandler.INSTANCE.registerMessage(ID++, PanicMessage.class, PanicMessage::encode, PanicMessage::new, PanicMessage::handle); + PacketHandler.init(); DeferredWorkQueue.runLater(new Runnable() { @Override public void run() { diff --git a/src/main/java/mod/dragonita/fantasymod/client/models/ModelUnicorn.java b/src/main/java/mod/dragonita/fantasymod/client/models/ModelUnicorn.java index e132998..9ae3834 100644 --- a/src/main/java/mod/dragonita/fantasymod/client/models/ModelUnicorn.java +++ b/src/main/java/mod/dragonita/fantasymod/client/models/ModelUnicorn.java @@ -5,7 +5,6 @@ import mod.dragonita.fantasymod.entities.UnicornEntity; import mod.dragonita.fantasymod.util.PCEntityModel; import mod.dragonita.fantasymod.util.PCRenderModel; -import net.minecraft.entity.ai.goal.PanicGoal; /** * ModelUnicornTabula - DragonITA @@ -305,7 +304,7 @@ public void setRotationAngles(UnicornEntity entity, float limbSwing, float limbS swing(FrontRightLeg2, 0.1F, -0.5F*globalDegree, true, 0.4F, 0.0F, limbSwing, limbSwingAmount); }else */if(entity.prevPosX != entity.getPosX() || entity.prevPosY != entity.getPosY() || entity.prevPosZ != entity.getPosZ()){ - if(entity.CompareGoal(PanicGoal.class)) { + if(entity.getDataManager().get(UnicornEntity.PANIC)) { loadDefaultPose(); //Body diff --git a/src/main/java/mod/dragonita/fantasymod/customthings/ClientSendFunction.java b/src/main/java/mod/dragonita/fantasymod/customthings/ClientSendFunction.java deleted file mode 100644 index ea2e94e..0000000 --- a/src/main/java/mod/dragonita/fantasymod/customthings/ClientSendFunction.java +++ /dev/null @@ -1,40 +0,0 @@ -package mod.dragonita.fantasymod.customthings; - -import org.apache.commons.lang3.tuple.Pair; - -import io.netty.buffer.Unpooled; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkDirection; -import net.minecraftforge.fml.network.NetworkInstance; -import net.minecraftforge.fml.network.PacketDistributor; -import net.minecraftforge.fml.network.simple.IndexedMessageCodec; - -public class ClientSendFunction { - private final NetworkInstance instance; - private final IndexedMessageCodec indexedCodec; - - public ClientSendFunction(NetworkInstance instance) { - this.instance = instance; - this.indexedCodec = new IndexedMessageCodec(instance); - } - - public void send(PacketDistributor.PacketTarget target, MSG message) { - target.send(toVanillaPacket(message, target.getDirection())); - } - - private IPacket toVanillaPacket(MSG message, NetworkDirection direction) { - return direction.buildPacket(toBuffer(message), instance.getChannelName()).getThis(); - } - - private Pair toBuffer(MSG msg) { - final PacketBuffer bufIn = new PacketBuffer(Unpooled.buffer()); - int index = this.encodeMessage(msg ,bufIn); - return Pair.of(bufIn, index); - } - - public int encodeMessage(MSG message, final PacketBuffer target) { - return this.indexedCodec.build(message, target); - } - -} \ No newline at end of file diff --git a/src/main/java/mod/dragonita/fantasymod/customthings/PacketHandler.java b/src/main/java/mod/dragonita/fantasymod/customthings/PacketHandler.java deleted file mode 100644 index c4a5bb6..0000000 --- a/src/main/java/mod/dragonita/fantasymod/customthings/PacketHandler.java +++ /dev/null @@ -1,15 +0,0 @@ -package mod.dragonita.fantasymod.customthings; - -import mod.dragonita.fantasymod.Main; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.network.NetworkRegistry; -import net.minecraftforge.fml.network.simple.SimpleChannel; - -public class PacketHandler { - private static final String PROTOCOL_VERSION = "1"; - public static final SimpleChannel INSTANCE = NetworkRegistry.newSimpleChannel(new ResourceLocation(Main.MODID, "main"), - () -> PROTOCOL_VERSION, - PROTOCOL_VERSION::equals, - PROTOCOL_VERSION::equals - ); -} \ No newline at end of file diff --git a/src/main/java/mod/dragonita/fantasymod/customthings/PanicMessage.java b/src/main/java/mod/dragonita/fantasymod/customthings/PanicMessage.java deleted file mode 100644 index 0948115..0000000 --- a/src/main/java/mod/dragonita/fantasymod/customthings/PanicMessage.java +++ /dev/null @@ -1,41 +0,0 @@ -package mod.dragonita.fantasymod.customthings; - -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; - -import io.netty.buffer.Unpooled; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkDirection; -import net.minecraftforge.fml.network.NetworkEvent; -import net.minecraftforge.fml.network.NetworkInstance; -import net.minecraftforge.fml.network.PacketDistributor; -import net.minecraftforge.fml.network.simple.IndexedMessageCodec; - -public class PanicMessage{ - private static int data; - - public PanicMessage(PacketBuffer buf){ - PanicMessage.data = buf.readInt(); - } - - public PanicMessage(int data) { - PanicMessage.data = data; - } - - public static void handle(MSG msg, Supplier context) { - PanicMessage message; - context.get().enqueueWork(() -> { - @SuppressWarnings("unused") - ServerPlayerEntity sender = context.get().getSender(); - }); - context.get().setPacketHandled(true); - } - - public static void encode(MSG message ,PacketBuffer buf) { - buf.writeInt(data); - } - -} \ No newline at end of file diff --git a/src/main/java/mod/dragonita/fantasymod/entities/UnicornEntity.java b/src/main/java/mod/dragonita/fantasymod/entities/UnicornEntity.java index 4dc7705..89b3913 100644 --- a/src/main/java/mod/dragonita/fantasymod/entities/UnicornEntity.java +++ b/src/main/java/mod/dragonita/fantasymod/entities/UnicornEntity.java @@ -7,16 +7,21 @@ import net.minecraft.entity.passive.horse.AbstractHorseEntity; import net.minecraft.entity.passive.horse.HorseEntity; import net.minecraft.network.IPacket; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.world.World; import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; import net.minecraftforge.fml.network.FMLPlayMessages; import net.minecraftforge.fml.network.NetworkHooks; public class UnicornEntity extends HorseEntity{ + public static DataParameter PANIC = EntityDataManager.createKey(UnicornEntity.class, DataSerializers.BOOLEAN); //private static Logger LOGGER = Main.LOGGER; public UnicornEntity(final EntityType entityType, final World world) { super(entityType, world); + dataManager.register(PANIC, false); } @Override @@ -30,17 +35,21 @@ protected void registerAttributes() { this.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(baseHealth * 1.5D); } - /* - * This Function return true if the running Goal was the same as in the parameters - * - * @param The Class of the Goal we want to compare - * @return true if it was the same, else false - * @see The goals - */ - public boolean CompareGoal(Class TargetGoal) { - return this.goalSelector.getRunningGoals().anyMatch(goal -> goal.getGoal().getClass() == TargetGoal); + + public boolean isPanic() { + return this.goalSelector.getRunningGoals().anyMatch(goal -> goal.getGoal().getClass() == PanicGoal.class); } - + + @Override + public void tick() { + super.tick(); + if (!world.isRemote) { + if (isPanic() && !dataManager.get(PANIC)) { + dataManager.set(PANIC, true); + } else dataManager.set(PANIC, false); + } + } + /** * Creates a child new entity from the parent entity. * Can be used to set additional on the child entity based on the parent. diff --git a/src/main/java/network/PacketHandler.java b/src/main/java/network/PacketHandler.java new file mode 100644 index 0000000..503953d --- /dev/null +++ b/src/main/java/network/PacketHandler.java @@ -0,0 +1,27 @@ +package network; + +import mod.dragonita.fantasymod.Main; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.network.NetworkDirection; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.network.simple.SimpleChannel; + +public class PacketHandler { + private static final String PROTOCOL_VERSION = "1"; + public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(Main.MODID, "main"), + () -> PROTOCOL_VERSION, + PROTOCOL_VERSION::equals, + PROTOCOL_VERSION::equals + ); + private static int ID; + + public static void init(){ + //int ID; you can also use a local var because it gets called only 1 time + //CHANNEL.registerMessage(ID++, PanicMessage.class, PanicMessage::encode, PanicMessage::new, PanicMessageHandler::handle); + } + + public static void sentToClient(MSG msg, ServerPlayerEntity playerEntity){ + CHANNEL.sendTo(msg, playerEntity.connection.netManager, NetworkDirection.PLAY_TO_CLIENT); + } +} \ No newline at end of file