From c918a1b6d8008773e9beebb48ba1a770405aee20 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 22 Aug 2019 19:54:41 -0400 Subject: Bulk update back to sanity --- .../fyresmodjam/handlers/NewPacketHandler.java | 1112 +++++--------------- 1 file changed, 273 insertions(+), 839 deletions(-) (limited to 'YWD/src/main/java/fyresmodjam/handlers/NewPacketHandler.java') diff --git a/YWD/src/main/java/fyresmodjam/handlers/NewPacketHandler.java b/YWD/src/main/java/fyresmodjam/handlers/NewPacketHandler.java index 787a8c9..9a85d40 100755 --- a/YWD/src/main/java/fyresmodjam/handlers/NewPacketHandler.java +++ b/YWD/src/main/java/fyresmodjam/handlers/NewPacketHandler.java @@ -1,30 +1,19 @@ package fyresmodjam.handlers; -import java.nio.charset.Charset; -import java.util.ArrayList; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec; import cpw.mods.fml.common.network.FMLOutboundHandler; -import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import fyresmodjam.ModjamMod; import fyresmodjam.blessings.BlessingUtils; import fyresmodjam.blocks.BlockTrap; +import fyresmodjam.misc.DamageSources; import fyresmodjam.misc.EntityStatHelper; import fyresmodjam.misc.ItemStatHelper; import fyresmodjam.tileentities.TileEntityTrap; -import io.netty.buffer.ByteBuf; -import io.netty.channel.ChannelHandlerContext; -import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.network.INetHandler; -import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; @@ -38,933 +27,378 @@ public class NewPacketHandler { public static BasicPacket[] packetTypes = new BasicPacket[256]; - public static int[] potionValues = new int[12]; - public static int[] potionDurations = new int[12]; + public static int[] potionValues = new int[12]; + public static int[] potionDurations = new int[12]; public static int[][] mushroomColors = new int[13][2]; public static String currentDisadvantage = null; - public static String currentTask = null; - public static int currentTaskID = -1; - public static int currentTaskAmount = 0; - public static int progress = 0; - public static int tasksCompleted = 0; - public static int rewardLevels = 0; - - public static boolean enderDragonKilled = false; - public static boolean trapsDisabled = false; - - public static interface IPacket { - public void readBytes(ByteBuf bytes); + public static String currentTask = null; + public static int currentTaskID = -1; + public static int currentTaskAmount = 0; + public static int progress = 0; + public static int tasksCompleted = 0; + public static int rewardLevels = 0; - public void writeBytes(ByteBuf bytes); + public static boolean enderDragonKilled = false; + public static boolean trapsDisabled = false; - public void executeClient(EntityPlayer player); + public static void sendPacketToPlayer(IPacket packet, EntityPlayer player) { + ModjamMod.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET) + .set(FMLOutboundHandler.OutboundTarget.PLAYER); + ModjamMod.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player); + ModjamMod.channels.get(Side.SERVER).writeOutbound(packet); + } - public void executeServer(EntityPlayer player); + public static void sendPacketToAllPlayers(IPacket packet) { + ModjamMod.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET) + .set(FMLOutboundHandler.OutboundTarget.ALL); + ModjamMod.channels.get(Side.SERVER).writeOutbound(packet); + } - public void executeBoth(EntityPlayer player); + public static void sendPacketToServer(IPacket packet) { + ModjamMod.channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET) + .set(FMLOutboundHandler.OutboundTarget.TOSERVER); + ModjamMod.channels.get(Side.CLIENT).writeOutbound(packet); } - public static class ChannelHandler - extends FMLIndexedMessageToMessageCodec { + public static final BasicPacket UPDATE_BLESSING = new BasicPacket(1) { + @Override + public void executeBoth(EntityPlayer player) { + player.getEntityData().setString("Blessing", (String) data[0]); + } + + @Override + public Class[] getExpectedClasses() { + return new Class[] { String.class }; + } + }; - public ChannelHandler() { - addDiscriminator(0, BasicPacket.class); + public static final BasicPacket PLAY_SOUND = new BasicPacket(2) { + @Override + public void executeServer(EntityPlayer player) { + String sound = (String) data[0]; + int x = (Integer) data[1], y = (Integer) data[2], z = (Integer) data[3]; + player.worldObj.playSound(x, y, z, "fyresmodjam:" + sound, 1.0F, 1.0F, false); + } + @Override + public Class[] getExpectedClasses() { + return new Class[] { String.class, Integer.class, Integer.class, Integer.class }; } + }; + public static final BasicPacket UPDATE_POTION_KNOWLEDGE = new BasicPacket(3) { @Override - public void encodeInto(ChannelHandlerContext ctx, - IPacket packet, ByteBuf data) - throws Exception { - packet.writeBytes(data); + public void executeBoth(EntityPlayer player) { + player.getEntityData().setIntArray("PotionKnowledge", (int[]) data[0]); } @Override - public void decodeInto(ChannelHandlerContext ctx, - ByteBuf data, IPacket packet) { - packet.readBytes(data); + public Class[] getExpectedClasses() { + return new Class[] { int[].class }; + } + }; - if (packet instanceof BasicPacket) { - packetTypes[((BasicPacket) packet).type].data = ((BasicPacket) packet).data; - } + public static final BasicPacket SEND_MESSAGE = new BasicPacket(4) { + @Override + public void executeClient(EntityPlayer player) { + String style = ""; - EntityPlayer player = null; + for (String s : ((String) data[0]).split("@")) { + String[] words = s.split(" "); + s = ""; - switch (FMLCommonHandler.instance() - .getEffectiveSide()) { + for (String word : words) { + s += style + word + " "; - case CLIENT: + while (word.contains("\u00A7")) { + int firstOccurance = word.indexOf("\u00A7"); + String string = word.substring(firstOccurance, firstOccurance + 2); - player = getClientPlayer(); + if (style.contains(string)) { + style = style.replace(string, ""); + } + style += string; + if (string.equals("\u00A7r")) { + style = ""; + } - if (player != null) { - packet.executeClient( - player); - packet.executeBoth(player); + word = word.replaceFirst(string, ""); } + } - break; - - case SERVER: + player.addChatComponentMessage(new ChatComponentText(s)); + } + } - INetHandler netHandler = ctx - .channel() - .attr(NetworkRegistry.NET_HANDLER) - .get(); - player = ((NetHandlerPlayServer) netHandler).playerEntity; + @Override + public Class[] getExpectedClasses() { + return new Class[] { String.class }; + } + }; - if (player != null) { - packet.executeServer( - player); - packet.executeBoth(player); - } + public static final BasicPacket UPDATE_WORLD_DATA = new BasicPacket(5) { + @Override + public void executeClient(EntityPlayer player) { + potionValues = (int[]) data[0]; + potionDurations = (int[]) data[1]; + currentDisadvantage = (String) data[2]; + currentTask = (String) data[3]; + currentTaskID = (Integer) data[4]; + currentTaskAmount = (Integer) data[5]; + progress = (Integer) data[6]; + tasksCompleted = (Integer) data[7]; + enderDragonKilled = (Boolean) data[8]; + trapsDisabled = !((Boolean) data[9]); + rewardLevels = (Integer) data[10]; + mushroomColors = (int[][]) data[11]; + } - break; + @Override + public Class[] getExpectedClasses() { + return new Class[] { int[].class, int[].class, String.class, String.class, Integer.class, Integer.class, + Integer.class, Integer.class, Boolean.class, Boolean.class, Integer.class, int[][].class }; + } + }; - default: - break; + public static final BasicPacket UPDATE_PLAYER_ITEMS = new BasicPacket(6) { + @Override + public void executeServer(EntityPlayer player) { + for (Object stack : player.inventory.mainInventory) { + if (stack == null || !(stack instanceof ItemStack)) { + continue; + } + ItemStatHelper.processItemStack((ItemStack) stack, ModjamMod.r); } } - @SideOnly(Side.CLIENT) - public EntityPlayer getClientPlayer() { - return Minecraft.getMinecraft().thePlayer; + @Override + public Class[] getExpectedClasses() { + return null; } - } + }; - public static class BasicPacket implements IPacket { - public static Class[] validClassArray = { - Integer.class, Boolean.class, String.class, - Character.class, Byte.class, Float.class, - Double.class, int[].class, int[][].class - }; - public static ArrayList validClasses = new ArrayList(); - static { - for (Class c : validClassArray) { - validClasses.add(c); - } - } + public final static BasicPacket DISARM_TRAP = new BasicPacket(7) { + @Override + public void executeServer(EntityPlayer player) { + int blockX = (Integer) data[0], blockY = (Integer) data[1], blockZ = (Integer) data[2]; + boolean mechanic = (Boolean) data[3]; - public Object[] data = null; - public byte type; + boolean isScout = BlessingUtils.hasBlessing(player, "MarkScouting"); - public BasicPacket() { - } + TileEntity te = player.worldObj.getTileEntity(blockX, blockY, blockZ); - public BasicPacket(int type) { - if (type == 0 || packetTypes[type] != null) { - throw new RuntimeException("Packet slot " - + type - + " already in use."); - } - packetTypes[type] = this; - this.type = (byte) type; - } + boolean isValidTrap = te == null || !(te instanceof TileEntityTrap); + boolean yours = isValidTrap ? false : player.getCommandSenderName().equals(((TileEntityTrap) te).placedBy); - public BasicPacket(BasicPacket packet, Object... data) { - if (packet.type > 0 - && packet.type < packetTypes.length - && packet == packetTypes[packet.type]) { - type = packet.type; - } else { - throw new RuntimeException( - "Must supply valid packet type."); - } + if (yours || (mechanic ? ModjamMod.r.nextInt(4) != 0 : ModjamMod.r.nextInt(4) == 0)) { + boolean salvage = yours || (mechanic ? ModjamMod.r.nextBoolean() : (ModjamMod.r.nextInt(4) == 0)); - Class[] classes = getExpectedClasses(); + SEND_MESSAGE.sendToPlayer(player, + "\u00A7e\u00A7o" + (!salvage ? "You disarmed the trap." : "You disarm and salvage the trap.")); - if (classes != null) { - for (Class c : classes) { - if (!validClasses.contains(c)) { - throw new RuntimeException( - "Argument class not valid. (" - + c - + ")"); - } - } + if (salvage) { + ItemStack spawned = new ItemStack(ModjamMod.itemTrap, 1, + player.worldObj.getBlockMetadata(blockX, blockY, blockZ) % BlockTrap.trapTypes); - if (data == null || data.length != classes.length) { - throw new RuntimeException( - "Wrong number of arguments provided."); - } else { - for (int i = 0; i < data.length; i++) { - if (data[i].getClass() != classes[i]) { - throw new RuntimeException( - "Wrong argument class provided. (" - + data[i].getClass() - + ", expected " - + classes[i] - + ")"); - } - } + player.worldObj.spawnEntityInWorld( + new EntityItem(player.worldObj, blockX + 0.5F, blockY, blockZ + 0.5F, spawned)); } - } - this.data = data; - } + player.worldObj.setBlockToAir(blockX, blockY, blockZ); + } else { + int trapType = player.worldObj.getBlockMetadata(blockX, blockY, blockZ); - @Override - public void readBytes(ByteBuf bytes) { - type = bytes.readByte(); + if (trapType % BlockTrap.trapTypes == 0) { + // Spike trap - Class[] classes = getExpectedClasses(); + player.attackEntityFrom(DamageSources.trap, 4.0F + (isScout ? 1 : 0)); - if (classes != null) { - data = new Object[classes.length]; + if (ModjamMod.r.nextInt(16 - (isScout ? 4 : 0)) == 0) { + // Spike traps have a chance to poison the player + PotionEffect poisonEff = new PotionEffect(Potion.poison.id, 100 + (isScout ? 25 : 0), 1); - for (int i = 0; i < classes.length; i++) { - if (classes[i] == Integer.class) { - data[i] = bytes.readInt(); - } - if (classes[i] == int[].class) { - int[] array = new int[bytes - .readInt()]; - for (int i2 = 0; i2 < array.length; i2++) { - array[i2] = bytes - .readInt(); - } - data[i] = array; + ((EntityLivingBase) player).addPotionEffect(poisonEff); } - if (classes[i] == int[][].class) { - int[][] array = new int[bytes - .readInt()][]; - - for (int i2 = 0; i2 < array.length; i2++) { - array[i2] = new int[bytes - .readInt()]; - for (int i3 = 0; i3 < array[i2].length; i3++) { - array[i2][i3] = bytes - .readInt(); - } - } + } else if (trapType % BlockTrap.trapTypes == 1) { + // Flame trap - data[i] = array; - } else if (classes[i] == Boolean.class) { - data[i] = bytes.readBoolean(); - } else if (classes[i] == String.class) { - int length = bytes - .readInt(); - try { - byte[] stringBytes = new byte[length]; - bytes.readBytes(stringBytes); - data[i] = new String( - stringBytes, - "UTF-8"); - } catch (Exception e) { - e.printStackTrace(); - } - } else if (classes[i] == Byte.class) { - data[i] = bytes.readByte(); - } else if (classes[i] == Float.class) { - data[i] = bytes.readDouble(); - } else if (classes[i] == Double.class) { - data[i] = bytes.readFloat(); - } else if (classes[i] == Character.class) { - data[i] = bytes.readChar(); + if (!player.isBurning()) { + player.setFire(5 + (isScout ? 1 : 0)); } + } else if (trapType % BlockTrap.trapTypes == 2) { + // Smoke trap + + PotionEffect blindEff = new PotionEffect(Potion.blindness.id, 100 + (isScout ? 25 : 0), 1); + PotionEffect slowEff = new PotionEffect(Potion.moveSlowdown.id, 100 + (isScout ? 25 : 0), 1); + + player.addPotionEffect(blindEff); + player.addPotionEffect(slowEff); } - } - } - @Override - public void writeBytes(ByteBuf bytes) { - bytes.writeByte(type); - - if (data != null) { - for (int i = 0; i < data.length; i++) { - if (data[i] instanceof Integer) { - bytes.writeInt((Integer) data[i]); - } else if (data[i] instanceof int[]) { - bytes.writeInt(((int[]) data[i]).length); - for (int i2 = 0; i2 < ((int[]) data[i]).length; i2++) { - bytes.writeInt(((int[]) data[i])[i2]); - } - } else if (data[i] instanceof int[][]) { - int[][] values = (int[][]) data[i]; + player.worldObj.setBlockToAir(blockX, blockY, blockZ); - bytes.writeInt(values.length); + SEND_MESSAGE.sendToPlayer(player, "\u00A7c\u00A7oYou failed to disarm the trap."); - for (int i2 = 0; i2 < values.length; i2++) { - bytes.writeInt(values[i2].length); - for (int i3 = 0; i3 < values[i2].length; i3++) { - bytes.writeInt(values[i2][i3]); - } - } - } else if (data[i] instanceof Boolean) { - bytes.writeBoolean( - (Boolean) data[i]); - } else if (data[i] instanceof String) { - byte[] stringBytes = ((String) data[i]) - .getBytes(Charset - .forName("UTF-8")); - bytes.writeInt(stringBytes.length); - bytes.writeBytes( - stringBytes); - } else if (data[i] instanceof Byte) { - bytes.writeByte((Byte) data[i]); - } else if (data[i] instanceof Float) { - bytes.writeDouble( - (Double) data[i]); - } else if (data[i] instanceof Double) { - bytes.writeFloat( - (Float) data[i]); - } else if (data[i] instanceof Character) { - bytes.writeChar((Character) data[i]); - } + if (CommonTickHandler.worldData.getDisadvantage().equals("Explosive Traps")) { + player.worldObj.setBlockToAir(blockX, blockY, blockZ); + player.worldObj.createExplosion(null, blockX + 0.5F, blockY + 0.5F, blockZ + 0.5F, 1.33F, true); } + + player.triggerAchievement(ModjamMod.whoops); } } @Override - public void executeClient(EntityPlayer player) { - if (packetTypes[type] != this) { - packetTypes[type].executeClient(player); - } + public Class[] getExpectedClasses() { + return new Class[] { Integer.class, Integer.class, Integer.class, Boolean.class }; } + }; + public final static BasicPacket EXAMINE_MOB = new BasicPacket(8) { @Override public void executeServer(EntityPlayer player) { - if (packetTypes[type] != this) { - packetTypes[type].executeServer(player); - } - } + int dimension = (Integer) data[0]; + int entityID = (Integer) data[1]; - @Override - public void executeBoth(EntityPlayer player) { - if (packetTypes[type] != this) { - packetTypes[type].executeBoth(player); - } - } + WorldServer server = null; - public Class[] getExpectedClasses() { - if (packetTypes[type] != this) { - return packetTypes[type] - .getExpectedClasses(); - } else { - return null; + for (WorldServer s : MinecraftServer.getServer().worldServers) { + if (s.provider.dimensionId == dimension) { + server = s; + break; + } } - } - - public void sendToPlayer(EntityPlayer player, - Object... data) { - sendPacketToPlayer(new BasicPacket(this, data), - player); - } - - public void sendToAllPlayers(Object... data) { - sendPacketToAllPlayers( - new BasicPacket(this, data)); - } - public void sendToServer(Object... data) { - sendPacketToServer(new BasicPacket(this, data)); - } - } + if (server != null) { + Entity entity = server.getEntityByID(entityID); - public static void sendPacketToPlayer(IPacket packet, - EntityPlayer player) { - ModjamMod.channels.get(Side.SERVER) - .attr(FMLOutboundHandler.FML_MESSAGETARGET) - .set(FMLOutboundHandler.OutboundTarget.PLAYER); - ModjamMod.channels.get(Side.SERVER).attr( - FMLOutboundHandler.FML_MESSAGETARGETARGS) - .set(player); - ModjamMod.channels.get(Side.SERVER).writeOutbound(packet); - } + if (entity != null) { + boolean hasBlessing = entity.getEntityData().hasKey("Blessing"); - public static void sendPacketToAllPlayers(IPacket packet) { - ModjamMod.channels.get(Side.SERVER) - .attr(FMLOutboundHandler.FML_MESSAGETARGET) - .set(FMLOutboundHandler.OutboundTarget.ALL); - ModjamMod.channels.get(Side.SERVER).writeOutbound(packet); - } + String blessing2 = hasBlessing ? entity.getEntityData().getString("Blessing") : null; - public static void sendPacketToServer(IPacket packet) { - ModjamMod.channels.get(Side.CLIENT) - .attr(FMLOutboundHandler.FML_MESSAGETARGET) - .set(FMLOutboundHandler.OutboundTarget.TOSERVER); - ModjamMod.channels.get(Side.CLIENT).writeOutbound(packet); - } + if (blessing2 != null) { + SEND_MESSAGE.sendToPlayer(player, + "\u00A7eYou notice " + entity.getCommandSenderName() + "\u00A7e is using " + + BlessingUtils.getBlessingInstance(blessing2).customName() + "."); + } else { + SEND_MESSAGE.sendToPlayer(player, + "\u00A7eThere doesn't seem to be anything special about " + + (entity instanceof EntityPlayer ? "" : "this ") + + entity.getCommandSenderName() + "\u00A7e."); + } + } + } + } - public static final BasicPacket + @Override + public Class[] getExpectedClasses() { + return new Class[] { Integer.class, Integer.class }; + } + }; - UPDATE_BLESSING = new BasicPacket(1) { + public final static BasicPacket LEVEL_UP = new BasicPacket(9) { @Override public void executeBoth(EntityPlayer player) { - player.getEntityData().setString("Blessing", - (String) data[0]); + player.addExperienceLevel((Integer) data[0]); } @Override public Class[] getExpectedClasses() { - return new Class[] { - String.class - }; + return new Class[] { Integer.class }; } - }, - - PLAY_SOUND = new BasicPacket(2) { - @Override - public void executeServer( - EntityPlayer player) { - String sound = (String) data[0]; - int x = (Integer) data[1], - y = (Integer) data[2], - z = (Integer) data[3]; - player.worldObj.playSound(x, y, z, - "fyresmodjam:" + sound, - 1.0F, 1.0F, false); - } - - @Override - public Class[] getExpectedClasses() { - return new Class[] { - String.class, - Integer.class, - Integer.class, - Integer.class - }; - } - }, - - UPDATE_POTION_KNOWLEDGE = new BasicPacket(3) { - @Override - public void executeBoth( - EntityPlayer player) { - player.getEntityData().setIntArray( - "PotionKnowledge", - (int[]) data[0]); - } - - @Override - public Class[] getExpectedClasses() { - return new Class[] { - int[].class - }; - } - }, - - SEND_MESSAGE = new BasicPacket(4) { - @Override - public void executeClient( - EntityPlayer player) { - String style = ""; - - for (String s : ((String) data[0]) - .split("@")) { - String[] words = s.split( - " "); - s = ""; - - for (String word : words) { - s += style + word - + " "; - - while (word.contains( - "\u00A7")) { - int firstOccurance = word - .indexOf("\u00A7"); - String string = word - .substring(firstOccurance, - firstOccurance + 2); - - if (style.contains( - string)) { - style = style.replace( - string, - ""); - } - style += string; - if (string.equals( - "\u00A7r")) { - style = ""; - } - - word = word.replaceFirst( - string, - ""); - } - } + }; - player.addChatComponentMessage( - new ChatComponentText( - s)); - } - } + public final static BasicPacket ACTIVATE_BLESSING = new BasicPacket(10) { + @Override + public void executeServer(EntityPlayer player) { + int x = (Integer) data[0], y = (Integer) data[1], z = (Integer) data[2]; - @Override - public Class[] getExpectedClasses() { - return new Class[] { - String.class - }; - } - }, - - UPDATE_WORLD_DATA = new BasicPacket(5) { - @Override - public void executeClient( - EntityPlayer player) { - potionValues = (int[]) data[0]; - potionDurations = (int[]) data[1]; - currentDisadvantage = (String) data[2]; - currentTask = (String) data[3]; - currentTaskID = (Integer) data[4]; - currentTaskAmount = (Integer) data[5]; - progress = (Integer) data[6]; - tasksCompleted = (Integer) data[7]; - enderDragonKilled = (Boolean) data[8]; - trapsDisabled = !((Boolean) data[9]); - rewardLevels = (Integer) data[10]; - mushroomColors = (int[][]) data[11]; - } + boolean blessingActive = EntityStatHelper.hasStat(player, "BlessingActive") + ? Boolean.parseBoolean(EntityStatHelper.getStat(player, "BlessingActive")) + : false; - @Override - public Class[] getExpectedClasses() { - return new Class[] { - int[].class, - int[].class, - String.class, - String.class, - Integer.class, - Integer.class, - Integer.class, - Integer.class, - Boolean.class, - Boolean.class, - Integer.class, - int[][].class - }; - } - }, - - UPDATE_PLAYER_ITEMS = new BasicPacket(6) { - @Override - public void executeServer( - EntityPlayer player) { - for (Object stack : player.inventory.mainInventory) { - if (stack == null - || !(stack instanceof ItemStack)) { - continue; - } - ItemStatHelper.processItemStack( - (ItemStack) stack, - ModjamMod.r); - } - } - - @Override - public Class[] getExpectedClasses() { - return null; - } - }, - - DISARM_TRAP = new BasicPacket(7) { - @Override - public void executeServer( - EntityPlayer player) { - int blockX = (Integer) data[0], - blockY = (Integer) data[1], - blockZ = (Integer) data[2]; - boolean mechanic = (Boolean) data[3]; - - boolean scout = BlessingUtils - .hasBlessing(player, - "MarkScouting"); - - TileEntity te = player.worldObj - .getTileEntity(blockX, - blockY, - blockZ); - - boolean yours = (te == null - || !(te instanceof TileEntityTrap)) - ? false - : player.getCommandSenderName() - .equals(((TileEntityTrap) te).placedBy); - - if (yours || (mechanic - ? ModjamMod.r.nextInt( - 4) != 0 - : ModjamMod.r.nextInt( - 4) == 0)) { - boolean salvage = yours - || (mechanic ? ModjamMod.r - .nextBoolean() - : (ModjamMod.r.nextInt( - 4) == 0)); - - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7e\u00A7o" + (!salvage - ? "You disarmed the trap." - : "You disarm and salvage the trap.")); - - if (salvage) { - ItemStack spawned = new ItemStack( - ModjamMod.itemTrap, - 1, - player.worldObj.getBlockMetadata( - blockX, - blockY, - blockZ) - % BlockTrap.trapTypes); - - player.worldObj.spawnEntityInWorld( - new EntityItem(player.worldObj, - blockX + 0.5F, - blockY, - blockZ + 0.5F, - spawned)); - } + if (!EntityStatHelper.hasStat(player, "BlessingCooldown")) { + EntityStatHelper.giveStat(player, "BlessingCooldown", 0); + } - player.worldObj.setBlockToAir( - blockX, - blockY, - blockZ); - } else { - int trapType = player.worldObj - .getBlockMetadata( - blockX, - blockY, - blockZ); - - // TODO use a custom damage - // type for the traps - if (trapType % BlockTrap.trapTypes == 0) { - player.attackEntityFrom( - DamageSource.cactus, - 4.0F + (scout ? 1 - : 0)); - if (ModjamMod.r.nextInt( - 16 - (scout ? 4 - : 0)) == 0) { - ((EntityLivingBase) player) - .addPotionEffect( - new PotionEffect( - Potion.poison.id, - 100 + (scout ? 25 - : 0), - 1)); - } - } else if (trapType - % BlockTrap.trapTypes == 1) { - if (!player.isBurning()) { - player.setFire(5 + (scout - ? 1 - : 0)); + long time = (CommonTickHandler.worldData != null + && CommonTickHandler.worldData.getDisadvantage().equals("Neverending Rain")) + ? player.worldObj.getTotalWorldTime() + : player.worldObj.getWorldTime(); + + if (EntityStatHelper.getStat(player, "BlessingCooldown").equals("0")) { + if (!blessingActive) { + if (BlessingUtils.hasBlessing(player)) { + if (BlessingUtils.hasBlessing(player, "BlessingBerserker")) { + if (hasBlessingCounters(player)) { + blessingActive = true; + SEND_MESSAGE.sendToPlayer(player, "\u00A7cYou enter berserk mode."); + } else { + SEND_MESSAGE.sendToPlayer(player, "\u00A7cYou have no berserk counters."); } - } else if (trapType - % BlockTrap.trapTypes == 2) { - player.addPotionEffect( - new PotionEffect( - Potion.blindness.id, - 100 + (scout ? 25 - : 0), - 1)); - player.addPotionEffect( - new PotionEffect( - Potion.moveSlowdown.id, - 100 + (scout ? 25 - : 0), - 1)); - } + } else if (BlessingUtils.hasBlessing(player, "BlessingMechanic")) { + TileEntity te = player.worldObj.getTileEntity(x, y, z); - player.worldObj.setBlockToAir( - blockX, - blockY, - blockZ); - - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7c\u00A7oYou failed to disarm the trap."); - - if (CommonTickHandler.worldData - .getDisadvantage() - .equals("Explosive Traps")) { - player.worldObj.setBlockToAir( - blockX, - blockY, - blockZ); - player.worldObj.createExplosion( - null, - blockX + 0.5F, - blockY + 0.5F, - blockZ + 0.5F, - 1.33F, - true); - } - player.triggerAchievement( - ModjamMod.whoops); - } - } + if (te != null && te instanceof TileEntityTrap) { + SEND_MESSAGE.sendToPlayer(player, "\u00A7e\u00A7oYou disarm and salvage the trap."); - @Override - public Class[] getExpectedClasses() { - return new Class[] { - Integer.class, - Integer.class, - Integer.class, - Boolean.class - }; - } - }, - - EXAMINE_MOB = new BasicPacket(8) { - @Override - public void executeServer( - EntityPlayer player) { - int dimension = (Integer) data[0]; - int entityID = (Integer) data[1]; - - WorldServer server = null; - - for (WorldServer s : MinecraftServer - .getServer().worldServers) { - if (s.provider.dimensionId == dimension) { - server = s; - break; - } - } + player.worldObj.spawnEntityInWorld(new EntityItem(player.worldObj, x + 0.5F, y, + z + 0.5F, new ItemStack(ModjamMod.itemTrap, 1, + player.worldObj.getBlockMetadata(x, y, z) % BlockTrap.trapTypes))); + player.worldObj.setBlockToAir(x, y, z); - if (server != null) { - Entity entity = server - .getEntityByID(entityID); - - if (entity != null) { - String blessing2 = entity - .getEntityData() - .hasKey("Blessing") - ? entity.getEntityData() - .getString("Blessing") - : null; - - if (blessing2 != null) { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7eYou notice " - + entity.getCommandSenderName() - + "\u00A7e is using " - + BlessingUtils.getBlessingInstance( - blessing2) - .customName() - + "."); + EntityStatHelper.giveStat(player, "BlessingCooldown", 24000 - (time % 24000)); } else { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7eThere doesn't seem to be anything special about " - + (entity instanceof EntityPlayer - ? "" - : "this ") - + entity.getCommandSenderName() - + "\u00A7e."); + SEND_MESSAGE.sendToPlayer(player, "\u00A7e\u00A7oNo selected trap."); } } } - } - - @Override - public Class[] getExpectedClasses() { - return new Class[] { - Integer.class, - Integer.class - }; - } - }, - - LEVEL_UP = new BasicPacket(9) { - @Override - public void executeBoth( - EntityPlayer player) { - player.addExperienceLevel( - (Integer) data[0]); - } - - @Override - public Class[] getExpectedClasses() { - return new Class[] { - Integer.class - }; - } - }, - - ACTIVATE_BLESSING = new BasicPacket(10) { - @Override - public void executeServer( - EntityPlayer player) { - - int x = (Integer) data[0], - y = (Integer) data[1], - z = (Integer) data[2]; - - boolean blessingActive = EntityStatHelper - .hasStat(player, "BlessingActive") - ? Boolean.parseBoolean( - EntityStatHelper.getStat( - player, - "BlessingActive")) - : false; - - if (!EntityStatHelper.hasStat( - player, - "BlessingCooldown")) { - EntityStatHelper.giveStat( - player, - "BlessingCooldown", - 0); - } + } else { + blessingActive = false; - long time = (CommonTickHandler.worldData != null - && CommonTickHandler.worldData - .getDisadvantage() - .equals("Neverending Rain")) - ? player.worldObj - .getTotalWorldTime() - : player.worldObj - .getWorldTime(); - - if (EntityStatHelper.getStat( - player, - "BlessingCooldown") - .equals("0")) { - if (!blessingActive) { - if (BlessingUtils - .hasBlessing(player)) { - if (BlessingUtils - .hasBlessing(player, - "BlessingBerserker")) { - if (hasBlessingCounters( - player)) { - blessingActive = true; - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7cYou enter berserk mode."); - } else { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7cYou have no berserk counters."); - } - } else if (BlessingUtils - .hasBlessing(player, - "BlessingMechanic")) { - TileEntity te = player.worldObj - .getTileEntity(x, - y, - z); - - if (te != null && te instanceof TileEntityTrap) { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7e\u00A7oYou disarm and salvage the trap."); - - player.worldObj.spawnEntityInWorld( - new EntityItem(player.worldObj, - x + 0.5F, - y, - z + 0.5F, - new ItemStack(ModjamMod.itemTrap, - 1, - player.worldObj.getBlockMetadata( - x, - y, - z) - % BlockTrap.trapTypes))); - player.worldObj.setBlockToAir( - x, - y, - z); - - EntityStatHelper.giveStat( - player, - "BlessingCooldown", - 24000 - (time % 24000)); - } else { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7e\u00A7oNo selected trap."); - } - } - } - } else { - blessingActive = false; - - if (BlessingUtils - .hasBlessing(player)) { - if (BlessingUtils - .hasBlessing(player, - "BlessingBerserker")) { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7cYou calm down."); - - EntityStatHelper.giveStat( - player, - "BlessingCooldown", - 1200); - } - } + if (BlessingUtils.hasBlessing(player)) { + if (BlessingUtils.hasBlessing(player, "BlessingBerserker")) { + SEND_MESSAGE.sendToPlayer(player, "\u00A7cYou calm down."); - EntityStatHelper.giveStat( - player, - "BlessingTimer", - 0); + EntityStatHelper.giveStat(player, "BlessingCooldown", 1200); } - } else { - SEND_MESSAGE.sendToPlayer( - player, - "\u00A7cBlessing is on cooldown. (" - + (Integer.parseInt( - EntityStatHelper.getStat( - player, - "BlessingCooldown"))) - / 20 - + "s)"); } - EntityStatHelper.giveStat(player, - "BlessingActive", - blessingActive); + EntityStatHelper.giveStat(player, "BlessingTimer", 0); } + } else { + SEND_MESSAGE.sendToPlayer(player, "\u00A7cBlessing is on cooldown. (" + + (Integer.parseInt(EntityStatHelper.getStat(player, "BlessingCooldown"))) / 20 + "s)"); + } - private boolean hasBlessingCounters( - EntityPlayer player) { - return EntityStatHelper.hasStat( - player, - "BlessingCounter") - && Integer.parseInt( - EntityStatHelper.getStat( - player, - "BlessingCounter")) > 0; - } + EntityStatHelper.giveStat(player, "BlessingActive", blessingActive); + } - @Override - public Class[] getExpectedClasses() { - return new Class[] { - Integer.class, - Integer.class, - Integer.class - }; - } - }, - - UPDATE_STAT = new BasicPacket(11) { - @Override - public void executeBoth( - EntityPlayer player) { - EntityStatHelper.giveStat(player, - (String) data[0], - data[1]); - } + private boolean hasBlessingCounters(EntityPlayer player) { + return EntityStatHelper.hasStat(player, "BlessingCounter") + && Integer.parseInt(EntityStatHelper.getStat(player, "BlessingCounter")) > 0; + } - @Override - public Class[] getExpectedClasses() { - return new Class[] { - String.class, - String.class - }; - } - }; -} + @Override + public Class[] getExpectedClasses() { + return new Class[] { Integer.class, Integer.class, Integer.class }; + } + }; + + public final static BasicPacket UPDATE_STAT = new BasicPacket(11) { + @Override + public void executeBoth(EntityPlayer player) { + EntityStatHelper.giveStat(player, (String) data[0], data[1]); + } + + @Override + public Class[] getExpectedClasses() { + return new Class[] { String.class, String.class }; + } + }; +} \ No newline at end of file -- cgit v1.2.3