Non résolu [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 fonctionneClientProxy.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