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 !