Reworked more rituals, allowed Int3 to be created from BlockPos - note for future, may replace Int3 with Vec3i for future use

This commit is contained in:
WayofTime 2015-07-29 11:25:11 -04:00
parent 14d603e99c
commit f046b07a82
13 changed files with 90 additions and 87 deletions

View file

@ -37,7 +37,7 @@ public class RitualEffectInterdiction extends RitualEffect
{
int d0 = 5;
List<EntityLivingBase> list = SpellHelper.getLivingEntitiesInRange(world, x + 0.5, y + 0.5, z + 0.5, d0, d0);
List<EntityLivingBase> list = SpellHelper.getLivingEntitiesInRange(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, d0, d0);
boolean flag = false;
boolean hasOffensa = this.canDrainReagent(ritualStone, ReagentRegistry.magicalesReagent, magicalesDrain, false);
@ -47,9 +47,9 @@ public class RitualEffectInterdiction extends RitualEffect
{
if (!((!hasOffensa && entityLiving instanceof EntityPlayer) && (SpellHelper.getUsername((EntityPlayer) entityLiving).equals(owner))))
{
double xDif = entityLiving.posX - x;
double yDif = entityLiving.posY - (y + 1);
double zDif = entityLiving.posZ - z;
double xDif = entityLiving.posX - (pos.getX() - 0.5);
double yDif = entityLiving.posY - ((pos.getY() - 0.5) + 1);
double zDif = entityLiving.posZ - (pos.getZ() - 0.5);
entityLiving.motionX = 0.1 * xDif;
entityLiving.motionY = 0.1 * yDif;
entityLiving.motionZ = 0.1 * zDif;
@ -77,7 +77,7 @@ public class RitualEffectInterdiction extends RitualEffect
int horizontalRadius = 5;
int verticalRadius = 5;
List<EntityItem> itemList = world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(x, y, z, x + 1, y + 1, z + 1).expand(horizontalRadius, verticalRadius, horizontalRadius));
List<EntityItem> itemList = world.getEntitiesWithinAABB(EntityItem.class, new AxisAlignedBB(pos, pos.add(1, 1, 1)).expand(horizontalRadius, verticalRadius, horizontalRadius));
if (itemList != null)
{
@ -85,9 +85,9 @@ public class RitualEffectInterdiction extends RitualEffect
for (EntityItem entity : itemList)
{
double xDif = entity.posX - x;
double yDif = entity.posY - (y + 1);
double zDif = entity.posZ - z;
double xDif = entity.posX - (pos.getX() - 0.5);
double yDif = entity.posY - ((pos.getY() - 0.5) + 1);
double zDif = entity.posZ - (pos.getZ() - 0.5);
entity.motionX = 0.1 * xDif;
entity.motionY = 0.1 * yDif;
entity.motionZ = 0.1 * zDif;

View file

@ -11,8 +11,8 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import WayofTime.alchemicalWizardry.api.Int3;
import WayofTime.alchemicalWizardry.api.RoutingFocusParadigm;
import WayofTime.alchemicalWizardry.api.RoutingFocusPosAndFacing;
@ -48,7 +48,8 @@ public class RitualEffectItemRouting extends RitualEffect
for(int i=0; i<4; i++) //Check output foci chests, return if none available
{
Int3 outputFocusChest = this.getOutputBufferChestLocation(i);
TileEntity outputFocusInv = world.getTileEntity(x + outputFocusChest.xCoord, y + outputFocusChest.yCoord, z + outputFocusChest.zCoord);
BlockPos newPos = pos.add(outputFocusChest.xCoord, outputFocusChest.yCoord, outputFocusChest.zCoord);
TileEntity outputFocusInv = world.getTileEntity(newPos);
if(outputFocusInv instanceof IInventory)
{
outputList.add((IInventory)outputFocusInv);
@ -68,7 +69,7 @@ public class RitualEffectItemRouting extends RitualEffect
RoutingFocusParadigm parad = new RoutingFocusParadigm();
TileEntity outputChest = null; //Destination
ForgeDirection inputDirection;
EnumFacing inputDirection;
{
IInventory outputChestInventory = null;
@ -108,9 +109,9 @@ public class RitualEffectItemRouting extends RitualEffect
continue;
}
inputDirection = posAndFacing.facing;
if(outputChest == null || !posAndFacing.location.equals(new Int3(outputChest.xCoord, outputChest.yCoord, outputChest.zCoord)))
if(outputChest == null || !posAndFacing.location.equals(new Int3(outputChest.getPos())))
{
outputChest = world.getTileEntity(posAndFacing.location.xCoord, posAndFacing.location.yCoord, posAndFacing.location.zCoord);
outputChest = world.getTileEntity(new BlockPos(posAndFacing.location.xCoord, posAndFacing.location.yCoord, posAndFacing.location.zCoord));
if(outputChest instanceof IInventory)
{
outputChestInventory = (IInventory)outputChest;
@ -123,7 +124,7 @@ public class RitualEffectItemRouting extends RitualEffect
for(int i=0; i<4; i++)
{
Int3 inputFocusChest = this.getInputBufferChestLocation(i);
TileEntity inputFocusInv = world.getTileEntity(x + inputFocusChest.xCoord, y + inputFocusChest.yCoord, z + inputFocusChest.zCoord);
TileEntity inputFocusInv = world.getTileEntity(pos.add(inputFocusChest.xCoord, inputFocusChest.yCoord, inputFocusChest.zCoord));
if(inputFocusInv instanceof IInventory)
{
for(int ji=0; ji<((IInventory) inputFocusInv).getSizeInventory(); ji++) //Iterate through foci inventory
@ -132,15 +133,15 @@ public class RitualEffectItemRouting extends RitualEffect
if(inputFocusStack != null && inputFocusStack.getItem() instanceof InputRoutingFocus)
{
InputRoutingFocus inputFocus = (InputRoutingFocus)inputFocusStack.getItem();
TileEntity inputChest = world.getTileEntity(inputFocus.xCoord(inputFocusStack), inputFocus.yCoord(inputFocusStack), inputFocus.zCoord(inputFocusStack));
TileEntity inputChest = world.getTileEntity(new BlockPos(inputFocus.xCoord(inputFocusStack), inputFocus.yCoord(inputFocusStack), inputFocus.zCoord(inputFocusStack)));
if(inputChest instanceof IInventory)
{
IInventory inputChestInventory = (IInventory)inputChest;
ForgeDirection syphonDirection = inputFocus.getSetDirection(inputFocusStack);
EnumFacing syphonDirection = inputFocus.getSetDirection(inputFocusStack);
boolean[] canSyphonList = new boolean[inputChestInventory.getSizeInventory()];
if(inputChest instanceof ISidedInventory)
{
int[] validSlots = ((ISidedInventory) inputChest).getAccessibleSlotsFromSide(syphonDirection.ordinal());
int[] validSlots = ((ISidedInventory) inputChest).getSlotsForFace(syphonDirection);
for(int in : validSlots)
{
canSyphonList[in] = true;
@ -158,7 +159,7 @@ public class RitualEffectItemRouting extends RitualEffect
if(canSyphonList[ni])
{
ItemStack syphonedStack = inputChestInventory.getStackInSlot(ni); //Has a syphoned item linked, next need to find a destination
if(syphonedStack == null || (inputChestInventory instanceof ISidedInventory && !((ISidedInventory)inputChestInventory).canExtractItem(ni, syphonedStack, syphonDirection.ordinal())))
if(syphonedStack == null || (inputChestInventory instanceof ISidedInventory && !((ISidedInventory)inputChestInventory).canExtractItem(ni, syphonedStack, syphonDirection)))
{
continue;
}

View file

@ -8,8 +8,8 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry;
import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
@ -32,7 +32,7 @@ public class RitualEffectItemSuction extends RitualEffect
World world = ritualStone.getWorldObj();
BlockPos pos = ritualStone.getPosition();
TileEntity tile = world.getTileEntity(x, y + 1, z);
TileEntity tile = world.getTileEntity(pos.offsetUp());
IInventory tileEntity;
if (tile instanceof IInventory)
@ -53,7 +53,7 @@ public class RitualEffectItemSuction extends RitualEffect
SoulNetworkHandler.causeNauseaToPlayer(owner);
} else
{
List<EntityItem> itemDropList = SpellHelper.getItemsInRange(world, x + 0.5f, y + 0.5f, z + 0.5f, 10, 10);
List<EntityItem> itemDropList = SpellHelper.getItemsInRange(world, pos.getX() + 0.5f, pos.getY() + 0.5f, pos.getZ() + 0.5f, 10, 10);
boolean hasReductus = this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false);
@ -65,16 +65,16 @@ public class RitualEffectItemSuction extends RitualEffect
for (EntityItem itemEntity : itemDropList)
{
hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false);
if (hasReductus && itemEntity.age < this.timeDelayMin)
{
continue;
}
// hasReductus = hasReductus && this.canDrainReagent(ritualStone, ReagentRegistry.reductusReagent, reductusDrain, false);
// if (hasReductus && itemEntity.age < this.timeDelayMin)
// {
// continue;
// }
ItemStack item = itemEntity.getEntityItem();
ItemStack copyStack = itemEntity.getEntityItem().copy();
int pastAmount = copyStack.stackSize;
ItemStack newStack = SpellHelper.insertStackIntoInventory(copyStack, tileEntity, ForgeDirection.DOWN);
ItemStack newStack = SpellHelper.insertStackIntoInventory(copyStack, tileEntity, EnumFacing.DOWN);
if (newStack != null && newStack.stackSize < pastAmount)
{

View file

@ -31,7 +31,7 @@ public class RitualEffectJumping extends RitualEffect
BlockPos pos = ritualStone.getPosition();
double range = 0.5;
List<EntityLivingBase> livingList = SpellHelper.getLivingEntitiesInRange(world, x + 0.5, y + 1.5, z + 0.5, range, range);
List<EntityLivingBase> livingList = SpellHelper.getLivingEntitiesInRange(world, pos.getX() + 0.5, pos.getY() + 1.5, pos.getZ() + 0.5, range, range);
if (currentEssence < this.getCostPerRefresh() * livingList.size())
{

View file

@ -35,7 +35,7 @@ public class RitualEffectLeap extends RitualEffect
double range = 2.0;
List<EntityLivingBase> livingList = SpellHelper.getLivingEntitiesInRange(world, x + 0.5, y + 0.5, z + 0.5, range, range);
List<EntityLivingBase> livingList = SpellHelper.getLivingEntitiesInRange(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, range, range);
if (livingList == null)
{

View file

@ -5,8 +5,8 @@ import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
import WayofTime.alchemicalWizardry.AlchemicalWizardry;
@ -37,9 +37,10 @@ public class RitualEffectLifeConduit extends RitualEffect
{
for (int k = -10; k <= 10; k++)
{
if (world.getTileEntity(x + i, y + k, z + j) instanceof IBloodAltar)
BlockPos newPos = pos.add(i, j, k);
if (world.getTileEntity(newPos) instanceof IBloodAltar)
{
tileAltar = (IBloodAltar) world.getTileEntity(x + i, y + k, z + j);
tileAltar = (IBloodAltar) world.getTileEntity(newPos);
testFlag = true;
}
}
@ -60,7 +61,7 @@ public class RitualEffectLifeConduit extends RitualEffect
int vertRange = 20;
EntityPlayer entityOwner = null;
List<EntityPlayer> list = SpellHelper.getPlayersInRange(world, x, y, z, d0, vertRange);
List<EntityPlayer> list = SpellHelper.getPlayersInRange(world, pos.getX(), pos.getY(), pos.getZ(), d0, vertRange);
for (EntityPlayer player : list)
{
@ -75,10 +76,10 @@ public class RitualEffectLifeConduit extends RitualEffect
return;
}
int fillAmount = Math.min(currentEssence / 2, ((IFluidHandler)tileAltar).fill(ForgeDirection.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 10000), false));
int fillAmount = Math.min(currentEssence / 2, ((IFluidHandler)tileAltar).fill(EnumFacing.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid, 10000), false));
{
((IFluidHandler)tileAltar).fill(ForgeDirection.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid, fillAmount), true);
((IFluidHandler)tileAltar).fill(EnumFacing.UP, new FluidStack(AlchemicalWizardry.lifeEssenceFluid, fillAmount), true);
if (entityOwner.getHealth() > 2.0f && fillAmount != 0)
{
entityOwner.setHealth(2.0f);

View file

@ -8,6 +8,7 @@ import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.block.BlockOre;
import net.minecraft.block.BlockRedstoneOre;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -87,9 +88,7 @@ public class RitualEffectMagnetic extends RitualEffect
SoulNetworkHandler.causeNauseaToPlayer(owner);
} else
{
int xRep = 0;
int yRep = 0;
int zRep = 0;
BlockPos posRep = null;
boolean replace = false;
outer:
@ -99,11 +98,10 @@ public class RitualEffectMagnetic extends RitualEffect
{
for (int k = -1; k <= 1; k++)
{
if ((!replace) && world.isAirBlock(x + i, y + j, z + k))
BlockPos newPos = pos.add(i, j, k);
if ((!replace) && world.isAirBlock(newPos))
{
xRep = x + i;
yRep = y + j;
zRep = z + k;
posRep = newPos;
replace = true;
break outer;
}
@ -115,7 +113,7 @@ public class RitualEffectMagnetic extends RitualEffect
{
Int3 lastPos = this.getLastPosition(ritualStone.getCustomRitualTag());
int j = y - 1;
int j = pos.getY() - 1;
int i = 0;
int k = 0;
@ -132,13 +130,14 @@ public class RitualEffectMagnetic extends RitualEffect
{
while(k <= radius)
{
Block block = world.getBlock(x + i, j, z + k);
int meta = world.getBlockMetadata(x + i, j, z + k);
BlockPos newPos = new BlockPos(pos.getX() + i, j, pos.getZ() + k);
IBlockState state = world.getBlockState(newPos);
Block block = state.getBlock();
if (isBlockOre(block, meta))
if (isBlockOre(block, block.getMetaFromState(state)))
{
//Allow swapping code. This means the searched block is an ore.
BlockTeleposer.swapBlocks(this, world, world, x + i, j, z + k, xRep, yRep, zRep);
BlockTeleposer.swapBlocks(this, world, world, newPos, posRep);
SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh());
if (hasPotentia)
@ -171,7 +170,7 @@ public class RitualEffectMagnetic extends RitualEffect
return;
}
j = y - 1;
j = pos.getY() - 1;
this.setLastPosition(ritualStone.getCustomRitualTag(), new Int3(i, j, k));
return;
}

View file

@ -34,16 +34,16 @@ public class RitualEffectOmegaStalling extends RitualEffect
return;
}
TileEntity tile = world.getTileEntity(x, y + 5, z);
TileEntity tile = world.getTileEntity(pos.offsetUp(5));
if(tile instanceof TileEntityBeacon)
{
int levels = ((TileEntityBeacon) tile).getLevels();
int levels = ((TileEntityBeacon) tile).getField(0);
if(levels >= 4)
{
int horizontalRadius = 100;
int verticalRadius = 100;
List<EntityPlayer> playerList = SpellHelper.getPlayersInRange(world, x + 0.5, y + 0.5, z + 0.5, horizontalRadius, verticalRadius);
List<EntityPlayer> playerList = SpellHelper.getPlayersInRange(world, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, horizontalRadius, verticalRadius);
for(EntityPlayer player : playerList)
{

View file

@ -12,7 +12,6 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import WayofTime.alchemicalWizardry.api.Int3;
import WayofTime.alchemicalWizardry.api.alchemy.energy.IReagentHandler;
import WayofTime.alchemicalWizardry.api.alchemy.energy.Reagent;

View file

@ -1,17 +1,17 @@
package WayofTime.alchemicalWizardry.common.rituals;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
import WayofTime.alchemicalWizardry.api.rituals.RitualEffect;
import WayofTime.alchemicalWizardry.api.soulNetwork.SoulNetworkHandler;
import WayofTime.alchemicalWizardry.common.AlchemicalWizardryEventHooks;
import WayofTime.alchemicalWizardry.common.CoordAndRange;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class RitualEffectSpawnWard extends RitualEffect
{
@ -39,34 +39,30 @@ public class RitualEffectSpawnWard extends RitualEffect
List<CoordAndRange> list = AlchemicalWizardryEventHooks.respawnMap.get(new Integer(dimension));
if (list != null)
{
if (!list.contains(new CoordAndRange(x, y, z, horizRange, vertRange)))
if (!list.contains(new CoordAndRange(pos, horizRange, vertRange)))
{
boolean hasFoundAndRemoved = false;
for (CoordAndRange coords : list)
{
int xLocation = coords.xCoord;
int yLocation = coords.yCoord;
int zLocation = coords.zCoord;
BlockPos locationPos = coords.getPos();
if (xLocation == x && yLocation == y && zLocation == z)
if (locationPos.equals(pos))
{
list.remove(coords);
hasFoundAndRemoved = true;
break;
}
}
list.add(new CoordAndRange(x, y, z, horizRange, vertRange));
list.add(new CoordAndRange(pos, horizRange, vertRange));
}
} else
{
list = new LinkedList();
list.add(new CoordAndRange(x, y, z, horizRange, vertRange));
list.add(new CoordAndRange(pos, horizRange, vertRange));
AlchemicalWizardryEventHooks.respawnMap.put(new Integer(dimension), list);
}
} else
{
List<CoordAndRange> list = new LinkedList();
list.add(new CoordAndRange(x, y, z, horizRange, vertRange));
list.add(new CoordAndRange(pos, horizRange, vertRange));
AlchemicalWizardryEventHooks.respawnMap.put(new Integer(dimension), list);
}