Jump to content

Rhym

Members
  • Posts

    21
  • Joined

  • Last visited

Everything posted by Rhym

  1. Ok I reworked the part that you disliked and finaly removed the class that you so strongly hated x) Is it better now or are there still huge mistakes ? https://github.com/Pierre68/ZApocalypse/tree/master/forge-1.11.2-13.20.0.2228-mdk/src/main/java/fr/exodeus/zombies
  2. Ok I actualy tried it whithout any mod and it is still happening does anyone know if this problem has been reported ?
  3. Hi I've encountered a realy weird bug while using forge-1.11.2-13.20.0.2228 each time I eat or drink something for the second time it eats a third one. and so on from there. and for a potion it no more give me the water bottle item after drinking it I first faught that it was my mod that caused this error but I'm not that sure anymore. Becaus I removed everything from my main class so it loads nothing but the error is still happening. is this a Forge error or have I forgoten something ? here my git (everything should be disabled) https://github.com/Pierre68/ZApocalypse/blob/master/forge-1.11.2-13.20.0.2228-mdk/src/main/java/fr/exodeus/zombies/Core/MainZombies.java
  4. anyway I removed this event. that was old code that I had forgoten it wasn't doing anything
  5. That's the problem I have no idea how to do most of all the things I need and only got it to work by trying random things. My only way of learning so far has been youtube and this Forum. And by the way I'm using the mod for several days now and it never crashed a single time. (not that I think my code is good but at least it does somehow what I want it to do and thats atleast something) I understand that I have many things to change I simply don't know how or if it would be better without an exemple to base my code of.
  6. I know I know and no thanks :P. - I changed the identifier to UUID is it at least better ? x) It doesn't need to be perfect for me and my friends to have fun with it, so I will maybe redo it properly the day I realy need to and know how to do everything (if that happens one day x) )
  7. Ok you asked for it here it is https://github.com/Pierre68/ZApocalypse/tree/master/java/fr/exodeus/zombies I know that it is probably horrible to look at but as said I'm still trying to learn x)
  8. the class ThirstLogic that handles all Thirst related things and exists when a player joins the world. "get......" is the method that takes the information out of the storage. Or is there a way to get the players capability informaions in a better way ? (this part of the code is inspired by the "OverpoweredInventory Mod") https://github.com/LothrazarMinecraftMods/OverpoweredInventory/blob/master/src/main/java/com/lothrazar/powerinventory/inventory/GuiOverpowered.java line 42 for exemple
  9. maybe it isn't the right way to do it but thats how I get et ThirstLevel var from the players capability (serverSide)
  10. Sorry I had a busy week This readData method is in the same class and it gets the vars stored in the capability attached to the player. Why ?
  11. Omg I found it and it was stupid I just autocomplited the wrong var in the readData function x/ well ty for you help I would never have checked that. It seems to work now x)
  12. I check it by displaying it in the logs public void readData() { MainZombies.logString("======= readData Start"); if(!player.hasCapability(MainZombies.CAPABILITY_THIRST, null)) return; IPlayerExtendedProperties prop = Capabilities.getPlayerProperties(player); if (prop != null) { this.thirstSaturation = prop.getThirstLevel(); MainZombies.logString("======= " + prop.getThirstLevel()); } MainZombies.logString("======= readData succes"); } And I think I found the issue public ThirstLogic(EntityPlayer player) { this.thirstLevel = Reference.MAX_THIRST_LEVEL; this.thirstSaturation = Reference.MAX_THIRST_SATURATION; this.player = player; this.thirstSource = new DamageThirst(); readData(); } I don't konw how to fix it tho. The readData function gives the good number now but "thirstLevel" doesn't change it stays at 20 even if the read function wants to set it to an other number
  13. That's the problem each time I get back into my World or Server the value is set back to 20 instead of the value befor I left it and I don't know why.
  14. public class Capabilities { public static void register() { CapabilityManager.INSTANCE.register(IPlayerExtendedProperties.class, new Storage(), InstancePlayerExtendedProperties.class); } public static IPlayerExtendedProperties getPlayerProperties(EntityPlayer player) { if (player == null) { return null; } IPlayerExtendedProperties props = player.getCapability(MainZombies.CAPABILITY_THIRST, null); return props; } public interface IPlayerExtendedProperties { int getThirstLevel(); void setThirstLevel(int value); // --------------- NBTTagCompound getDataAsNBT(); void setDataFromNBT(NBTTagCompound nbt); //summary } public static class InstancePlayerExtendedProperties implements IPlayerExtendedProperties { private int thirstLevel = 20; @Override public NBTTagCompound getDataAsNBT() { NBTTagCompound tags = new NBTTagCompound(); tags.setInteger("getThirstLevel", this.getThirstLevel()); return tags; } @Override public void setDataFromNBT(NBTTagCompound nbt) { NBTTagCompound tags; if (nbt instanceof NBTTagCompound == false) { tags = new NBTTagCompound(); } else { tags = (NBTTagCompound) nbt; } this.setThirstLevel(tags.getInteger("getThirstLevel")); } @Override public int getThirstLevel() { return this.thirstLevel; } @Override public void setThirstLevel(int value) { this.thirstLevel = value; } } public static class Storage implements IStorage<IPlayerExtendedProperties> { @Override public NBTTagCompound writeNBT(Capability<IPlayerExtendedProperties> capability, IPlayerExtendedProperties instance, EnumFacing side) { return instance.getDataAsNBT(); } @Override public void readNBT(Capability<IPlayerExtendedProperties> capability, IPlayerExtendedProperties instance, EnumFacing side, NBTBase nbt) { try { instance.setDataFromNBT((NBTTagCompound) nbt); } catch (Exception e) { //Invalid NBT compound e.printStackTrace(); } } } public static void syncServerDataToClient(EntityPlayerMP p) { MainZombies.logString("Capabilities: sync start"); if (p == null) { return; } IPlayerExtendedProperties props = Capabilities.getPlayerProperties(p); if (props != null) { MainZombies.instance.network.sendTo(new PacketSyncPlayerData(props.getDataAsNBT()), p); MainZombies.logString("Capabilities: sync succes"); } } } public class PacketSyncPlayerData implements IMessage, IMessageHandler<PacketSyncPlayerData, IMessage> { public static final int ID = 50; NBTTagCompound tags = new NBTTagCompound(); public PacketSyncPlayerData() { } public PacketSyncPlayerData(NBTTagCompound ptags) { tags = ptags; } @Override public void fromBytes(ByteBuf buf) { tags = ByteBufUtils.readTag(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeTag(buf, this.tags); } @Override public IMessage onMessage(PacketSyncPlayerData message, MessageContext ctx) { if (ctx.side == Side.CLIENT) { //update it through client proxy PacketSyncPlayerData.checkThreadAndEnqueue(message, ctx); } return null; } private static final void checkThreadAndEnqueue(final PacketSyncPlayerData message, final MessageContext ctx) { IThreadListener thread = MainZombies.proxy.getThreadFromContext(ctx); thread.addScheduledTask(new Runnable() { public void run() { // msg.process(ModMain.proxy.getPlayerEntity(ctx), ctx.side); MainZombies.proxy.setClientPlayerData(ctx, message.tags); } }); } } ok this should be everything As said I'm still a beginner in this and I don't undersand everything yet. And I haven't found much about this on the internet either. I took most of this from this mod https://github.com/LothrazarMinecraftMods/OverpoweredInventory
  15. @SubscribeEvent public void onEntityConstruct(AttachCapabilitiesEvent.Entity evt) { if (evt.getEntity() instanceof EntityPlayer == false) { return;// mod compatibility: IE Tinkers construct } evt.addCapability(new ResourceLocation(Reference.MOD_ID, "zpstats"), new ICapabilitySerializable<NBTTagCompound>() { IPlayerExtendedProperties inst = MainZombies.CAPABILITY_THIRST.getDefaultInstance(); @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { return capability == MainZombies.CAPABILITY_THIRST; } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { return capability == MainZombies.CAPABILITY_THIRST ? MainZombies.CAPABILITY_THIRST.<T>cast(inst) : null; } @Override public NBTTagCompound serializeNBT() { try { return (NBTTagCompound) MainZombies.CAPABILITY_THIRST.getStorage() .writeNBT(MainZombies.CAPABILITY_THIRST, inst, null); } catch (java.lang.ClassCastException e) { return new NBTTagCompound(); } } @Override public void deserializeNBT(NBTTagCompound nbt) { MainZombies.CAPABILITY_THIRST.getStorage().readNBT(MainZombies.CAPABILITY_THIRST, inst, null, nbt); } }); } I have already this in my code is this what you talked about ? (sorry if i'm totaly wrong it's my first mod) If not could you give me an example ? test.java
  16. Hi everyone I created a custom capability for my mod which is attached to the player. I would like to know how to save or recover it's content after the player left the World/Server. (to get it back when he reconnects) It gets lost because the game creates a new entity at the player's loggin and doesn't reuse the old one. (Solo and Multiplayer Server)
  17. ok I remove some of the problems and cleaned it a bit but I dont get how to use capabilities in the right way even by copy pasting a tutorial it didn't work properly =/ ... (and you said that should use the proxy for the events but how does it work in solo player ? becaus it dont load the events from the server side or am I doing it wrong ?) Thank you for the help
  18. Ok thank you for the tips i will try to clean up all this x) And sorry if it's a stupid question but what do you mean by "mapping EntityPlayer objects" ? and how do you think should I do it ?
  19. Ok it took some time but here is it : https://github.com/Pierre68/ZombiesPlus/tree/master/ZombiesPlusGitVersion sorry if my code is horrible to look at but it's the first forge mod I've created the capabilities stuf is in : src/fr/exodeus/zombies/Common/Saver/Network/Capabilities/
  20. ok I have changed my code to use Capabilities but still the same problem and even worse when I die it is like I'm exsisting 2 times I can even hear a second walk sound and when I rejoin the world I am back were I was just a second after my respawn and the same data When I die twice without disconecting it gets worse and my fps drops to an unplayable rate. Its the first time I use this things so I used this tutorial : https://www.minecraftforgefrance.fr/showthread.php?tid=3028 I cant tell if something's wrong in there. Thank you for your help.
  21. Hi everyone I have a problem with nbt tags attached to players when I join and quit the world it saved correctly but if I die before disconnecting it disappears when I rejoin the map has anyone an idea how to fix this I have already tried out many fixes without succes here is the lines that set the tag public void writeData() { if (player != null) { NBTTagCompound oldNBT = player.getEntityData(); NBTTagCompound nbt = oldNBT.getCompoundTag("ZombiesPlus"); if (!oldNBT.hasKey("ZombiesPlus")) { oldNBT.setTag("ZombiesPlus", nbt); } nbt.setFloat("level", thirstLevel); nbt.setFloat("saturation", thirstSaturation); } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.