forked from tilera/infinity-craft
Fixed Kill Ability for Multiplayer
This commit is contained in:
parent
6545a45f52
commit
713a2a47c7
6 changed files with 124 additions and 23 deletions
|
@ -2,7 +2,12 @@ package anvil.infinity;
|
|||
|
||||
import anvil.infinity.compat.CompatHandler;
|
||||
import anvil.infinity.config.ConfigHandler;
|
||||
import anvil.infinity.networking.KillAbilityPackageHandler;
|
||||
import anvil.infinity.networking.KillAbilityReturnPackageHandler;
|
||||
import anvil.infinity.networking.PackageKillAbility;
|
||||
import anvil.infinity.networking.PackageReq;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||
|
@ -10,7 +15,11 @@ import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
|
|||
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
||||
//Test
|
||||
|
||||
|
@ -26,6 +35,7 @@ public class Infinity {
|
|||
public static final String MOD_NAME = "Infinityraft";
|
||||
public static final String VERSION = "1.3";
|
||||
public static final String DEPENDENCIES = "required-after:lucraftcore@[1.12.2-2.4.0,)";
|
||||
public static final SimpleNetworkWrapper NETWORK_WRAPPER = NetworkRegistry.INSTANCE.newSimpleChannel(MOD_ID);
|
||||
|
||||
/**
|
||||
* This is the instance of your mod as created by Forge. It will never be null.
|
||||
|
@ -41,6 +51,9 @@ public class Infinity {
|
|||
public void preinit(FMLPreInitializationEvent event) {
|
||||
ConfigHandler.refreshConfig(event.getSuggestedConfigurationFile());
|
||||
CompatHandler.check();
|
||||
int netID = 0;
|
||||
NETWORK_WRAPPER.registerMessage(KillAbilityReturnPackageHandler.class, PackageKillAbility.class, netID++, Side.SERVER);
|
||||
NETWORK_WRAPPER.registerMessage(KillAbilityPackageHandler.class, PackageReq.class, netID++, Side.CLIENT);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
package anvil.infinity.abilities;
|
||||
|
||||
import anvil.infinity.Infinity;
|
||||
import anvil.infinity.conditions.ICondition;
|
||||
import anvil.infinity.registry.Effects;
|
||||
import anvil.infinity.networking.PackageReq;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lucraft.mods.lucraftcore.superpowers.abilities.AbilityAction;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
public class AbilityKill extends AbilityAction {
|
||||
|
||||
|
@ -35,19 +30,9 @@ public class AbilityKill extends AbilityAction {
|
|||
|
||||
@Override
|
||||
public boolean action() {
|
||||
if (condition.isFulfilled(entity)) {
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
|
||||
World w = FMLCommonHandler.instance().getMinecraftServerInstance().getEntityWorld();
|
||||
RayTraceResult result = Minecraft.getMinecraft().objectMouseOver;
|
||||
System.out.println(result.typeOfHit);
|
||||
if (result.typeOfHit == RayTraceResult.Type.ENTITY) {
|
||||
Entity e = w.getEntityByID(result.entityHit.getEntityId());
|
||||
if (e instanceof EntityLivingBase) {
|
||||
((EntityLivingBase) e).addPotionEffect(new PotionEffect(Effects.snapEffect, 1));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (condition.isFulfilled(entity) && entity instanceof EntityPlayerMP) {
|
||||
Infinity.NETWORK_WRAPPER.sendTo(new PackageReq(), (EntityPlayerMP) entity);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package anvil.infinity.networking;
|
||||
|
||||
import anvil.infinity.Infinity;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
|
||||
public class KillAbilityPackageHandler implements IMessageHandler<PackageReq, IMessage> {
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(PackageReq message, MessageContext ctx) {
|
||||
RayTraceResult result = Minecraft.getMinecraft().objectMouseOver;
|
||||
if (result.typeOfHit == RayTraceResult.Type.ENTITY) {
|
||||
PackageKillAbility pack = new PackageKillAbility();
|
||||
pack.entity = result.entityHit;
|
||||
Infinity.NETWORK_WRAPPER.sendToServer(pack);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package anvil.infinity.networking;
|
||||
|
||||
import anvil.infinity.registry.Effects;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
|
||||
public class KillAbilityReturnPackageHandler implements IMessageHandler<PackageKillAbility, IMessage> {
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(PackageKillAbility message, MessageContext ctx) {
|
||||
Entity e = message.entity;
|
||||
if (e instanceof EntityLivingBase) {
|
||||
((EntityLivingBase) e).addPotionEffect(new PotionEffect(Effects.snapEffect, 1));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package anvil.infinity.networking;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
public class PackageKillAbility implements IMessage {
|
||||
|
||||
Entity entity;
|
||||
|
||||
public PackageKillAbility(Entity entity) {
|
||||
super();
|
||||
this.entity = entity;
|
||||
}
|
||||
|
||||
public PackageKillAbility() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
|
||||
String input = ByteBufUtils.readUTF8String(buf);
|
||||
String[] inputs = input.split(":");
|
||||
int dim = Integer.parseInt(inputs[0]);
|
||||
int id = Integer.parseInt(inputs[1]);
|
||||
World world = FMLCommonHandler.instance().getMinecraftServerInstance().getWorld(dim);
|
||||
entity = world.getEntityByID(id);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
|
||||
ByteBufUtils.writeUTF8String(buf, entity.dimension + ":" + entity.getEntityId());
|
||||
|
||||
}
|
||||
}
|
17
src/main/java/anvil/infinity/networking/PackageReq.java
Normal file
17
src/main/java/anvil/infinity/networking/PackageReq.java
Normal file
|
@ -0,0 +1,17 @@
|
|||
package anvil.infinity.networking;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
public class PackageReq implements IMessage {
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue