Posted September 17, 20196 yr So I have a poisonous air class I made for my custom dimension that causes any player that isn't wearing a gas mask to get poisoned, but the poison is slightly randomized, in that the player may suffer the effects more slowly or more rapidly at any moment. Also if they are wearing the gas mask, the poison doesn't affect them, but the gas mask slowly breaks at a randomized rate. It all works very well for me. On singleplayer, there are no issues. When I start the server, there are no issues. When someone tries to join the server, the server kinda kicks them out. My poison air code looks like this: Quote public class PoisonAir { @SubscribeEvent public static void playerTick(TickEvent.PlayerTickEvent event) { final EntityPlayer player = event.player; if(player.inventory.armorItemInSlot(3).getItem() != ModItems.GAS_MASK) { if(player.dimension == 2) { Random random = new Random(); if(random.nextInt(35) == 0) { player.addPotionEffect(new PotionEffect(MobEffects.POISON, 120, 0, false, false)); } } } else if(player.inventory.armorItemInSlot(3).getItem() == ModItems.GAS_MASK) { if(player.dimension == 2) { Random random = new Random(); if(random.nextInt(860) == 0) { player.inventory.armorItemInSlot(3).damageItem(1, player); } } } } } I don't know what part of this code is causing the problems, so if someone could help me track down where and why the problems arise, I'd be very grateful.
September 17, 20196 yr 47 minutes ago, JonIsPatented said: When someone tries to join the server, the server kinda kicks them out. My poison air code looks like this: What does the console say when they get kicked. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
September 17, 20196 yr 8 hours ago, JonIsPatented said: if(player.inventory.armorItemInSlot(3).getItem() != ModItems.GAS_MASK) //... else if(player.inventory.armorItemInSlot(3).getItem() == ModItems.GAS_MASK) else is sufficient here, by the way. It is impossible for both of those to be true at the same time or false at the same time. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
September 17, 20196 yr Author Quote else is sufficient here, by the way Could that be causing it to kick players off the server? I don't think it is, but I will fix it anyway. When I get home later, I will post the exact error I get. Perhaps that will help. Edited September 17, 20196 yr by JonIsPatented
September 17, 20196 yr Author 12 hours ago, Animefan8888 said: What does the console say when they get kicked. Quote [00:27:34] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.fml.common.gameevent.TickEvent$PlayerTickEvent@11ef70d: java.lang.NoSuchMethodError: net.minecraft.entity.player.InventoryPlayer.func_70440_f(I)Lnet/minecraft/item/ItemStack; at com.jonispatented.moarmor.world.dimension.overrun.PoisonAir.playerTick(PoisonAir.java:28) ~[PoisonAir.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_12_PoisonAir_playerTick_PlayerTickEvent.invoke(.dynamic) ~[?:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) [EventBus.class:?] at net.minecraftforge.fml.common.FMLCommonHandler.onPlayerPreTick(FMLCommonHandler.java:365) [FMLCommonHandler.class:?] at net.minecraft.entity.player.EntityPlayer.func_70071_h_(EntityPlayer.java:190) [aed.class:?] at net.minecraft.entity.player.EntityPlayerMP.func_71127_g(EntityPlayerMP.java:382) [oq.class:?] at net.minecraft.network.NetHandlerPlayServer.func_73660_a(NetHandlerPlayServer.java:173) [pa.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.func_73660_a(NetworkDispatcher.java:209) [NetworkDispatcher$1.class:?] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:285) [gw.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:180) [oz.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:790) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) [nz.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_221] [00:27:34] [Server thread/ERROR] [FML]: Index: 1 Listeners: [00:27:34] [Server thread/ERROR] [FML]: 0: NORMAL [00:27:34] [Server thread/ERROR] [FML]: 1: ASM: class com.jonispatented.moarmor.world.dimension.overrun.PoisonAir playerTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$PlayerTickEvent;)V [00:27:34] [Server thread/WARN] [net.minecraft.network.NetworkSystem]: Failed to handle packet for /129.137.96.9:36630 net.minecraft.util.ReportedException: Ticking player at net.minecraft.entity.player.EntityPlayerMP.func_71127_g(EntityPlayerMP.java:459) ~[oq.class:?] at net.minecraft.network.NetHandlerPlayServer.func_73660_a(NetHandlerPlayServer.java:173) ~[pa.class:?] at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.func_73660_a(NetworkDispatcher.java:209) ~[NetworkDispatcher$1.class:?] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:285) ~[gw.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:180) [oz.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:790) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397) [nz.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?] at java.lang.Thread.run(Unknown Source) [?:1.8.0_221] Caused by: java.lang.NoSuchMethodError: net.minecraft.entity.player.InventoryPlayer.func_70440_f(I)Lnet/minecraft/item/ItemStack; at com.jonispatented.moarmor.world.dimension.overrun.PoisonAir.playerTick(PoisonAir.java:28) ~[PoisonAir.class:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_12_PoisonAir_playerTick_PlayerTickEvent.invoke(.dynamic) ~[?:?] at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?] at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) ~[EventBus.class:?] at net.minecraftforge.fml.common.FMLCommonHandler.onPlayerPreTick(FMLCommonHandler.java:365) ~[FMLCommonHandler.class:?] at net.minecraft.entity.player.EntityPlayer.func_70071_h_(EntityPlayer.java:190) ~[aed.class:?] at net.minecraft.entity.player.EntityPlayerMP.func_71127_g(EntityPlayerMP.java:382) ~[oq.class:?] ... 9 more It says this but repeated at what I assume to be every tick, because it appears about 20 times every second and it happens for about 3 seconds before it kicks the player out.
September 17, 20196 yr 29 minutes ago, JonIsPatented said: Could that be causing it to kick players off the server? Its not. Its just a comment that your code was unnecessarily verbose. 9 minutes ago, JonIsPatented said: java.lang.NoSuchMethodError: net.minecraft.entity.player.InventoryPlayer.func_70440_f(I)Lnet/minecraft/item/ItemStack; at com.jonispatented.moarmor.world.dimension.overrun.PoisonAir.playerTick(PoisonAir.java:28) ~[PoisonAir.class:?] My guess as to which line is line 28 is this one, as its the only one that appears to reference a function in the ItemStack class: 13 hours ago, JonIsPatented said: player.inventory.armorItemInSlot(3).damageItem(1, player); You should probably be using attemptDamageItem I think its called. Its the one that takes Unbreaking into account. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
September 17, 20196 yr Author 2 hours ago, diesieben07 said: InventoryPlayer#armorItemInSlot is a client-only method (indicated by it's @SideOnly(CLIENT) annotation). This means it does not exist on a dedicated server and cannot be used there. Use EntityLivingBase#getItemStackFromSlot, which also avoids the magic numbers. Oh geez, really that simple? Thank you so much, it works now.
September 17, 20196 yr Author 2 hours ago, Draco18s said: You should probably be using attemptDamageItem I think its called. Its the one that takes Unbreaking into account. I tried to do this but I couldn't figure it out. I'm sure it's simple but I have other bugs to fix first. Thank you.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.