Merge branch '1.8-Rewrite' of https://github.com/WayofTime/BloodMagic into 1.8-Rewrite

This commit is contained in:
WayofTime 2016-01-05 18:27:55 -05:00
commit b736fd3eaa
5 changed files with 34 additions and 30 deletions

View file

@ -3,6 +3,9 @@ package WayofTime.bloodmagic.api;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameData;
@Getter
@ -23,6 +26,12 @@ public class BlockStack
this(block, 0);
}
public static BlockStack getStackFromPos(World world, BlockPos pos)
{
IBlockState state = world.getBlockState(pos);
return new BlockStack(state.getBlock(), state.getBlock().getMetaFromState(state));
}
@Override
public String toString()
{

View file

@ -43,6 +43,11 @@ public class ItemStackWrapper
this(block, 1, 0);
}
public ItemStackWrapper(BlockStack blockStack)
{
this(blockStack.getBlock(), 1, blockStack.getMeta());
}
public static ItemStackWrapper getHolder(ItemStack stack)
{
return new ItemStackWrapper(stack.getItem(), stack.stackSize, stack.getItemDamage());

View file

@ -1,6 +1,6 @@
package WayofTime.bloodmagic.api.event;
import net.minecraft.block.Block;
import WayofTime.bloodmagic.api.BlockStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
@ -17,27 +17,21 @@ public class TeleposeEvent extends Event
{
public final World initalWorld;
public final BlockPos initialBlockPos;
public final Block initialBlock;
public final int initialMetadata;
public final BlockStack initialStack;
public final World finalWorld;
public final BlockPos finalBlockPos;
public final BlockStack finalStack;
public final Block finalBlock;
public final int finalMetadata;
public TeleposeEvent(World initialWorld, BlockPos initialBlockPos, Block initialBlock, int initialMetadata, World finalWorld, BlockPos finalBlockPos, Block finalBlock, int finalMetadata)
public TeleposeEvent(World initialWorld, BlockPos initialBlockPos, World finalWorld, BlockPos finalBlockPos)
{
this.initalWorld = initialWorld;
this.initialBlockPos = initialBlockPos;
this.initialBlock = initialBlock;
this.initialMetadata = initialMetadata;
this.initialStack = BlockStack.getStackFromPos(initialWorld, initialBlockPos);
this.finalWorld = finalWorld;
this.finalBlockPos = finalBlockPos;
this.finalBlock = finalBlock;
this.finalMetadata = finalMetadata;
this.finalStack = BlockStack.getStackFromPos(finalWorld, finalBlockPos);
}
public TileEntity getInitialTile()

View file

@ -3,6 +3,7 @@ package WayofTime.bloodmagic.tile;
import java.util.Iterator;
import java.util.List;
import WayofTime.bloodmagic.api.BlockStack;
import net.minecraft.block.Block;
import net.minecraft.block.BlockMobSpawner;
import net.minecraft.block.BlockPortal;
@ -195,20 +196,17 @@ public class TileTeleposer extends TileInventory implements ITickable
if (finalTile != null)
finalTile.writeToNBT(finalTag);
Block initialBlock = initialWorld.getBlockState(initialPos).getBlock();
Block finalBlock = finalWorld.getBlockState(finalPos).getBlock();
BlockStack initialStack = BlockStack.getStackFromPos(initialWorld, initialPos);
BlockStack finalStack = BlockStack.getStackFromPos(finalWorld, finalPos);
if ((initialBlock.equals(Blocks.air) && finalBlock.equals(Blocks.air)) || (initialBlock instanceof BlockMobSpawner || finalBlock instanceof BlockMobSpawner ||
if ((initialStack.getBlock().equals(Blocks.air) && finalStack.getBlock().equals(Blocks.air)) || (initialStack.getBlock() instanceof BlockMobSpawner || finalStack.getBlock() instanceof BlockMobSpawner ||
// caller instanceof TEDemonPortal ? false :
initialBlock instanceof BlockPortal || finalBlock instanceof BlockPortal))
initialStack.getBlock() instanceof BlockPortal || finalStack.getBlock() instanceof BlockPortal))
{
return false;
}
int initialMeta = initialBlock.getMetaFromState(initialWorld.getBlockState(initialPos));
int finalMeta = finalBlock.getMetaFromState(finalWorld.getBlockState(finalPos));
TeleposeEvent event = new TeleposeEvent(initialWorld, initialPos, initialBlock, initialMeta, finalWorld, finalPos, finalBlock, finalMeta);
TeleposeEvent event = new TeleposeEvent(initialWorld, initialPos, finalWorld, finalPos);
if (MinecraftForge.EVENT_BUS.post(event))
return false;
@ -216,10 +214,10 @@ public class TileTeleposer extends TileInventory implements ITickable
finalWorld.playSoundEffect(finalPos.getX(), finalPos.getY(), finalPos.getZ(), "mob.endermen.portal", 1.0F, 1.0F);
//Finally, we get to do something! (CLEARING TILES)
if (finalBlock != null)
finalWorld.setTileEntity(finalPos, finalBlock.createTileEntity(finalWorld, finalWorld.getBlockState(finalPos)));
if (initialBlock != null)
initialWorld.setTileEntity(initialPos, initialBlock.createTileEntity(initialWorld, initialWorld.getBlockState(initialPos)));
if (finalStack.getBlock() != null)
finalWorld.setTileEntity(finalPos, finalStack.getBlock().createTileEntity(finalWorld, finalWorld.getBlockState(finalPos)));
if (initialStack.getBlock() != null)
initialWorld.setTileEntity(initialPos, initialStack.getBlock().createTileEntity(initialWorld, initialWorld.getBlockState(initialPos)));
//TILES CLEARED
IBlockState initialBlockState = initialWorld.getBlockState(initialPos);
@ -248,8 +246,8 @@ public class TileTeleposer extends TileInventory implements ITickable
newTileFinal.setPos(initialPos);
}
initialWorld.notifyNeighborsOfStateChange(initialPos, finalBlock);
finalWorld.notifyNeighborsOfStateChange(finalPos, initialBlock);
initialWorld.notifyNeighborsOfStateChange(initialPos, finalStack.getBlock());
finalWorld.notifyNeighborsOfStateChange(finalPos, initialStack.getBlock());
return true;
}

View file

@ -97,13 +97,11 @@ public class EventHandler
@SubscribeEvent
public void onTelepose(TeleposeEvent event)
{
BlockStack initialBlock = new BlockStack(event.initialBlock, event.initialMetadata);
BlockStack finalBlock = new BlockStack(event.finalBlock, event.finalMetadata);
if (ConfigHandler.teleposerBlacklist.contains(initialBlock) || ConfigHandler.teleposerBlacklist.contains(finalBlock))
if (ConfigHandler.teleposerBlacklist.contains(event.initialStack) || ConfigHandler.teleposerBlacklist.contains(event.finalStack))
event.setCanceled(true);
if (BloodMagicAPI.getTeleposerBlacklist().contains(initialBlock) || BloodMagicAPI.getTeleposerBlacklist().contains(finalBlock))
if (BloodMagicAPI.getTeleposerBlacklist().contains(event.initialStack) || BloodMagicAPI.getTeleposerBlacklist().contains(event.finalStack))
event.setCanceled(true);
}