1.12.2 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 😑


  • Moddeurs confirmés Rédacteurs Administrateurs

    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 😑


Log in to reply