Résolu Crash Server EntityPlayerSP
-
Bonjour,
dans une class j’ai appelé l’objet Minecraft.getMinecraft().player qui est un EntityPlayerSP.
Le problème c’est que cette classe est “SinglePlayer”. Or, à cause de ça, mon serveur crash.
Comment pourrais-je utiliser une classe multijoueur (EntityPlayerMP) ?
Merci.
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; ItemRenderer itemRenderer = Minecraft.getMinecraft().getItemRenderer(); FontRenderer fontRender; final ResourceLocation te0_5 = new ResourceLocation(Reference.MODID + ":textures/gui/radar_0-5.png"); final ResourceLocation te6_10 = new ResourceLocation(Reference.MODID + ":textures/gui/radar_6-10.png"); final ResourceLocation te11_25 = new ResourceLocation(Reference.MODID + ":textures/gui/radar_11-25.png"); final ResourceLocation te26_more = new ResourceLocation(Reference.MODID + ":textures/gui/radar_26+.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*/) { 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(); if(amountTiles <= 5) { mc.getTextureManager().bindTexture(this.te0_5); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); } else if(amountTiles <= 10 && amountTiles >=6) { mc.getTextureManager().bindTexture(this.te6_10); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); } else if(amountTiles <= 25 && amountTiles >=11) { mc.getTextureManager().bindTexture(this.te11_25); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); } else if(amountTiles >=26) { mc.getTextureManager().bindTexture(this.te26_more); drawModalRectWithCustomSizedTexture(5,5,0,0,32,32,32,32); } 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; } }
-
@robin4002 bonjour.
Merci de votre réponse.
j’avais juste laissé un bout de code inutile -_- -
Bonsoir,
Vu ton code, il n’y a aucun problème à utiliser du code client ici vu qu’il s’agit d’un gui.Si ton serveur crash, c’est qu’il essaie de charger cette classe alors qu’il ne devrait pas : seul le client devrait.
Le problème ne vient donc pas de la classe elle-même mais de où tu l’utilises.
-
@robin4002 bonjour.
Merci de votre réponse.
j’avais juste laissé un bout de code inutile -_-