[1.7.10] Problème de AttackEntityFrom



  • Bonjour, j'ai quelque soucis avec le mod que je suis en train de développer

    J'essaye de faire une compétence de dash, donc dash en avant et faire des dégâts aux mobs alentours.
    Le dash fonctionne très bien, mais pas les dégâts, alors que pourtant les entitées alentours sont belles et bien récupérées !

    Donc si vous pouviez m'aider un peu je vous en serrez reconnaissant !
    Car j'ai cherché partout, pleins de solutions mais rien ne fonctionne

    ClientProxy.java

    package com.traktool.saoskills.proxy;
    
    import java.util.List;
    
    import org.lwjgl.input.Keyboard;
    
    import cpw.mods.fml.client.registry.ClientRegistry;
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.entity.EntityClientPlayerMP;
    import net.minecraft.client.settings.KeyBinding;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.item.ItemStack;
    import net.minecraft.item.ItemSword;
    import net.minecraft.potion.PotionEffect;
    import net.minecraft.util.AxisAlignedBB;
    import net.minecraft.util.ChatComponentText;
    import net.minecraft.util.DamageSource;
    
    public class ClientProxy extends CommonProxy
    {
        private static KeyBinding skill1;
        private static int Skill1CD = 1; // seconds
        private static long Skill1LaunchTime = 0;
        
        @Override
        public void registerRender()
        {
            System.out.println("méthode côté client");
            FMLCommonHandler.instance().bus().register(this);
            skill1 = new KeyBinding("key.skill1", Keyboard.KEY_H, "key.categories.saoskills");
            ClientRegistry.registerKeyBinding(skill1);
        }
        
        @SubscribeEvent
        public void onEvent(KeyInputEvent event)
        {
            if(skill1.isPressed())
            {
                Minecraft minecraft = Minecraft.getMinecraft();
                EntityClientPlayerMP player = minecraft.thePlayer;
                
                if (Skill1LaunchTime - System.currentTimeMillis() + (5*1000) <= 0) 
                {
                    List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX, player.posY, player.posZ - 1, player.posX + 3, player.posY + 2, player.posZ + 1));
                    if (entities != null && !entities.isEmpty()) {
                        System.out.println(entities.size());
                        for (Object e: entities) {
                            EntityLivingBase entity = (EntityLivingBase) e;
                            System.out.println(entity.getClass().getName());
                            entity.attackEntityFrom(DamageSource.causePlayerDamage(player), 10);
                        }
                    }
                    
                    player.setVelocity(1, 0, 0);
                    Skill1LaunchTime = System.currentTimeMillis();
                } 
                else 
                {
                    player.addChatComponentMessage(new ChatComponentText("Skill 1 cooldown remaining : " + (Skill1LaunchTime - System.currentTimeMillis() + (5*1000)) / 1000 + "s"));
                }
            }
        }
    }
    

    SAOSkills.java

    package com.traktool.saoskills.common;
    
    import com.traktool.saoskills.proxy.CommonProxy;
    
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    
    @Mod(modid = SAOSkills.MODID, name = "SAO Skills", version = "1.0.0")
    public class SAOSkills
    {
        public static final String MODID = "saoskills";
        
        @Instance(MODID)
        public static SAOSkills instance;
    
        @SidedProxy(clientSide = "com.traktool.saoskills.proxy.ClientProxy", serverSide = "com.traktool.saoskills.proxy.CommonProxy")
        public static CommonProxy proxy;
    
        @EventHandler
        public void preInit(FMLPreInitializationEvent event)
        {
            
        }
    
        @EventHandler
        public void init(FMLInitializationEvent event)
        {
            proxy.registerRender();
        }
    
        @EventHandler
        public void postInit(FMLPostInitializationEvent event)
        {
            
        }
    }
    
    


  • Yo, sache que l'event KeyInputEvent est CLIENT SIDE ONLY donc il est impossible que le CLIENT puisse infliger des dommages a des entities étandonné que la gestion des dommages est géré côté SERVER SIDE ONLY



  • Tu dois envoyer un packet au serveur qui lui calculera le dash et fera les damages


Log in to reply