Merge branch '1.8-Rewrite' of https://github.com/WayofTime/BloodMagic into 1.8-Rewrite
This commit is contained in:
commit
b736fd3eaa
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue