diff --git a/block/misc/BlockCharger.java b/block/misc/BlockCharger.java index 35bc4913f..a36174171 100644 --- a/block/misc/BlockCharger.java +++ b/block/misc/BlockCharger.java @@ -24,6 +24,8 @@ import appeng.helpers.ICustomCollision; import appeng.tile.AEBaseTile; import appeng.tile.misc.TileCharger; import appeng.util.Platform; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class BlockCharger extends AEBaseBlock implements ICustomCollision { @@ -62,6 +64,7 @@ public class BlockCharger extends AEBaseBlock implements ICustomCollision } @Override + @SideOnly(Side.CLIENT) public void randomDisplayTick(World w, int x, int y, int z, Random r) { if ( !Configuration.instance.enableEffects ) diff --git a/client/ClientHelper.java b/client/ClientHelper.java index 9cd3d6e90..c82b0ce68 100644 --- a/client/ClientHelper.java +++ b/client/ClientHelper.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; @@ -14,6 +15,7 @@ import appeng.block.AEBaseBlock; import appeng.client.render.BaseBlockRender; import appeng.client.render.TESRWrapper; import appeng.client.render.WorldRender; +import appeng.client.render.effects.LightningEffect; import appeng.client.render.entity.RenderTinyTNTPrimed; import appeng.client.texture.CableBusTextures; import appeng.client.texture.ExtraTextures; @@ -78,4 +80,11 @@ public class ClientHelper extends ServerHelper return super.getPlayers(); } + @Override + public void spawnLightning(World worldObj, double posX, double posY, double posZ) + { + LightningEffect fx = new LightningEffect( worldObj, posX, posY + 0.3f, posZ, 0.0f, 0.0f, 0.0f ); + Minecraft.getMinecraft().effectRenderer.addEffect( (EntityFX) fx ); + } + } \ No newline at end of file diff --git a/client/render/effects/LightningEffect.java b/client/render/effects/LightningEffect.java index 182db44ab..9e5c0d81b 100644 --- a/client/render/effects/LightningEffect.java +++ b/client/render/effects/LightningEffect.java @@ -3,9 +3,9 @@ package appeng.client.render.effects; import java.util.Random; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.MathHelper; import net.minecraft.world.World; @@ -81,7 +81,7 @@ public class LightningEffect extends EntityFX double oy = 0; double oz = 0; - EntityClientPlayerMP p = Minecraft.getMinecraft().thePlayer; + EntityPlayer p = Minecraft.getMinecraft().thePlayer; double offX = -rZ; double offY = MathHelper.cos( (float) (Math.PI / 2.0f + p.rotationPitch * 0.017453292F) ); double offZ = rX; diff --git a/core/CommonHelper.java b/core/CommonHelper.java index 0609508c9..b68a98488 100644 --- a/core/CommonHelper.java +++ b/core/CommonHelper.java @@ -24,4 +24,6 @@ public abstract class CommonHelper public abstract void sendToAllNearExcept(EntityPlayer p, double x, double y, double z, double dist, World w, Packet packet); + public abstract void spawnLightning(World worldObj, double posX, double posY, double posZ); + } diff --git a/core/Configuration.java b/core/Configuration.java index 71b0d1692..5db67c881 100644 --- a/core/Configuration.java +++ b/core/Configuration.java @@ -27,8 +27,8 @@ public class Configuration extends net.minecraftforge.common.Configuration imple public String latestVersion = VERSION; public long latestTimeStamp = 0; - public static final String VERSION = "${version}"; - public static final String CHANNEL = "${channel}"; + public static final String VERSION = "@version@"; + public static final String CHANNEL = "@aechannel@"; public final static String PACKET_CHANNEL = "AE"; diff --git a/entity/EntityChargedQuartz.java b/entity/EntityChargedQuartz.java index 1d09c40cc..6aff96c24 100644 --- a/entity/EntityChargedQuartz.java +++ b/entity/EntityChargedQuartz.java @@ -4,8 +4,6 @@ import java.util.ArrayList; import java.util.List; import net.minecraft.block.material.Material; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.EntityFX; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.Item; @@ -14,7 +12,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import appeng.api.AEApi; -import appeng.client.render.effects.LightningEffect; +import appeng.core.CommonHelper; import appeng.core.Configuration; import appeng.util.Platform; @@ -39,9 +37,8 @@ final public class EntityChargedQuartz extends EntityItem if ( Platform.isClient() && delay++ > 30 && Configuration.instance.enableEffects ) { + CommonHelper.proxy.spawnLightning( worldObj, posX, posY, posZ ); delay = 0; - LightningEffect fx = new LightningEffect( worldObj, posX, posY + 0.3f, posZ, 0.0f, 0.0f, 0.0f ); - Minecraft.getMinecraft().effectRenderer.addEffect( (EntityFX) fx ); } int j = MathHelper.floor_double( this.posX ); diff --git a/fmp/CableBusPart.java b/fmp/CableBusPart.java index 5c0b58ccf..e00babc41 100644 --- a/fmp/CableBusPart.java +++ b/fmp/CableBusPart.java @@ -6,6 +6,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.ArrayList; +import java.util.EnumSet; import java.util.LinkedList; import java.util.List; @@ -17,13 +18,16 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; +import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import powercrystals.minefactoryreloaded.api.rednet.RedNetConnectionType; import appeng.api.networking.IGridNode; import appeng.api.parts.IFacadeContainer; import appeng.api.parts.IPart; import appeng.api.parts.IPartCollsionHelper; import appeng.api.parts.IPartHost; import appeng.api.parts.IPartItem; +import appeng.api.parts.PartItemStack; import appeng.api.parts.SelectedPart; import appeng.api.util.AECableType; import appeng.api.util.AEColor; @@ -181,7 +185,7 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IReds if ( sp != null ) { if ( sp.part != null ) - return sp.part.getItemStack( false ); + return sp.part.getItemStack( PartItemStack.Break ); if ( sp.facade != null ) return sp.facade.getItemStack(); } @@ -218,7 +222,7 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IReds @Override public boolean canConnectRedstone(int side) { - return cb.canConnectRedstone( ForgeDirection.getOrientation( side ) ); + return cb.canConnectRedstone( EnumSet.of( ForgeDirection.getOrientation( side ) ) ); } @Override @@ -299,9 +303,9 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IReds } @Override - public ForgeDirection addPart(ItemStack is, ForgeDirection side) + public ForgeDirection addPart(ItemStack is, ForgeDirection side, EntityPlayer owner) { - return cb.addPart( is, side ); + return cb.addPart( is, side, owner ); } @Override @@ -311,9 +315,9 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IReds } @Override - public void removePart(ForgeDirection side) + public void removePart(ForgeDirection side, boolean supressUpdate) { - cb.removePart( side ); + cb.removePart( side, supressUpdate ); } boolean canUpdate = false; @@ -433,4 +437,46 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IReds return cb.hasRedstone( side ); } + @Override + public void securityBreak() + { + cb.securityBreak(); + } + + @Override + public RedNetConnectionType getConnectionType(World world, int x, int y, int z, ForgeDirection side) + { + return cb.getConnectionType( world, x, y, z, side ); + } + + @Override + public int[] getOutputValues(World world, int x, int y, int z, ForgeDirection side) + { + return cb.getOutputValues( world, x, y, z, side ); + } + + @Override + public int getOutputValue(World world, int x, int y, int z, ForgeDirection side, int subnet) + { + return cb.getOutputValue( world, x, y, z, side, subnet ); + } + + @Override + public void onInputsChanged(World world, int x, int y, int z, ForgeDirection side, int[] inputValues) + { + cb.onInputsChanged( world, x, y, z, side, inputValues ); + } + + @Override + public void onInputChanged(World world, int x, int y, int z, ForgeDirection side, int inputValue) + { + cb.onInputChanged( world, x, y, z, side, inputValue ); + } + + @Override + public boolean isEmpty() + { + return cb.isEmpty(); + } + } diff --git a/integration/modules/helpers/NEICraftingTerminalOverlayHandler.java b/integration/modules/helpers/NEICraftingTerminalOverlayHandler.java deleted file mode 100644 index 25a0626fb..000000000 --- a/integration/modules/helpers/NEICraftingTerminalOverlayHandler.java +++ /dev/null @@ -1,84 +0,0 @@ -package appeng.integration.modules.helpers; - -import java.util.LinkedList; -import java.util.List; - -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; -import appeng.container.slot.SlotCraftingMatrix; -import codechicken.nei.PositionedStack; -import codechicken.nei.api.IOverlayHandler; -import codechicken.nei.recipe.IRecipeHandler; -import cpw.mods.fml.common.network.PacketDispatcher; - -public class NEICraftingTerminalOverlayHandler implements IOverlayHandler -{ - - public NEICraftingTerminalOverlayHandler(int x, int y) { - offsetx = x; - offsety = y; - } - - int offsetx; - int offsety; - - // @override - public void overlayRecipe(GuiContainer gui, IRecipeHandler recipe, int recipeIndex, boolean shift) - { - try - { - List ingredients = recipe.getIngredientStacks( recipeIndex ); - overlayRecipe( gui, ingredients, shift ); - } - catch (Exception err) - { - } - catch (Error err) - { - } - } - - // @override - public void overlayRecipe(GuiContainer gui, List ingredients, boolean shift) - { - try - { - NBTTagCompound recipe = new NBTTagCompound(); - - if ( gui instanceof GuiTerminal ) - { - for (int i = 0; i < ingredients.size(); i++)// identify slots - { - LinkedList recipeSlots = new LinkedList(); - PositionedStack pstack = ingredients.get( i ); - if ( pstack.item != null ) - { - for (Slot slot : (List) gui.inventorySlots.inventorySlots) - { - if ( slot.xDisplayPosition == pstack.relx + offsetx && slot.yDisplayPosition == pstack.rely + offsety ) - { - if ( slot instanceof SlotCraftingMatrix ) - { - NBTTagCompound inbt = new NBTTagCompound(); - pstack.item.writeToNBT( inbt ); - recipe.setCompoundTag( "#" + ((SlotCraftingMatrix) slot).matrixID, inbt ); - break; - } - } - } - } - } - - PacketDispatcher.sendPacketToServer( (new PacketNEIRecipe( recipe )).getPacket() ); - } - } - catch (Exception err) - { - } - catch (Error err) - { - } - } - -} diff --git a/items/tools/powered/powersink/AEBasePoweredItem.java b/items/tools/powered/powersink/AEBasePoweredItem.java index ba5feb970..d5a0650e2 100644 --- a/items/tools/powered/powersink/AEBasePoweredItem.java +++ b/items/tools/powered/powersink/AEBasePoweredItem.java @@ -1,6 +1,6 @@ package appeng.items.tools.powered.powersink; -public class AEBasePoweredItem extends UniversalElectricity +public class AEBasePoweredItem extends ThermalExpansion { public AEBasePoweredItem(Class c, String subname) { diff --git a/items/tools/powered/powersink/IC2.java b/items/tools/powered/powersink/IC2.java index b58d2d535..0bddec1c3 100644 --- a/items/tools/powered/powersink/IC2.java +++ b/items/tools/powered/powersink/IC2.java @@ -4,7 +4,9 @@ import ic2.api.item.IElectricItemManager; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import appeng.api.config.PowerUnits; +import cpw.mods.fml.common.Optional.Interface; +@Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2") public class IC2 extends AERootPoweredItem implements IElectricItemManager { diff --git a/items/tools/powered/powersink/ThermalExpansion.java b/items/tools/powered/powersink/ThermalExpansion.java index dda171048..bc2113190 100644 --- a/items/tools/powered/powersink/ThermalExpansion.java +++ b/items/tools/powered/powersink/ThermalExpansion.java @@ -3,7 +3,9 @@ package appeng.items.tools.powered.powersink; import net.minecraft.item.ItemStack; import appeng.api.config.PowerUnits; import cofh.api.energy.IEnergyContainerItem; +import cpw.mods.fml.common.Optional.Interface; +@Interface(iface = "cofh.api.energy.IEnergyContainerItem", modid = "ThermalExpansion") public class ThermalExpansion extends IC2 implements IEnergyContainerItem { diff --git a/items/tools/powered/powersink/UniversalElectricity.java b/items/tools/powered/powersink/UniversalElectricity.java index 408199ca7..c9b3f4f0c 100644 --- a/items/tools/powered/powersink/UniversalElectricity.java +++ b/items/tools/powered/powersink/UniversalElectricity.java @@ -1,61 +1,37 @@ package appeng.items.tools.powered.powersink; -import net.minecraft.item.ItemStack; -import universalelectricity.core.item.IItemElectric; -import appeng.api.config.PowerUnits; +/* + @Interface(iface = "universalelectricity.core.item.IItemElectric", modid = "IC2") + public class UniversalElectricity extends ThermalExpansion implements IItemElectric + { + * + * public UniversalElectricity(Class c, String subname) { super( c, subname ); } + * + * @Override public float recharge(ItemStack is, float energy, boolean + * doRecharge) { return (float) (energy - injectExternalPower( PowerUnits.KJ, + * is, energy, !doRecharge )); } + * + * @Override public float discharge(ItemStack is, float energy, boolean + * doDischarge) { return 0; } + * + * @Override public float getElectricityStored(ItemStack is) { return (int) + * PowerUnits.AE.convertTo( PowerUnits.KJ, getAECurrentPower( is ) ); } + * + * @Override public float getMaxElectricityStored(ItemStack is) { return (int) + * PowerUnits.AE.convertTo( PowerUnits.KJ, getAEMaxPower( is ) ); } + * + * @Override public void setElectricity(ItemStack is, float joules) { double + * currentPower = getAECurrentPower( is ); double targetPower = + * PowerUnits.KJ.convertTo( PowerUnits.AE, joules ); if ( targetPower > + * currentPower ) injectAEPower( is, targetPower - currentPower ); else + * extractAEPower( is, currentPower - targetPower ); } + * + * @Override public float getTransfer(ItemStack is) { return (float) + * PowerUnits.AE.convertTo( PowerUnits.KJ, getAEMaxPower( is ) - + * getAECurrentPower( is ) ); } + * + * @Override public float getVoltage(ItemStack itemStack) { return 120; } -public class UniversalElectricity extends ThermalExpansion implements IItemElectric -{ + } + */ - public UniversalElectricity(Class c, String subname) { - super( c, subname ); - } - - @Override - public float recharge(ItemStack is, float energy, boolean doRecharge) - { - return (float) (energy - injectExternalPower( PowerUnits.KJ, is, energy, !doRecharge )); - } - - @Override - public float discharge(ItemStack is, float energy, boolean doDischarge) - { - return 0; - } - - @Override - public float getElectricityStored(ItemStack is) - { - return (int) PowerUnits.AE.convertTo( PowerUnits.KJ, getAECurrentPower( is ) ); - } - - @Override - public float getMaxElectricityStored(ItemStack is) - { - return (int) PowerUnits.AE.convertTo( PowerUnits.KJ, getAEMaxPower( is ) ); - } - - @Override - public void setElectricity(ItemStack is, float joules) - { - double currentPower = getAECurrentPower( is ); - double targetPower = PowerUnits.KJ.convertTo( PowerUnits.AE, joules ); - if ( targetPower > currentPower ) - injectAEPower( is, targetPower - currentPower ); - else - extractAEPower( is, currentPower - targetPower ); - } - - @Override - public float getTransfer(ItemStack is) - { - return (float) PowerUnits.AE.convertTo( PowerUnits.KJ, getAEMaxPower( is ) - getAECurrentPower( is ) ); - } - - @Override - public float getVoltage(ItemStack itemStack) - { - return 120; - } - -} diff --git a/parts/p2p/PartP2PBCPower.java b/parts/p2p/PartP2PBCPower.java index 1d2d62206..aab6182e7 100644 --- a/parts/p2p/PartP2PBCPower.java +++ b/parts/p2p/PartP2PBCPower.java @@ -20,9 +20,11 @@ import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; import buildcraft.api.power.PowerHandler.Type; +import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +@Interface(iface = "buildcraft.api.power.IPowerReceptor", modid = "BuildCraftAPI|core") public class PartP2PBCPower extends PartP2PTunnel implements IPowerReceptor, IGridTickable { @@ -98,7 +100,8 @@ public class PartP2PBCPower extends PartP2PTunnel implements IPo PowerReceiver tp = target.getPowerReceiver( side.getOpposite() ); if ( tp != null ) { - float howmuch = tp.powerRequest(); // orientation.getOpposite() ); + float howmuch = tp.powerRequest(); // orientation.getOpposite() + // ); if ( howmuch > tp.getMaxEnergyReceived() ) howmuch = tp.getMaxEnergyReceived(); diff --git a/parts/p2p/PartP2PIC2Power.java b/parts/p2p/PartP2PIC2Power.java index 845897aab..91456ae3b 100644 --- a/parts/p2p/PartP2PIC2Power.java +++ b/parts/p2p/PartP2PIC2Power.java @@ -12,9 +12,12 @@ import appeng.api.config.TunnelType; import appeng.me.GridAccessException; import appeng.me.cache.helpers.TunnelCollection; import appeng.util.Platform; +import cpw.mods.fml.common.Optional.Interface; +import cpw.mods.fml.common.Optional.InterfaceList; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +@InterfaceList(value = { @Interface(iface = "ic2.api.energy.tile.IEnergySink", modid = "IC2"), @Interface(iface = "ic2.api.energy.tile.IEnergySource", modid = "IC2") }) public class PartP2PIC2Power extends PartP2PTunnel implements ic2.api.energy.tile.IEnergySink, ic2.api.energy.tile.IEnergySource { diff --git a/parts/p2p/PartP2PItems.java b/parts/p2p/PartP2PItems.java index a59871f96..8740f44c6 100644 --- a/parts/p2p/PartP2PItems.java +++ b/parts/p2p/PartP2PItems.java @@ -26,9 +26,11 @@ import appeng.util.inv.WrapperMCISidedInventory; import appeng.util.inv.WrapperTEPipe; import buildcraft.api.transport.IPipeConnection; import buildcraft.api.transport.IPipeTile.PipeType; +import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +@Interface(iface = "buildcraft.api.transport.IPipeConnection", modid = "BuildCraftAPI|transport") public class PartP2PItems extends PartP2PTunnel implements IPipeConnection, IInventory, ISidedInventory { diff --git a/server/ServerHelper.java b/server/ServerHelper.java index 2ea7705a2..58340bcae 100644 --- a/server/ServerHelper.java +++ b/server/ServerHelper.java @@ -72,4 +72,10 @@ public class ServerHelper extends CommonHelper throw new RuntimeException( "This is a server..." ); } + @Override + public void spawnLightning(World worldObj, double posX, double posY, double posZ) + { + // :P + } + }