-
Retires la double for à la ligne 47, elle n’a rien à faire là.
Si tu bocule sur toute la durabilité c’est normal de tomber à 0. -
@robin4002 merci je vais tester. En plus c’est bête car onUpdate fais deja une update par tick
-
pas le temps de répondre, trop rapide @robin4002 …
-
@robin4002 désolé de te déranger encore mais j’ai un dernier soucis :
je veux créer une durabilité (ce qui est fait ) et l’afficher sous formath:m:smais je ne sais pas exactement comment. -
-
@robin4002 merci. Mais juste, je sais pas si c’est moi qui suis bête mais je n’arrive pas à récupérer la durabilité…
Mon code:
package com.avonia.mod.util.handlers; import java.time.Duration; import java.time.LocalTime; import org.jline.utils.PumpReader; import org.lwjgl.opengl.GL11; import com.avonia.mod.init.ItemInit; import com.avonia.mod.init.objects.ItemRadar; import com.avonia.mod.util.Reference; import net.minecraft.block.BlockDoublePlant.EnumPlantType; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderItem; import net.minecraft.client.renderer.block.model.ModelManager; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.IResourceManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class RadarHandler extends Gui { private static Minecraft mc; public static int amountTiles = 0; public static int damage = ItemRadar.maxD - (ItemRadar.maxD - ItemRadar.itemD); ItemRenderer itemRenderer = Minecraft.getMinecraft().getItemRenderer(); FontRenderer fontRender; final ResourceLocation bg = new ResourceLocation(Reference.MODID + ":textures/items/radar.png"); public RadarHandler() { this.mc = Minecraft.getMinecraft(); this.fontRender = this.mc.fontRenderer; } @SideOnly(Side.CLIENT) @SubscribeEvent public void onRenderPre(RenderGameOverlayEvent.Pre event) { if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == ItemInit.radar /*&& ItemRadar.isUsed == 1*/) { mc.getTextureManager().bindTexture(this.bg); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); amountTiles = mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 0).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ - 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX - 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); drawCenteredString(this.mc.fontRenderer, this.amountTiles + "%", 23, 50, -1); drawCenteredString(this.mc.fontRenderer, this.formatDuration(), 23, 58, -1); event.setCanceled(true); } } public static String formatDuration() { Duration duration = Duration.ofSeconds(damage / 20); long seconds = duration.getSeconds(); long absSeconds = Math.abs(seconds); String positive = String.format( "%d:%02d:%02d", absSeconds / 3600, (absSeconds % 3600) / 60, absSeconds % 60); return seconds < 0 ? "-" + positive : positive; } }package com.avonia.mod.init.objects; import com.avonia.mod.Main; import com.avonia.mod.init.ItemInit; import com.avonia.mod.util.IHasModel; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import scala.deprecated; public class ItemRadar extends Item implements IHasModel { private static EntityPlayer player; public static int durabilité = 90*20*60; public static int maxD = 0; public static int itemD = 0; public ItemRadar(String name) { setUnlocalizedName(name); setRegistryName(name); setCreativeTab(CreativeTabs.COMBAT); setMaxDamage(durabilité); setMaxStackSize(1); ItemInit.ITEMS.add(this); } @Override public void registerModels() { Main.proxy.registerItemRederer(this, 0); } @Override public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { player = (EntityPlayer)entityIn; stack = player.getHeldItem(EnumHand.MAIN_HAND); if(player.getHeldItem(EnumHand.MAIN_HAND).getItem() instanceof ItemRadar) { if(durabilité >= 0) { durabilité --; stack.damageItem(1, player); itemD = stack.getItemDamage(); maxD = stack.getMaxDamage(); } } super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected); } } -
en utilisant la fonction getItemDamage() de ton itemstack.
-
Quand je fais ca :
package com.avonia.mod.util.handlers; import java.time.Duration; import java.time.LocalTime; import org.jline.utils.PumpReader; import org.lwjgl.opengl.GL11; import com.avonia.mod.init.ItemInit; import com.avonia.mod.init.objects.ItemRadar; import com.avonia.mod.util.Reference; import net.minecraft.block.BlockDoublePlant.EnumPlantType; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderItem; import net.minecraft.client.renderer.block.model.ModelManager; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.IResourceManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class RadarHandler extends Gui { private static Minecraft mc; public static int amountTiles = 0; public static ItemStack stack = mc.player.getHeldItem(EnumHand.MAIN_HAND); public static int maxD = stack.getMaxDamage(), itemD = stack.getItemDamage(); public static int damage = maxD - (maxD - itemD); ItemRenderer itemRenderer = Minecraft.getMinecraft().getItemRenderer(); FontRenderer fontRender; final ResourceLocation bg = new ResourceLocation(Reference.MODID + ":textures/items/radar.png"); public RadarHandler() { this.mc = Minecraft.getMinecraft(); this.fontRender = this.mc.fontRenderer; } @SideOnly(Side.CLIENT) @SubscribeEvent public void onRenderPre(RenderGameOverlayEvent.Pre event) { if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == ItemInit.radar /*&& ItemRadar.isUsed == 1*/) { mc.getTextureManager().bindTexture(this.bg); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); amountTiles = mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 0).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ - 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX - 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); drawCenteredString(this.mc.fontRenderer, this.amountTiles + "%", 23, 50, -1); drawCenteredString(this.mc.fontRenderer, this.formatDuration(), 23, 58, -1); event.setCanceled(true); } } public static String formatDuration() { Duration duration = Duration.ofSeconds(damage / 20); long seconds = duration.getSeconds(); long absSeconds = Math.abs(seconds); String positive = String.format( "%d:%02d:%02d", absSeconds / 3600, (absSeconds % 3600) / 60, absSeconds % 60); return seconds < 0 ? "-" + positive : positive; } }Ca crash…

-
Bon, après de lonnnngues recherches voici le code de l’unclaim finder en 1.12.2 avec 1h30 de durabilité :
Classe de l’item :public class ItemRadar extends Item implements IHasModel { private static EntityPlayer player; public static int durabilité = 90*20*60; public ItemRadar(String name) { setUnlocalizedName(name); setRegistryName(name); setCreativeTab(CreativeTabs.COMBAT); setMaxDamage(durabilité); setMaxStackSize(1); ItemInit.ITEMS.add(this); } @Override public void registerModels() { Main.proxy.registerItemRederer(this, 0); } @Override public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { player = (EntityPlayer)entityIn; stack = player.getHeldItem(EnumHand.MAIN_HAND); if(player.getHeldItem(EnumHand.MAIN_HAND).getItem() instanceof ItemRadar) { if(durabilité >= 0) { durabilité --; stack.damageItem(1, player); } } super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected); } }Classe du GUI :
public class RadarHandler extends Gui { private static Minecraft mc; public static int amountTiles = 0; ItemRenderer itemRenderer = Minecraft.getMinecraft().getItemRenderer(); FontRenderer fontRender; final ResourceLocation bg = new ResourceLocation(Reference.MODID + ":textures/items/radar.png"); public RadarHandler() { this.mc = Minecraft.getMinecraft(); this.fontRender = this.mc.fontRenderer; } @SideOnly(Side.CLIENT) @SubscribeEvent public void onRenderPre(RenderGameOverlayEvent.Pre event) { if(event.getType() == RenderGameOverlayEvent.ElementType.HELMET && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == ItemInit.radar /*&& ItemRadar.isUsed == 1*/) { mc.getTextureManager().bindTexture(this.bg); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); amountTiles = mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 0).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ + 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 0, mc.player.chunkCoordZ - 1).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX + 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); amountTiles = amountTiles + mc.world.getChunkFromChunkCoords(mc.player.chunkCoordX - 1, mc.player.chunkCoordZ).getTileEntityMap().values().size(); drawCenteredString(this.mc.fontRenderer, this.amountTiles + "%", 23, 39, -1); drawCenteredString(this.mc.fontRenderer, this.formatDuration(), 23, 48, -1); event.setCanceled(true); } } public static String formatDuration() { ItemStack stack = mc.player.getHeldItem(EnumHand.MAIN_HAND); int maxD = stack.getMaxDamage(); int itemD = stack.getItemDamage(); int damage = maxD - itemD; Duration duration = Duration.ofSeconds(damage / 20); long seconds = duration.getSeconds(); long absSeconds = Math.abs(seconds); String positive = String.format( "%d:%02d:%02d", absSeconds / 3600, (absSeconds % 3600) / 60, absSeconds % 60); return seconds < 0 ? "-" + positive : positive; } }Client proxy :
public class ClientProxy extends CommonProxy { @Override public void registerItemRederer(Item item, int meta) { ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), "inventory")); MinecraftForge.EVENT_BUS.register(new RadarHandler()); } }Bonne journée et merci à @DailyCraft et @robin4002 pour leur aide !
-
A tu fait un mod que je peux telecharger avec ? car j’en aurai besoin pour 1 PvP fac