Posted September 22, 20187 yr package boyx.arandomstuff.items; import boyx.arandomstuff.Reference; import boyx.arandomstuff.api.item.IModeChanger; import boyx.arandomstuff.handlers.InternalTimers; import boyx.arandomstuff.init.ModItems; import boyx.arandomstuff.util.ItemHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; public class ItemRepairer extends Item { public ItemRepairer(String unlocalizedName, String registryName) { this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, registryName)); this.setMaxStackSize(1); this.setMaxDamage(100); } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) { if (world.isRemote || !(entity instanceof EntityPlayer)) { return; } EntityPlayer player = (EntityPlayer) entity; player.getCapability(InternalTimers.CAPABILITY, null).activateRepair(); if (player.getCapability(InternalTimers.CAPABILITY, null).canRepair()) { repairAllItems(player); } } private void repairAllItems(EntityPlayer player) { IItemHandler inv = player.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); for (int i = 0; i < inv.getSlots(); i++) { ItemStack invStack = inv.getStackInSlot(i); if (invStack.isEmpty || invStack.getItem() instanceof IModeChanger || !invStack.getItem().isRepairable()) { continue; } if (invStack == player.getItemStackFromSlot(EntityEquipmentSlot.MAINHAND) && player.isSwingInProgress) { //Don't repair item that is currently used by the player. continue; } if (ItemHelper.isDamageable(invStack) && invStack.getItemDamage() > 0) { invStack.setItemDamage(invStack.getItemDamage() - 1); } } } } This should repair every Items in my Inventory in every few seconds. Ive got one problem whenever i get the Item in my inventory my MC crash's. It could be that I removed invStack.isEmpty (i didnt removed it in the code above) is marked red and i dont know why. If you want me to post the crash report just ask. Thank you!
September 22, 20187 yr 11 minutes ago, boyx said: (i didnt removed it in the code above) is marked red and i dont know why. Learn java before making a mod. 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 22, 20187 yr Author Ok i expressed myself wrong. I know Java and i also know why its marked red but i dont understand why because i used this alot in some mods from me but only here it doesnt work. Thats what i ment by this
September 22, 20187 yr Just now, boyx said: Ok i expressed myself wrong. I know Java and i also know why its marked red but i dont understand why because i used this alot in some mods from me but only here it doesnt work. Thats what i ment by this What does your IDE say when you hover over the red line? Have you strictly compared this to your previous code. 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 22, 20187 yr Author When i hover over it it says : isEmpty cannot be resolved or is not a field In the other mods ive just did the same thing. I created a new ItemStack stack = inv.getStackInSlot(i); and then just did invStack.isEmpty; to get a boolean.
September 22, 20187 yr 2 minutes ago, boyx said: is not a field This is the important part, it isn't a field. What else can return a boolean. 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 22, 20187 yr Author There are many things that can return a boolean but nothing i need i think. What i need is that it returns true if the ItemStack is empty for that i always used ItemStack.Empy or ItemStack.isEmpty and both dont work.
September 22, 20187 yr Just now, boyx said: There are many things that can return a boolean but nothing i need i think. What i need is that it returns true if the ItemStack is empty for that i always used ItemStack.Empy or ItemStack.isEmpty and both dont work. I java there are fields, methods, classes/interfaces. What is the one that can return a boolean. you have the words correct isEmpty, but it isn't a field. 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 22, 20187 yr Author Spoiler ---- Minecraft Crash Report ---- // This doesn't make any sense! Time: 22.09.18 21:09 Description: Ticking player java.lang.NullPointerException: Ticking player at boyx.arandomstuff.items.ItemRepairer.onUpdate(ItemRepairer.java:38) at net.minecraft.item.ItemStack.updateAnimation(ItemStack.java:524) at net.minecraft.entity.player.InventoryPlayer.decrementAnimations(InventoryPlayer.java:389) at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:560) at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2225) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:260) at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:345) at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:174) at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:216) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:309) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:197) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:807) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:688) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:537) at java.lang.Thread.run(Unknown Source) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Stacktrace: at boyx.arandomstuff.items.ItemRepairer.onUpdate(ItemRepairer.java:38) at net.minecraft.item.ItemStack.updateAnimation(ItemStack.java:524) at net.minecraft.entity.player.InventoryPlayer.decrementAnimations(InventoryPlayer.java:389) at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:560) at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:2225) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:260) -- Player being ticked -- Details: Entity Type: null (net.minecraft.entity.player.EntityPlayerMP) Entity ID: 355 Entity Name: Player357 Entity's Exact location: -185,70, 67,00, 211,25 Entity's Block location: World: (-186,67,211), Chunk: (at 6,4,3 in -12,13; contains blocks -192,0,208 to -177,255,223), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Entity's Momentum: 0,00, -0,02, 0,00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:345) at net.minecraft.network.NetHandlerPlayServer.update(NetHandlerPlayServer.java:174) at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.update(NetworkDispatcher.java:216) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:309) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@233f833a Stacktrace: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:197) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:807) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:688) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:156) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:537) at java.lang.Thread.run(Unknown Source) -- System Details -- Details: Minecraft Version: 1.10.2 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_171, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 654348648 bytes (624 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94 FML: MCP 9.32 Powered by Forge 12.18.3.2185 4 mods loaded, 4 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar) UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.10.2-12.18.3.2185.jar) UCHIJAAAA Forge{12.18.3.2185} [Minecraft Forge] (forgeSrc-1.10.2-12.18.3.2185.jar) UCHIJAAAA arstuff{beta.1} [ARandomStuff] (bin) Loaded coremods (and transformers): GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread. Profiler Position: N/A (disabled) Player Count: 1 / 8; [EntityPlayerMP['Player357'/355, l='New World', x=-185,70, y=67,00, z=211,25]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' This is the crash report. Maybe it has nothing to do with the isEmpty error...
September 22, 20187 yr Author 35 minutes ago, boyx said: player.getCapability(InternalTimers.CAPABILITY, null).activateRepair(); Minecraft Crash Report says this line is the error?
September 22, 20187 yr 2 minutes ago, boyx said: Minecraft Crash Report says this line is the error? Did you attach your capability correctly? 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 22, 20187 yr Author @CapabilityInject(InternalTimers.class) public static final Capability<InternalTimers> CAPABILITY = null; public static final ResourceLocation NAME = new ResourceLocation(Reference.MODID, "internal_timers"); I did this with the capability.
September 22, 20187 yr 4 minutes ago, boyx said: I did this with the capability. That is not enough, read the documentation on capabilities here. 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 23, 20187 yr 14 hours ago, boyx said: After i deleted the stack.isEmpty then yes it does did you try stack.isEmpty()? how well do you know java? Edited September 23, 20187 yr by Cadiboo About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
September 23, 20187 yr Author 5 minutes ago, Cadiboo said: did you try stack.isEmpty()? Yes i tried that but it also doesnt work. 6 minutes ago, Cadiboo said: how well do you know java? I know many basic things in java. I also programmed some programs but not too complicated. I never did something like this advanced modding.
September 23, 20187 yr Just now, boyx said: Yes i tried that but it also doesnt work. define doesn't work About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
September 23, 20187 yr Author 1 minute ago, Cadiboo said: define doesn't work It is undefined and not working in ItemStack...
September 23, 20187 yr Just now, boyx said: It is undefined and not working in ItemStack... what do you mean undefined? do you mean null? Undefined doesn't exist in Java as far as I know it only exists in JavaScript. 1 minute ago, boyx said: not working in ItemStack What do you mean by not working About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
September 23, 20187 yr Author In Minecraft the class ItemStack doesnt own a Method called isEmpty() somehow... I dont even know if this is the error. How i said some post above the crashlog says there too many ticks and something with the Capability doesnt work. [Edit] Btw the game crashes whenever i get the Repairer Item in my inventory. Edited September 23, 20187 yr by boyx
September 23, 20187 yr 2 minutes ago, boyx said: In Minecraft the class ItemStack doesnt own a Method called isEmpty() somehow... Excerpt from the actual net.minecraft.item.ItemStack.class package net.minecraft.item; //... public final class ItemStack implements net.minecraftforge.common.capabilities.ICapabilitySerializable<NBTTagCompound> { public static final ItemStack EMPTY = new ItemStack((Item)null); //... //... public ItemStack(Item itemIn, int amount) { this(itemIn, amount, 0); } //... public boolean isEmpty() { if (this == EMPTY) { return true; } else if (this.getItemRaw() != null && this.getItemRaw() != Items.AIR) { if (this.stackSize <= 0) { return true; } else { return this.itemDamage < -32768 || this.itemDamage > 65535; } } else { return true; } } //... } About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
September 23, 20187 yr 7 minutes ago, boyx said: How i said some post above the crashlog says there too many ticks and something with the Capability doesnt work. 16 hours ago, Animefan8888 said: 16 hours ago, boyx said: @CapabilityInject(InternalTimers.class) public static final Capability<InternalTimers> CAPABILITY = null; public static final ResourceLocation NAME = new ResourceLocation(Reference.MODID, "internal_timers"); I did this with the capability. That is not enough, read the documentation on capabilities here. About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
September 23, 20187 yr Author package boyx.arandomstuff.handlers; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.ICapabilityProvider; import javax.annotation.Nonnull; import javax.annotation.Nullable; import boyx.arandomstuff.Reference; public class InternalTimers { @CapabilityInject(InternalTimers.class) public static final Capability<InternalTimers> CAPABILITY = null; public static final ResourceLocation NAME = new ResourceLocation(Reference.MODID, "internal_timers"); private final Timer repair = new Timer(); private final Timer heal = new Timer(); private final Timer feed = new Timer(); public void tick() { if (repair.shouldUpdate) { repair.tickCount++; repair.shouldUpdate = false; } if (heal.shouldUpdate) { heal.tickCount++; heal.shouldUpdate = false; } if (feed.shouldUpdate) { feed.tickCount++; feed.shouldUpdate = false; } } public void activateRepair() { repair.shouldUpdate = true; } public void activateHeal() { heal.shouldUpdate = true; } public void activateFeed() { feed.shouldUpdate = true; } public boolean canRepair() { if (repair.tickCount >= 19) { repair.tickCount = 0; repair.shouldUpdate = false; return true; } return false; } public boolean canHeal() { if (heal.tickCount >= 19) { heal.tickCount = 0; heal.shouldUpdate = false; return true; } return false; } public boolean canFeed() { if (feed.tickCount >= 19) { feed.tickCount = 0; feed.shouldUpdate = false; return true; } return false; } public static class Provider implements ICapabilityProvider { private final InternalTimers capInstance = new InternalTimers(); @Override public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) { return capability == CAPABILITY; } @Override public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) { if (capability == CAPABILITY) return CAPABILITY.cast(capInstance); else return null; } } private static class Timer { public int tickCount = 0; public boolean shouldUpdate = false; } } Thats the class i did the Capabilitys in. I dont know much and i didnt understand the documentation well.
September 23, 20187 yr Author 5 minutes ago, Cadiboo said: Excerpt from the actual net.minecraft.item.ItemStack.class I am exactly in the same class and dont find this 5 minutes ago, Cadiboo said: public boolean isEmpty()
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.