Removed World from WorldPos, renamed it to Position.

That fixed loads of issues.
This commit is contained in:
Ellpeck 2015-12-23 01:43:49 +01:00
parent ed2bbe226a
commit 8b20fc066e
30 changed files with 254 additions and 264 deletions

View file

@ -14,7 +14,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.blocks.base.BlockBase;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPistonBase;
@ -85,15 +85,15 @@ public class BlockLampPowerer extends BlockBase{
private void updateLamp(World world, int x, int y, int z){
if(!world.isRemote){
WorldPos coords = WorldUtil.getCoordsFromSide(ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)), world, x, y, z, 0);
if(coords != null && coords.getBlock() instanceof BlockColoredLamp){
Position coords = WorldUtil.getCoordsFromSide(ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)), x, y, z, 0);
if(coords != null && coords.getBlock(world) instanceof BlockColoredLamp){
if(world.isBlockIndirectlyGettingPowered(x, y, z)){
if(!((BlockColoredLamp)coords.getBlock()).isOn){
if(!((BlockColoredLamp)coords.getBlock(world)).isOn){
world.setBlock(coords.getX(), coords.getY(), coords.getZ(), InitBlocks.blockColoredLampOn, world.getBlockMetadata(coords.getX(), coords.getY(), coords.getZ()), 2);
}
}
else{
if(((BlockColoredLamp)coords.getBlock()).isOn){
if(((BlockColoredLamp)coords.getBlock(world)).isOn){
world.setBlock(coords.getX(), coords.getY(), coords.getZ(), InitBlocks.blockColoredLamp, world.getBlockMetadata(coords.getX(), coords.getY(), coords.getZ()), 2);
}
}

View file

@ -126,8 +126,8 @@ public class BlockPhantom extends BlockContainerBase implements IHudDisplay{
minecraft.fontRenderer.drawStringWithShadow(EnumChatFormatting.GOLD+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".blockPhantomRange.desc")+": "+phantom.getRange(), resolution.getScaledWidth()/2+5, resolution.getScaledHeight()/2-40, StringUtil.DECIMAL_COLOR_WHITE);
if(phantom.hasBoundPosition()){
int distance = (int)Vec3.createVectorHelper(posHit.blockX, posHit.blockY, posHit.blockZ).distanceTo(Vec3.createVectorHelper(phantom.getBoundPosition().getX(), phantom.getBoundPosition().getY(), phantom.getBoundPosition().getZ()));
Item item = phantom.getBoundPosition().getItemBlock();
String name = item == null ? "Absolutely Nothing" : item.getItemStackDisplayName(new ItemStack(phantom.getBoundPosition().getBlock(), 1, phantom.getBoundPosition().getMetadata()));
Item item = phantom.getBoundPosition().getItemBlock(minecraft.theWorld);
String name = item == null ? "Absolutely Nothing" : item.getItemStackDisplayName(new ItemStack(phantom.getBoundPosition().getBlock(minecraft.theWorld), 1, phantom.getBoundPosition().getMetadata(minecraft.theWorld)));
StringUtil.drawSplitStringWithShadow(minecraft.fontRenderer, StringUtil.localizeFormatted("tooltip."+ModUtil.MOD_ID_LOWER+".phantom.blockInfo.desc", name, phantom.getBoundPosition().getX(), phantom.getBoundPosition().getY(), phantom.getBoundPosition().getZ(), distance), resolution.getScaledWidth()/2+5, resolution.getScaledHeight()/2-30, 200, StringUtil.DECIMAL_COLOR_WHITE);
if(phantom.isBoundThingInRange()){

View file

@ -14,8 +14,8 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.items.base.ItemEnergy;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.block.BlockGrass;
import net.minecraft.block.IGrowable;
@ -49,7 +49,7 @@ public class ItemGrowthRing extends ItemEnergy{
int energyUse = 550;
if(equipped != null && equipped == stack && this.getEnergyStored(stack) >= energyUse){
ArrayList<WorldPos> blocks = new ArrayList<WorldPos>();
ArrayList<Position> blocks = new ArrayList<Position>();
if(stack.stackTagCompound == null){
stack.setTagCompound(new NBTTagCompound());
@ -67,7 +67,7 @@ public class ItemGrowthRing extends ItemEnergy{
int theZ = MathHelper.floor_double(player.posZ+z);
Block theBlock = world.getBlock(theX, theY, theZ);
if((theBlock instanceof IGrowable || theBlock instanceof IPlantable) && !(theBlock instanceof BlockGrass)){
blocks.add(new WorldPos(world, theX, theY, theZ));
blocks.add(new Position(theX, theY, theZ));
}
}
}
@ -76,14 +76,14 @@ public class ItemGrowthRing extends ItemEnergy{
//Fertilizing the Blocks
if(!blocks.isEmpty()){
for(int i = 0; i < 45; i++){
WorldPos pos = blocks.get(Util.RANDOM.nextInt(blocks.size()));
Position pos = blocks.get(Util.RANDOM.nextInt(blocks.size()));
int metaBefore = pos.getMetadata();
pos.getBlock().updateTick(world, pos.getX(), pos.getY(), pos.getZ(), Util.RANDOM);
int metaBefore = pos.getMetadata(world);
pos.getBlock(world).updateTick(world, pos.getX(), pos.getY(), pos.getZ(), Util.RANDOM);
//Show Particles if Metadata changed
if(pos.getMetadata() != metaBefore){
pos.getWorld().playAuxSFX(2005, pos.getX(), pos.getY(), pos.getZ(), 0);
if(pos.getMetadata(world) != metaBefore){
world.playAuxSFX(2005, pos.getX(), pos.getY(), pos.getZ(), 0);
}
}
}

View file

@ -16,8 +16,8 @@ import ellpeck.actuallyadditions.items.base.ItemBase;
import ellpeck.actuallyadditions.misc.LaserRelayConnectionHandler;
import ellpeck.actuallyadditions.tile.TileEntityLaserRelay;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.StringUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
@ -48,13 +48,13 @@ public class ItemLaserWrench extends ItemBase{
player.addChatComponentMessage(new ChatComponentText(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".laser.stored.desc")));
}
else{
WorldPos savedPos = ItemPhantomConnector.getStoredPosition(stack);
WorldPos otherPos = new WorldPos(world, x, y, z);
if(savedPos.getTileEntity() instanceof TileEntityLaserRelay && LaserRelayConnectionHandler.getInstance().addConnection(savedPos, otherPos)){
Position savedPos = ItemPhantomConnector.getStoredPosition(stack);
Position otherPos = new Position(x, y, z);
if(ItemPhantomConnector.getStoredWorld(stack) == world && savedPos.getTileEntity(world) instanceof TileEntityLaserRelay && LaserRelayConnectionHandler.getInstance().addConnection(savedPos, otherPos)){
ItemPhantomConnector.clearStorage(stack);
((TileEntityLaserRelay)savedPos.getTileEntity()).sendUpdate();
((TileEntityLaserRelay)otherPos.getTileEntity()).sendUpdate();
((TileEntityLaserRelay)savedPos.getTileEntity(world)).sendUpdate();
((TileEntityLaserRelay)otherPos.getTileEntity(world)).sendUpdate();
player.addChatComponentMessage(new ChatComponentText(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".laser.connected.desc")));
}
@ -84,13 +84,12 @@ public class ItemLaserWrench extends ItemBase{
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){
WorldPos coords = ItemPhantomConnector.getStoredPosition(stack);
Position coords = ItemPhantomConnector.getStoredPosition(stack);
if(coords != null){
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".boundTo.desc")+":");
list.add("X: "+coords.getX());
list.add("Y: "+coords.getY());
list.add("Z: "+coords.getZ());
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".inWorld.desc")+" "+coords.getWorldID());
list.add(EnumChatFormatting.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".clearStorage.desc"));
}
}

View file

@ -15,7 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.config.values.ConfigBoolValues;
import ellpeck.actuallyadditions.items.base.ItemBase;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import net.minecraft.block.Block;
import net.minecraft.block.BlockBush;
import net.minecraft.client.renderer.texture.IIconRegister;
@ -92,7 +92,7 @@ public class ItemLeafBlower extends ItemBase{
* @param z The Z Position of the Player
*/
public void breakStuff(World world, int x, int y, int z){
ArrayList<WorldPos> breakPositions = new ArrayList<WorldPos>();
ArrayList<Position> breakPositions = new ArrayList<Position>();
int rangeSides = 5;
int rangeUp = 1;
@ -102,7 +102,7 @@ public class ItemLeafBlower extends ItemBase{
//The current Block to break
Block block = world.getBlock(x+reachX, y+reachY, z+reachZ);
if(block != null && (block instanceof BlockBush || (this.isAdvanced && block.isLeaves(world, x+reachX, y+reachY, z+reachZ)))){
breakPositions.add(new WorldPos(world, x+reachX, y+reachY, z+reachZ));
breakPositions.add(new Position(x+reachX, y+reachY, z+reachZ));
}
}
}
@ -111,7 +111,7 @@ public class ItemLeafBlower extends ItemBase{
if(!breakPositions.isEmpty()){
Collections.shuffle(breakPositions);
WorldPos theCoord = breakPositions.get(0);
Position theCoord = breakPositions.get(0);
Block theBlock = world.getBlock(theCoord.getX(), theCoord.getY(), theCoord.getZ());
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();

View file

@ -16,8 +16,8 @@ import ellpeck.actuallyadditions.items.base.ItemBase;
import ellpeck.actuallyadditions.tile.IPhantomTile;
import ellpeck.actuallyadditions.tile.TileEntityBase;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.StringUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
@ -29,6 +29,7 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
import java.util.List;
@ -47,7 +48,7 @@ public class ItemPhantomConnector extends ItemBase{
if(tile != null){
//Passing to Phantom
if(tile instanceof IPhantomTile){
if(this.checkHasConnection(stack, player, tile)){
if(this.checkHasConnection(stack, player, tile) && getStoredWorld(stack) == world){
((IPhantomTile)tile).setBoundPosition(getStoredPosition(stack));
if(tile instanceof TileEntityBase){
((TileEntityBase)tile).sendUpdate();
@ -79,20 +80,27 @@ public class ItemPhantomConnector extends ItemBase{
}
}
public static WorldPos getStoredPosition(ItemStack stack){
public static Position getStoredPosition(ItemStack stack){
NBTTagCompound tag = stack.getTagCompound();
if(tag != null){
int x = tag.getInteger("XCoordOfTileStored");
int y = tag.getInteger("YCoordOfTileStored");
int z = tag.getInteger("ZCoordOfTileStored");
int world = tag.getInteger("WorldOfTileStored");
if(!(x == 0 && y == 0 && z == 0)){
return new WorldPos(world, x, y, z);
return new Position(x, y, z);
}
}
return null;
}
public static World getStoredWorld(ItemStack stack){
NBTTagCompound tag = stack.getTagCompound();
if(tag != null){
return DimensionManager.getWorld(tag.getInteger("WorldOfTileStored"));
}
return null;
}
public static void clearStorage(ItemStack stack){
stack.setTagCompound(new NBTTagCompound());
}
@ -127,13 +135,12 @@ public class ItemPhantomConnector extends ItemBase{
@SuppressWarnings("unchecked")
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld){
WorldPos coords = getStoredPosition(stack);
Position coords = getStoredPosition(stack);
if(coords != null){
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".boundTo.desc")+":");
list.add("X: "+coords.getX());
list.add("Y: "+coords.getY());
list.add("Z: "+coords.getZ());
list.add(StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".inWorld.desc")+" "+coords.getWorldID());
list.add(EnumChatFormatting.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".clearStorage.desc"));
}
}

View file

@ -11,14 +11,14 @@
package ellpeck.actuallyadditions.items.lens;
import ellpeck.actuallyadditions.tile.TileEntityAtomicReconstructor;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import net.minecraft.item.Item;
public abstract class Lens{
protected Item lensItem;
public abstract boolean invoke(WorldPos hitBlock, TileEntityAtomicReconstructor tile);
public abstract boolean invoke(Position hitBlock, TileEntityAtomicReconstructor tile);
public abstract float[] getColor();

View file

@ -12,8 +12,8 @@ package ellpeck.actuallyadditions.items.lens;
import ellpeck.actuallyadditions.blocks.InitBlocks;
import ellpeck.actuallyadditions.tile.TileEntityAtomicReconstructor;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.init.Blocks;
@ -53,15 +53,15 @@ public class LensColor extends Lens{
@SuppressWarnings("unchecked")
@Override
public boolean invoke(WorldPos hitBlock, TileEntityAtomicReconstructor tile){
public boolean invoke(Position hitBlock, TileEntityAtomicReconstructor tile){
if(hitBlock != null){
if(Util.arrayContains(CONVERTABLE_BLOCKS, hitBlock.getBlock()) >= 0 && tile.storage.getEnergyStored() >= ENERGY_USE){
int meta = hitBlock.getMetadata();
if(Util.arrayContains(CONVERTABLE_BLOCKS, hitBlock.getBlock(tile.getWorldObj())) >= 0 && tile.storage.getEnergyStored() >= ENERGY_USE){
int meta = hitBlock.getMetadata(tile.getWorldObj());
if(meta >= 15){
hitBlock.setMetadata(0, 2);
hitBlock.setMetadata(tile.getWorldObj(), 0, 2);
}
else{
hitBlock.setMetadata(meta+1, 2);
hitBlock.setMetadata(tile.getWorldObj(), meta+1, 2);
}
tile.storage.extractEnergy(ENERGY_USE, false);
}

View file

@ -12,7 +12,7 @@ package ellpeck.actuallyadditions.items.lens;
import ellpeck.actuallyadditions.misc.DamageSources;
import ellpeck.actuallyadditions.tile.TileEntityAtomicReconstructor;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.AxisAlignedBB;
@ -22,7 +22,7 @@ public class LensDeath extends Lens{
@SuppressWarnings("unchecked")
@Override
public boolean invoke(WorldPos hitBlock, TileEntityAtomicReconstructor tile){
public boolean invoke(Position hitBlock, TileEntityAtomicReconstructor tile){
int use = 150; //Per Block (because it doesn't only activate when something is hit like the other lenses!)
if(tile.storage.getEnergyStored() >= use){
tile.storage.extractEnergy(use, false);
@ -33,7 +33,7 @@ public class LensDeath extends Lens{
}
}
return hitBlock != null && !hitBlock.getBlock().isAir(hitBlock.getWorld(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ());
return hitBlock != null && !hitBlock.getBlock(tile.getWorldObj()).isAir(tile.getWorldObj(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ());
}
@Override

View file

@ -11,13 +11,13 @@
package ellpeck.actuallyadditions.items.lens;
import ellpeck.actuallyadditions.tile.TileEntityAtomicReconstructor;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
public class LensDetonation extends Lens{
@Override
public boolean invoke(WorldPos hitBlock, TileEntityAtomicReconstructor tile){
if(hitBlock != null && !hitBlock.getBlock().isAir(hitBlock.getWorld(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ())){
public boolean invoke(Position hitBlock, TileEntityAtomicReconstructor tile){
if(hitBlock != null && !hitBlock.getBlock(tile.getWorldObj()).isAir(tile.getWorldObj(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ())){
int use = 500000;
if(tile.storage.getEnergyStored() >= use){
tile.getWorldObj().newExplosion(null, hitBlock.getX()+0.5, hitBlock.getY()+0.5, hitBlock.getZ()+0.5, 10F, true, true);

View file

@ -11,7 +11,7 @@
package ellpeck.actuallyadditions.items.lens;
import ellpeck.actuallyadditions.tile.TileEntityAtomicReconstructor;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemBlock;
@ -25,24 +25,24 @@ public class LensNone extends Lens{
@SuppressWarnings("unchecked")
@Override
public boolean invoke(WorldPos hitBlock, TileEntityAtomicReconstructor tile){
if(hitBlock != null && !hitBlock.getBlock().isAir(hitBlock.getWorld(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ())){
public boolean invoke(Position hitBlock, TileEntityAtomicReconstructor tile){
if(hitBlock != null && !hitBlock.getBlock(tile.getWorldObj()).isAir(tile.getWorldObj(), hitBlock.getX(), hitBlock.getY(), hitBlock.getZ())){
int range = 2;
//Converting the Blocks
for(int reachX = -range; reachX < range+1; reachX++){
for(int reachZ = -range; reachZ < range+1; reachZ++){
for(int reachY = -range; reachY < range+1; reachY++){
WorldPos pos = new WorldPos(tile.getWorldObj(), hitBlock.getX()+reachX, hitBlock.getY()+reachY, hitBlock.getZ()+reachZ);
ArrayList<LensNoneRecipeHandler.Recipe> recipes = LensNoneRecipeHandler.getRecipesFor(new ItemStack(pos.getBlock(), 1, pos.getMetadata()));
Position pos = new Position(hitBlock.getX()+reachX, hitBlock.getY()+reachY, hitBlock.getZ()+reachZ);
ArrayList<LensNoneRecipeHandler.Recipe> recipes = LensNoneRecipeHandler.getRecipesFor(new ItemStack(pos.getBlock(tile.getWorldObj()), 1, pos.getMetadata(tile.getWorldObj())));
for(LensNoneRecipeHandler.Recipe recipe : recipes){
if(recipe != null && tile.storage.getEnergyStored() >= recipe.energyUse){
List<ItemStack> outputs = recipe.getOutputs();
if(outputs != null && !outputs.isEmpty()){
ItemStack output = outputs.get(0);
if(output.getItem() instanceof ItemBlock){
tile.getWorldObj().playAuxSFX(2001, pos.getX(), pos.getY(), pos.getZ(), Block.getIdFromBlock(pos.getBlock())+(pos.getMetadata() << 12));
pos.setBlock(Block.getBlockFromItem(output.getItem()), output.getItemDamage(), 2);
tile.getWorldObj().playAuxSFX(2001, pos.getX(), pos.getY(), pos.getZ(), Block.getIdFromBlock(pos.getBlock(tile.getWorldObj()))+(pos.getMetadata(tile.getWorldObj()) << 12));
pos.setBlock(tile.getWorldObj(), Block.getBlockFromItem(output.getItem()), output.getItemDamage(), 2);
}
else{
EntityItem item = new EntityItem(tile.getWorldObj(), pos.getX()+0.5, pos.getY()+0.5, pos.getZ()+0.5, output.copy());

View file

@ -13,12 +13,13 @@ package ellpeck.actuallyadditions.misc;
import cofh.api.energy.IEnergyReceiver;
import ellpeck.actuallyadditions.config.values.ConfigIntValues;
import ellpeck.actuallyadditions.tile.TileEntityLaserRelay;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import io.netty.util.internal.ConcurrentSet;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class LaserRelayConnectionHandler{
@ -60,7 +61,7 @@ public class LaserRelayConnectionHandler{
/**
* Gets all Connections for a Relay
*/
public ConcurrentSet<ConnectionPair> getConnectionsFor(WorldPos relay){
public ConcurrentSet<ConnectionPair> getConnectionsFor(Position relay){
ConcurrentSet<ConnectionPair> allPairs = new ConcurrentSet<ConnectionPair>();
for(Network aNetwork : this.networks){
for(ConnectionPair pair : aNetwork.connections){
@ -75,7 +76,7 @@ public class LaserRelayConnectionHandler{
/**
* Removes a Relay from its Network
*/
public void removeRelayFromNetwork(WorldPos relay){
public void removeRelayFromNetwork(Position relay){
Network network = this.getNetworkFor(relay);
if(network != null){
//Setup new network (so that splitting a network will cause it to break into two)
@ -93,7 +94,7 @@ public class LaserRelayConnectionHandler{
/**
* Gets a Network for a Relay
*/
public Network getNetworkFor(WorldPos relay){
public Network getNetworkFor(Position relay){
for(Network aNetwork : this.networks){
for(ConnectionPair pair : aNetwork.connections){
if(pair.contains(relay)){
@ -108,9 +109,9 @@ public class LaserRelayConnectionHandler{
* Adds a new connection between two relays
* (Puts it into the correct network!)
*/
public boolean addConnection(WorldPos firstRelay, WorldPos secondRelay){
public boolean addConnection(Position firstRelay, Position secondRelay){
int distance = (int)firstRelay.toVec().distanceTo(secondRelay.toVec());
if(distance > TileEntityLaserRelay.MAX_DISTANCE || firstRelay.isEqual(secondRelay) || firstRelay.getWorld() != secondRelay.getWorld()){
if(distance > TileEntityLaserRelay.MAX_DISTANCE || firstRelay.isEqual(secondRelay)){
return false;
}
@ -160,21 +161,21 @@ public class LaserRelayConnectionHandler{
//System.out.println("Merged Two Networks!");
}
public int transferEnergyToReceiverInNeed(WorldPos energyGottenFrom, Network network, int maxTransfer, boolean simulate){
public int transferEnergyToReceiverInNeed(World world, Position energyGottenFrom, Network network, int maxTransfer, boolean simulate){
int transmitted = 0;
//Go through all of the connections in the network
for(ConnectionPair pair : network.connections){
WorldPos[] relays = new WorldPos[]{pair.firstRelay, pair.secondRelay};
Position[] relays = new Position[]{pair.firstRelay, pair.secondRelay};
//Go through both relays in the connection
for(WorldPos relay : relays){
for(Position relay : relays){
if(relay != null){
//Get every side of the relay
for(int i = 0; i <= 5; i++){
ForgeDirection side = ForgeDirection.getOrientation(i);
//Get the Position at the side
WorldPos pos = WorldUtil.getCoordsFromSide(side, relay.getWorld(), relay.getX(), relay.getY(), relay.getZ(), 0);
Position pos = WorldUtil.getCoordsFromSide(side, relay.getX(), relay.getY(), relay.getZ(), 0);
if(!pos.isEqual(energyGottenFrom)){
TileEntity tile = pos.getTileEntity();
TileEntity tile = pos.getTileEntity(world);
if(tile instanceof IEnergyReceiver && !(tile instanceof TileEntityLaserRelay)){
IEnergyReceiver receiver = (IEnergyReceiver)tile;
if(receiver.canConnectEnergy(side.getOpposite())){
@ -202,26 +203,29 @@ public class LaserRelayConnectionHandler{
public static class ConnectionPair{
public WorldPos firstRelay;
public WorldPos secondRelay;
public Position firstRelay;
public Position secondRelay;
public ConnectionPair(WorldPos firstRelay, WorldPos secondRelay){
public ConnectionPair(Position firstRelay, Position secondRelay){
this.firstRelay = firstRelay;
this.secondRelay = secondRelay;
}
public static ConnectionPair readFromNBT(NBTTagCompound compound){
WorldPos[] pos = new WorldPos[2];
for(int i = 0; i < pos.length; i++){
int anX = compound.getInteger("x"+i);
int aY = compound.getInteger("y"+i);
int aZ = compound.getInteger("z"+i);
pos[i] = new WorldPos(compound.getInteger("world"+i), anX, aY, aZ);
if(compound != null){
Position[] pos = new Position[2];
for(int i = 0; i < pos.length; i++){
int anX = compound.getInteger("x"+i);
int aY = compound.getInteger("y"+i);
int aZ = compound.getInteger("z"+i);
pos[i] = new Position(anX, aY, aZ);
}
return new ConnectionPair(pos[0], pos[1]);
}
return new ConnectionPair(pos[0], pos[1]);
return null;
}
public boolean contains(WorldPos relay){
public boolean contains(Position relay){
return (this.firstRelay != null && this.firstRelay.isEqual(relay)) || (this.secondRelay != null && this.secondRelay.isEqual(relay));
}
@ -233,8 +237,7 @@ public class LaserRelayConnectionHandler{
public NBTTagCompound writeToNBT(){
NBTTagCompound compound = new NBTTagCompound();
for(int i = 0; i < 2; i++){
WorldPos relay = i == 0 ? this.firstRelay : this.secondRelay;
compound.setInteger("world"+i, relay.getWorldID());
Position relay = i == 0 ? this.firstRelay : this.secondRelay;
compound.setInteger("x"+i, relay.getX());
compound.setInteger("y"+i, relay.getY());
compound.setInteger("z"+i, relay.getZ());

View file

@ -10,7 +10,7 @@
package ellpeck.actuallyadditions.tile;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
public interface IPhantomTile{
@ -27,9 +27,9 @@ public interface IPhantomTile{
/**
* @return The position this tile is bound to
*/
WorldPos getBoundPosition();
Position getBoundPosition();
void setBoundPosition(WorldPos pos);
void setBoundPosition(Position pos);
/**
* @return The ID of the GUI it opens, -1 if none

View file

@ -21,7 +21,7 @@ import ellpeck.actuallyadditions.items.lens.Lenses;
import ellpeck.actuallyadditions.network.PacketHandler;
import ellpeck.actuallyadditions.network.PacketParticle;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -73,7 +73,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
Lens currentLens = this.getCurrentLens();
int distance = currentLens.getDistance();
for(int i = 0; i < distance; i++){
WorldPos hitBlock = WorldUtil.getCoordsFromSide(sideToManipulate, worldObj, xCoord, yCoord, zCoord, i);
Position hitBlock = WorldUtil.getCoordsFromSide(sideToManipulate, xCoord, yCoord, zCoord, i);
if(currentLens.invoke(hitBlock, this)){
this.shootLaser(hitBlock.getX(), hitBlock.getY(), hitBlock.getZ(), currentLens);

View file

@ -10,7 +10,7 @@
package ellpeck.actuallyadditions.tile;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
@ -69,7 +69,7 @@ public class TileEntityBreaker extends TileEntityInventoryBase implements IRedst
private void doWork(){
ForgeDirection sideToManipulate = ForgeDirection.getOrientation(worldObj.getBlockMetadata(xCoord, yCoord, zCoord));
WorldPos coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, worldObj, xCoord, yCoord, zCoord, 0);
Position coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, xCoord, yCoord, zCoord, 0);
if(coordsBlock != null){
Block blockToBreak = worldObj.getBlock(coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ());
if(!this.isPlacer && blockToBreak != null && !(blockToBreak instanceof BlockAir) && blockToBreak.getBlockHardness(worldObj, coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ()) > -1.0F){

View file

@ -14,7 +14,7 @@ import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyReceiver;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
@ -66,7 +66,7 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase implem
ForgeDirection sideToManipulate = ForgeDirection.getOrientation(worldObj.getBlockMetadata(xCoord, yCoord, zCoord));
for(int i = 0; i < RANGE; i++){
WorldPos coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, worldObj, xCoord, yCoord, zCoord, i);
Position coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, xCoord, yCoord, zCoord, i);
if(coordsBlock != null){
Block blockToBreak = worldObj.getBlock(coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ());
if(blockToBreak != null && !(blockToBreak instanceof BlockAir) && blockToBreak.getBlockHardness(worldObj, coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ()) > -1.0F){

View file

@ -12,7 +12,7 @@ package ellpeck.actuallyadditions.tile;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@ -56,7 +56,7 @@ public class TileEntityFluidCollector extends TileEntityInventoryBase implements
private void doWork(){
ForgeDirection sideToManipulate = ForgeDirection.getOrientation(worldObj.getBlockMetadata(xCoord, yCoord, zCoord));
WorldPos coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, worldObj, xCoord, yCoord, zCoord, 0);
Position coordsBlock = WorldUtil.getCoordsFromSide(sideToManipulate, xCoord, yCoord, zCoord, 0);
if(coordsBlock != null){
Block blockToBreak = worldObj.getBlock(coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ());
if(!this.isPlacer && blockToBreak != null && worldObj.getBlockMetadata(coordsBlock.getX(), coordsBlock.getY(), coordsBlock.getZ()) == 0 && FluidContainerRegistry.BUCKET_VOLUME <= this.tank.getCapacity()-this.tank.getFluidAmount()){

View file

@ -10,8 +10,8 @@
package ellpeck.actuallyadditions.tile;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.block.BlockGrass;
import net.minecraft.block.IGrowable;
@ -30,12 +30,12 @@ public class TileEntityGreenhouseGlass extends TileEntityBase{
if(this.timeUntilNextFert > 0){
this.timeUntilNextFert--;
if(timeUntilNextFert <= 0){
WorldPos blockToFert = this.blockToFertilize();
Position blockToFert = this.blockToFertilize();
if(blockToFert != null){
int metaBefore = blockToFert.getMetadata();
int metaBefore = blockToFert.getMetadata(worldObj);
worldObj.getBlock(blockToFert.getX(), blockToFert.getY(), blockToFert.getZ()).updateTick(worldObj, blockToFert.getX(), blockToFert.getY(), blockToFert.getZ(), Util.RANDOM);
if(blockToFert.getMetadata() != metaBefore){
if(blockToFert.getMetadata(worldObj) != metaBefore){
worldObj.playAuxSFX(2005, blockToFert.getX(), blockToFert.getY(), blockToFert.getZ(), 0);
}
}
@ -49,12 +49,12 @@ public class TileEntityGreenhouseGlass extends TileEntityBase{
}
}
public WorldPos blockToFertilize(){
public Position blockToFertilize(){
for(int i = yCoord-1; i > 0; i--){
Block block = worldObj.getBlock(xCoord, i, zCoord);
if(block != null && !(worldObj.isAirBlock(xCoord, i, zCoord))){
if((block instanceof IGrowable || block instanceof IPlantable) && !(block instanceof BlockGrass)){
return new WorldPos(worldObj, xCoord, i, zCoord);
return new Position(xCoord, i, zCoord);
}
else{
return null;

View file

@ -14,8 +14,8 @@ import cofh.api.energy.EnergyStorage;
import cofh.api.energy.IEnergyProvider;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -38,7 +38,7 @@ public class TileEntityHeatCollector extends TileEntityBase implements IEnergyPr
ArrayList<Integer> blocksAround = new ArrayList<Integer>();
if(ENERGY_PRODUCE <= this.getMaxEnergyStored(ForgeDirection.UNKNOWN)-this.getEnergyStored(ForgeDirection.UNKNOWN)){
for(int i = 1; i <= 5; i++){
WorldPos coords = WorldUtil.getCoordsFromSide(WorldUtil.getDirectionBySidesInOrder(i), worldObj, xCoord, yCoord, zCoord, 0);
Position coords = WorldUtil.getCoordsFromSide(WorldUtil.getDirectionBySidesInOrder(i), xCoord, yCoord, zCoord, 0);
if(coords != null){
Block block = worldObj.getBlock(coords.getX(), coords.getY(), coords.getZ());
if(block != null && block.getMaterial() == Material.lava && worldObj.getBlockMetadata(coords.getX(), coords.getY(), coords.getZ()) == 0){

View file

@ -17,8 +17,8 @@ import ellpeck.actuallyadditions.config.values.ConfigBoolValues;
import ellpeck.actuallyadditions.config.values.ConfigIntValues;
import ellpeck.actuallyadditions.misc.LaserRelayConnectionHandler;
import ellpeck.actuallyadditions.network.PacketParticle;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.WorldUtil;
import io.netty.util.internal.ConcurrentSet;
import net.minecraft.nbt.NBTTagCompound;
@ -44,7 +44,7 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
@SideOnly(Side.CLIENT)
public void renderParticles(){
if(Util.RANDOM.nextInt(2) == 0){
WorldPos thisPos = new WorldPos(this.getWorldObj(), this.xCoord, this.yCoord, this.zCoord);
Position thisPos = new Position(this.xCoord, this.yCoord, this.zCoord);
LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getInstance().getNetworkFor(thisPos);
if(network != null){
for(LaserRelayConnectionHandler.ConnectionPair aPair : network.connections){
@ -60,7 +60,7 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
public Packet getDescriptionPacket(){
NBTTagCompound compound = new NBTTagCompound();
WorldPos thisPos = new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
Position thisPos = new Position(this.xCoord, this.yCoord, this.zCoord);
ConcurrentSet<LaserRelayConnectionHandler.ConnectionPair> connections = LaserRelayConnectionHandler.getInstance().getConnectionsFor(thisPos);
if(connections != null){
@ -76,7 +76,7 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt){
WorldPos thisPos = new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
Position thisPos = new Position(this.xCoord, this.yCoord, this.zCoord);
if(pkt != null && pkt.func_148857_g() != null){
LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(thisPos);
@ -94,12 +94,12 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
@Override
public void invalidate(){
super.invalidate();
LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord));
LaserRelayConnectionHandler.getInstance().removeRelayFromNetwork(new Position(this.xCoord, this.yCoord, this.zCoord));
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate){
return this.transmitEnergy(WorldUtil.getCoordsFromSide(from, worldObj, xCoord, yCoord, zCoord, 0), maxReceive, simulate);
return this.transmitEnergy(WorldUtil.getCoordsFromSide(from, xCoord, yCoord, zCoord, 0), maxReceive, simulate);
}
@Override
@ -112,12 +112,12 @@ public class TileEntityLaserRelay extends TileEntityBase implements IEnergyRecei
return 0;
}
public int transmitEnergy(WorldPos blockFrom, int maxTransmit, boolean simulate){
public int transmitEnergy(Position blockFrom, int maxTransmit, boolean simulate){
int transmitted = 0;
if(maxTransmit > 0){
LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getInstance().getNetworkFor(new WorldPos(this.worldObj, this.xCoord, this.yCoord, this.zCoord));
LaserRelayConnectionHandler.Network network = LaserRelayConnectionHandler.getInstance().getNetworkFor(new Position(this.xCoord, this.yCoord, this.zCoord));
if(network != null){
transmitted = LaserRelayConnectionHandler.getInstance().transferEnergyToReceiverInNeed(blockFrom, network, Math.min(ConfigIntValues.LASER_RELAY_MAX_TRANSFER.getValue(), maxTransmit), simulate);
transmitted = LaserRelayConnectionHandler.getInstance().transferEnergyToReceiverInNeed(worldObj, blockFrom, network, Math.min(ConfigIntValues.LASER_RELAY_MAX_TRANSFER.getValue(), maxTransmit), simulate);
}
}
return transmitted;

View file

@ -17,7 +17,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.network.PacketHandler;
import ellpeck.actuallyadditions.network.PacketParticle;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
@ -45,14 +45,14 @@ public class TileEntityLeafGenerator extends TileEntityBase implements IEnergyPr
this.nextUseCounter = 0;
if(ENERGY_PRODUCED <= this.storage.getMaxEnergyStored()-this.storage.getEnergyStored()){
ArrayList<WorldPos> breakPositions = new ArrayList<WorldPos>();
ArrayList<Position> breakPositions = new ArrayList<Position>();
for(int reachX = -RANGE; reachX < RANGE+1; reachX++){
for(int reachZ = -RANGE; reachZ < RANGE+1; reachZ++){
for(int reachY = -RANGE; reachY < RANGE+1; reachY++){
Block block = this.worldObj.getBlock(this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ);
if(block != null && block.isLeaves(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ)){
breakPositions.add(new WorldPos(this.worldObj, this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ));
breakPositions.add(new Position(this.xCoord+reachX, this.yCoord+reachY, this.zCoord+reachZ));
}
}
}
@ -60,7 +60,7 @@ public class TileEntityLeafGenerator extends TileEntityBase implements IEnergyPr
if(!breakPositions.isEmpty()){
Collections.shuffle(breakPositions);
WorldPos theCoord = breakPositions.get(0);
Position theCoord = breakPositions.get(0);
Block theBlock = this.worldObj.getBlock(theCoord.getX(), theCoord.getY(), theCoord.getZ());
int meta = this.worldObj.getBlockMetadata(theCoord.getX(), theCoord.getY(), theCoord.getZ());

View file

@ -62,8 +62,8 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
}
public IEnergyProvider getProvider(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
TileEntity tile = boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(this.boundPosition != null){
TileEntity tile = worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(tile instanceof IEnergyProvider){
return (IEnergyProvider)tile;
}
@ -72,8 +72,8 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
}
public IEnergyReceiver getReceiver(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
TileEntity tile = boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(this.boundPosition != null){
TileEntity tile = worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(tile instanceof IEnergyReceiver){
return (IEnergyReceiver)tile;
}
@ -99,7 +99,7 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
@Override
public boolean isBoundThingInRange(){
return super.isBoundThingInRange() && (this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IEnergyReceiver || this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IEnergyProvider);
return super.isBoundThingInRange() && (worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IEnergyReceiver || worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IEnergyProvider);
}
private void pushEnergy(ForgeDirection side){

View file

@ -80,7 +80,7 @@ public class TileEntityPhantomItemface extends TileEntityPhantomface{
@Override
public boolean isBoundThingInRange(){
return super.isBoundThingInRange() && this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IInventory;
return super.isBoundThingInRange() && worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IInventory;
}
public ISidedInventory getSided(){
@ -88,8 +88,8 @@ public class TileEntityPhantomItemface extends TileEntityPhantomface{
}
public IInventory getInventory(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
TileEntity tile = boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(this.boundPosition != null){
TileEntity tile = worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(tile instanceof IInventory){
return (IInventory)tile;
}

View file

@ -43,8 +43,8 @@ public class TileEntityPhantomLiquiface extends TileEntityPhantomface implements
}
public IFluidHandler getHandler(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
TileEntity tile = boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(this.boundPosition != null){
TileEntity tile = worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(tile instanceof IFluidHandler){
return (IFluidHandler)tile;
}
@ -73,7 +73,7 @@ public class TileEntityPhantomLiquiface extends TileEntityPhantomface implements
@Override
public boolean isBoundThingInRange(){
return super.isBoundThingInRange() && this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IFluidHandler;
return super.isBoundThingInRange() && worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IFluidHandler;
}
@Override

View file

@ -14,8 +14,8 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.inventory.GuiHandler;
import ellpeck.actuallyadditions.network.PacketParticle;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import ellpeck.actuallyadditions.util.WorldUtil;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
@ -28,7 +28,7 @@ import java.util.ArrayList;
public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements IPhantomTile, IRedstoneToggle{
public static final int RANGE = 3;
public WorldPos boundPosition;
public Position boundPosition;
public int currentTime;
public int range;
public boolean isBreaker;
@ -83,36 +83,36 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
@Override
public boolean hasBoundPosition(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
if(this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IPhantomTile || (this.xCoord == this.boundPosition.getX() && this.yCoord == this.boundPosition.getY() && this.zCoord == this.boundPosition.getZ() && this.worldObj.provider.dimensionId == this.boundPosition.getWorld().provider.dimensionId)){
if(this.boundPosition != null){
if(this.worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IPhantomTile || (this.xCoord == this.boundPosition.getX() && this.yCoord == this.boundPosition.getY() && this.zCoord == this.boundPosition.getZ() && this.worldObj.provider.dimensionId == this.worldObj.provider.dimensionId)){
this.boundPosition = null;
return false;
}
return this.worldObj.provider.dimensionId == this.boundPosition.getWorld().provider.dimensionId;
return this.worldObj.provider.dimensionId == this.worldObj.provider.dimensionId;
}
return false;
}
private void doWork(){
if(this.isBreaker){
Block blockToBreak = boundPosition.getWorld().getBlock(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(blockToBreak != null && blockToBreak.getBlockHardness(boundPosition.getWorld(), boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) > -1.0F){
Block blockToBreak = worldObj.getBlock(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
if(blockToBreak != null && blockToBreak.getBlockHardness(worldObj, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) > -1.0F){
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
int meta = boundPosition.getWorld().getBlockMetadata(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
drops.addAll(blockToBreak.getDrops(boundPosition.getWorld(), boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), meta, 0));
int meta = worldObj.getBlockMetadata(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
drops.addAll(blockToBreak.getDrops(worldObj, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), meta, 0));
if(WorldUtil.addToInventory(this, drops, false)){
boundPosition.getWorld().playAuxSFX(2001, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), Block.getIdFromBlock(blockToBreak)+(meta << 12));
WorldUtil.breakBlockAtSide(ForgeDirection.UNKNOWN, boundPosition.getWorld(), boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
worldObj.playAuxSFX(2001, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), Block.getIdFromBlock(blockToBreak)+(meta << 12));
WorldUtil.breakBlockAtSide(ForgeDirection.UNKNOWN, worldObj, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ());
WorldUtil.addToInventory(this, drops, true);
this.markDirty();
}
}
}
else{
if(boundPosition.getWorld().getBlock(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()).isReplaceable(boundPosition.getWorld(), boundPosition.getX(), boundPosition.getY(), boundPosition.getZ())){
if(worldObj.getBlock(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()).isReplaceable(worldObj, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ())){
int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
this.setInventorySlotContents(theSlot, WorldUtil.placeBlockAtSide(ForgeDirection.UNKNOWN, boundPosition.getWorld(), boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), this.slots[theSlot]));
this.setInventorySlotContents(theSlot, WorldUtil.placeBlockAtSide(ForgeDirection.UNKNOWN, worldObj, boundPosition.getX(), boundPosition.getY(), boundPosition.getZ(), this.slots[theSlot]));
if(this.slots[theSlot] != null && this.slots[theSlot].stackSize <= 0){
this.slots[theSlot] = null;
}
@ -145,12 +145,12 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
}
@Override
public WorldPos getBoundPosition(){
public Position getBoundPosition(){
return this.boundPosition;
}
@Override
public void setBoundPosition(WorldPos pos){
public void setBoundPosition(Position pos){
this.boundPosition = pos == null ? null : pos.copy();
}
@ -172,7 +172,6 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
compound.setInteger("XCoordOfTileStored", boundPosition.getX());
compound.setInteger("YCoordOfTileStored", boundPosition.getY());
compound.setInteger("ZCoordOfTileStored", boundPosition.getZ());
compound.setInteger("WorldOfTileStored", boundPosition.getWorld().provider.dimensionId);
}
}
@ -182,10 +181,9 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
int x = compound.getInteger("XCoordOfTileStored");
int y = compound.getInteger("YCoordOfTileStored");
int z = compound.getInteger("ZCoordOfTileStored");
int world = compound.getInteger("WorldOfTileStored");
this.range = compound.getInteger("Range");
if(!(x == 0 && y == 0 && z == 0)){
this.boundPosition = new WorldPos(world, x, y, z);
this.boundPosition = new Position(x, y, z);
this.markDirty();
}
}

View file

@ -15,8 +15,8 @@ import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.blocks.BlockPhantom;
import ellpeck.actuallyadditions.blocks.InitBlocks;
import ellpeck.actuallyadditions.network.PacketParticle;
import ellpeck.actuallyadditions.util.Position;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -27,11 +27,11 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
public static final int RANGE = 16;
public static final float[] COLORS = new float[]{93F/255F, 43F/255F, 181F/255F};
public WorldPos boundPosition;
public Position boundPosition;
public BlockPhantom.Type type;
public int range;
private int rangeBefore;
private WorldPos boundPosBefore;
private Position boundPosBefore;
private Block boundBlockBefore;
public TileEntityPhantomface(String name){
@ -48,10 +48,10 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
this.boundPosition = null;
}
if(this.boundPosition != this.boundPosBefore || (this.boundPosition != null && this.boundPosition.getBlock() != this.boundBlockBefore) || this.rangeBefore != this.range){
if(this.boundPosition != this.boundPosBefore || (this.boundPosition != null && this.boundPosition.getBlock(worldObj) != this.boundBlockBefore) || this.rangeBefore != this.range){
this.rangeBefore = this.range;
this.boundPosBefore = this.boundPosition;
this.boundBlockBefore = this.boundPosition == null ? null : this.boundPosition.getBlock();
this.boundBlockBefore = this.boundPosition == null ? null : this.boundPosition.getBlock(worldObj);
this.getWorldObj().markBlockForUpdate(this.xCoord+1, this.yCoord, this.zCoord);
this.getWorldObj().markBlockForUpdate(this.xCoord-1, this.yCoord, this.zCoord);
@ -78,7 +78,6 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
compound.setInteger("XCoordOfTileStored", boundPosition.getX());
compound.setInteger("YCoordOfTileStored", boundPosition.getY());
compound.setInteger("ZCoordOfTileStored", boundPosition.getZ());
compound.setInteger("WorldOfTileStored", boundPosition.getWorld().provider.dimensionId);
}
}
@ -91,7 +90,7 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
int world = compound.getInteger("WorldOfTileStored");
this.range = compound.getInteger("Range");
if(!(x == 0 && y == 0 && z == 0)){
this.boundPosition = new WorldPos(world, x, y, z);
this.boundPosition = new Position(x, y, z);
this.markDirty();
}
}
@ -112,12 +111,12 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
@Override
public boolean hasBoundPosition(){
if(this.boundPosition != null && this.boundPosition.getWorld() != null){
if(this.boundPosition.getWorld().getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IPhantomTile || (this.xCoord == this.boundPosition.getX() && this.yCoord == this.boundPosition.getY() && this.zCoord == this.boundPosition.getZ() && this.worldObj.provider.dimensionId == this.boundPosition.getWorld().provider.dimensionId)){
if(this.boundPosition != null){
if(worldObj.getTileEntity(boundPosition.getX(), boundPosition.getY(), boundPosition.getZ()) instanceof IPhantomTile || (this.xCoord == this.boundPosition.getX() && this.yCoord == this.boundPosition.getY() && this.zCoord == this.boundPosition.getZ())){
this.boundPosition = null;
return false;
}
return this.worldObj.provider.dimensionId == this.boundPosition.getWorld().provider.dimensionId;
return true;
}
return false;
}
@ -147,12 +146,12 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
}
@Override
public WorldPos getBoundPosition(){
public Position getBoundPosition(){
return this.boundPosition;
}
@Override
public void setBoundPosition(WorldPos pos){
public void setBoundPosition(Position pos){
this.boundPosition = pos == null ? null : pos.copy();
}

View file

@ -0,0 +1,91 @@
/*
* This file ("WorldPos.java") is part of the Actually Additions Mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://github.com/Ellpeck/ActuallyAdditions/blob/master/README.md
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015 Ellpeck
*/
package ellpeck.actuallyadditions.util;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class Position{
private int x;
private int y;
private int z;
public Position(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
public TileEntity getTileEntity(World world){
return world != null ? world.getTileEntity(this.x, this.y, this.z) : null;
}
public Material getMaterial(World world){
return world != null ? world.getBlock(this.x, this.y, this.z).getMaterial() : null;
}
public Item getItemBlock(World world){
return world != null ? Item.getItemFromBlock(this.getBlock(world)) : null;
}
public Block getBlock(World world){
return world != null ? world.getBlock(this.x, this.y, this.z) : null;
}
public int getMetadata(World world){
return world != null ? world.getBlockMetadata(this.x, this.y, this.z) : 0;
}
public void setMetadata(World world, int meta, int flag){
if(world != null){
world.setBlockMetadataWithNotify(this.x, this.y, this.z, meta, flag);
}
}
public boolean isEqual(Position pos){
return pos != null && this.x == pos.getX() && this.y == pos.getY() && this.z == pos.getZ();
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
public int getZ(){
return this.z;
}
public void setBlock(World world, Block block, int meta, int flag){
if(world != null){
world.setBlock(this.x, this.y, this.z, block, meta, flag);
}
}
public Position copy(){
return new Position(this.x, this.y, this.z);
}
public String toString(){
return "["+this.x+", "+this.y+", "+this.z+"]";
}
public Vec3 toVec(){
return Vec3.createVectorHelper(this.x, this.y, this.z);
}
}

View file

@ -1,106 +0,0 @@
/*
* This file ("WorldPos.java") is part of the Actually Additions Mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://github.com/Ellpeck/ActuallyAdditions/blob/master/README.md
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015 Ellpeck
*/
package ellpeck.actuallyadditions.util;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
public class WorldPos{
private int x;
private int y;
private int z;
private int worldID;
public WorldPos(World world, int x, int y, int z){
this(world.provider.dimensionId, x, y, z);
}
public WorldPos(int worldID, int x, int y, int z){
this.worldID = worldID;
this.x = x;
this.y = y;
this.z = z;
}
public int getWorldID(){
return this.worldID;
}
public TileEntity getTileEntity(){
return this.getWorld() != null ? this.getWorld().getTileEntity(this.x, this.y, this.z) : null;
}
public World getWorld(){
return DimensionManager.getWorld(this.worldID);
}
public Material getMaterial(){
return this.getWorld() != null ? this.getWorld().getBlock(this.x, this.y, this.z).getMaterial() : null;
}
public Item getItemBlock(){
return this.getWorld() != null ? Item.getItemFromBlock(this.getBlock()) : null;
}
public Block getBlock(){
return this.getWorld() != null ? this.getWorld().getBlock(this.x, this.y, this.z) : null;
}
public int getMetadata(){
return this.getWorld() != null ? this.getWorld().getBlockMetadata(this.x, this.y, this.z) : 0;
}
public void setMetadata(int meta, int flag){
if(this.getWorld() != null){
this.getWorld().setBlockMetadataWithNotify(this.x, this.y, this.z, meta, flag);
}
}
public boolean isEqual(WorldPos pos){
return pos != null && this.x == pos.getX() && this.y == pos.getY() && this.z == pos.getZ() && this.getWorld() == pos.getWorld();
}
public int getX(){
return this.x;
}
public int getY(){
return this.y;
}
public int getZ(){
return this.z;
}
public void setBlock(Block block, int meta, int flag){
if(this.getWorld() != null){
this.getWorld().setBlock(this.x, this.y, this.z, block, meta, flag);
}
}
public WorldPos copy(){
return new WorldPos(this.getWorld(), this.x, this.y, this.z);
}
public String toString(){
return "["+this.x+", "+this.y+", "+this.z+" in world "+this.worldID+"]";
}
public Vec3 toVec(){
return Vec3.createVectorHelper(this.x, this.y, this.z);
}
}

View file

@ -61,17 +61,17 @@ public class WorldUtil{
world.setBlockToAir(x, y, z);
return;
}
WorldPos c = getCoordsFromSide(side, world, x, y, z, offset);
Position c = getCoordsFromSide(side, x, y, z, offset);
if(c != null){
world.setBlockToAir(c.getX(), c.getY(), c.getZ());
}
}
public static WorldPos getCoordsFromSide(ForgeDirection side, World world, int x, int y, int z, int offset){
public static Position getCoordsFromSide(ForgeDirection side, int x, int y, int z, int offset){
if(side == ForgeDirection.UNKNOWN){
return null;
}
return new WorldPos(world, x+side.offsetX*(offset+1), y+side.offsetY*(offset+1), z+side.offsetZ*(offset+1));
return new Position(x+side.offsetX*(offset+1), y+side.offsetY*(offset+1), z+side.offsetZ*(offset+1));
}
public static void pushEnergy(World world, int x, int y, int z, ForgeDirection side, EnergyStorage storage){
@ -85,7 +85,7 @@ public class WorldUtil{
}
public static TileEntity getTileEntityFromSide(ForgeDirection side, World world, int x, int y, int z){
WorldPos c = getCoordsFromSide(side, world, x, y, z, 0);
Position c = getCoordsFromSide(side, x, y, z, 0);
if(c != null){
return world.getTileEntity(c.getX(), c.getY(), c.getZ());
}
@ -161,7 +161,7 @@ public class WorldUtil{
public static boolean dropItemAtSide(ForgeDirection side, World world, int x, int y, int z, ItemStack stack){
if(side != ForgeDirection.UNKNOWN){
WorldPos coords = getCoordsFromSide(side, world, x, y, z, 0);
Position coords = getCoordsFromSide(side, x, y, z, 0);
if(coords != null){
EntityItem item = new EntityItem(world, coords.getX()+0.5, coords.getY()+0.5, coords.getZ()+0.5, stack);
item.motionX = 0;

View file

@ -330,7 +330,6 @@ tooltip.actuallyadditions.onSuffix.desc=On
tooltip.actuallyadditions.phantom.connected.desc=<Block connected!>
tooltip.actuallyadditions.phantom.stored.desc=<Block stored to this Connector!>
tooltip.actuallyadditions.phantom.unbound.desc=The Connection was cleared!
tooltip.actuallyadditions.inWorld.desc=In World
tooltip.actuallyadditions.boundTo.desc=Bound to
tooltip.actuallyadditions.clearStorage.desc=Place in Crafting Grid to clear storage!
tooltip.actuallyadditions.phantom.connectedRange.desc=The Connection is fine and working.