More fixes
This commit is contained in:
parent
a92e657b12
commit
9c63a9d73e
28 changed files with 141 additions and 134 deletions
|
@ -36,7 +36,7 @@ public class DimDoors {
|
|||
@Mod.Instance(DimDoors.MODID)
|
||||
public static DimDoors instance;
|
||||
|
||||
public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimensional_doors_creative_tab") {
|
||||
public static final CreativeTabs DIM_DOORS_CREATIVE_TAB = new CreativeTabs("dimensional_doors_creative_tab") {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public ItemStack getTabIconItem() {
|
||||
|
|
|
@ -103,7 +103,7 @@ public class RenderHorizontalEntranceRift extends TileEntitySpecialRenderer<Tile
|
|||
BufferBuilder worldrenderer = tessellator.getBuffer();
|
||||
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
|
||||
|
||||
if (BlockDimTrapdoor.isTrapdoorSetLow(state)) {
|
||||
if (state.getValue(BlockTrapDoor.HALF) == BlockTrapDoor.DoorHalf.BOTTOM) {
|
||||
if (state.getValue(BlockTrapDoor.OPEN)) {
|
||||
worldrenderer.pos(x, y + 0.2, z).color(r, g, b, 1.0F).endVertex();
|
||||
worldrenderer.pos(x, y + 0.2, z + 1).color(r, g, b, 1.0F).endVertex();
|
||||
|
|
|
@ -241,7 +241,6 @@ public class RenderVerticalEntranceRift extends TileEntitySpecialRenderer<TileEn
|
|||
public void render(TileEntityVerticalEntranceRift te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) {
|
||||
World world = te.getWorld();
|
||||
BlockPos pos = te.getPos();
|
||||
((BlockDimDoorBase) world.getBlockState(pos).getBlock()).updateAttachedTile(world, pos);
|
||||
if (te.doorShouldRender) {
|
||||
renderDimDoorTileEntity(te, x, y, z);
|
||||
if (te.lockStatus >= 1) {
|
||||
|
|
|
@ -42,18 +42,4 @@ public abstract class DDProxyCommon implements IDDProxy {
|
|||
public void onInitialization(FMLInitializationEvent event) {
|
||||
SchematicHandler.INSTANCE.loadSchematics();
|
||||
}
|
||||
|
||||
public void updateDoorTE(BlockDimDoorBase door, World world, BlockPos pos) {
|
||||
TileEntity tile = world.getTileEntity(pos);
|
||||
if (tile instanceof TileEntityVerticalEntranceRift) {
|
||||
TileEntityVerticalEntranceRift dimTile = (TileEntityVerticalEntranceRift) tile;
|
||||
IBlockState state = world.getBlockState(pos.down());
|
||||
//dimTile.orientation = state.getBlock() instanceof BlockDimDoorBase
|
||||
// ? state.getValue(BlockDoor.FACING).getOpposite()
|
||||
// : ModBlocks.DIMENSIONAL_DOOR.getDefaultState().getValue(BlockDoor.FACING);
|
||||
// dimTile.doorShouldRender = door.isDoorOnRift(world, pos) && door.isUpperDoorBlock(world.getBlockState(pos));
|
||||
dimTile.lockStatus = 0; //@todo
|
||||
dimTile.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Random;
|
|||
|
||||
import com.zixiken.dimdoors.DimDoors;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityEntranceRift;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityFloatingRift;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityVerticalEntranceRift;
|
||||
import com.zixiken.dimdoors.shared.rifts.TileEntityRift;
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -22,7 +23,7 @@ import net.minecraft.util.EnumHand;
|
|||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityProvider { // TODO: implement RiftProvider
|
||||
public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityProvider { // TODO: implement RiftProvider as an interface of both doors and trapdoors
|
||||
|
||||
public BlockDimDoorBase(Material material) {
|
||||
super(material);
|
||||
|
@ -75,8 +76,15 @@ public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityP
|
|||
return blockMaterial == Material.IRON ? 1005 : 1006;
|
||||
}
|
||||
|
||||
public boolean checkCanOpen(World world, BlockPos pos, EntityPlayer player) { // TODO: locking system
|
||||
return true;
|
||||
@Override
|
||||
public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) {
|
||||
if (checkCanOpen(worldIn, pos, null)) {
|
||||
super.neighborChanged(state, worldIn, pos, blockIn, fromPos);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean checkCanOpen(World world, BlockPos pos, EntityPlayer player) {
|
||||
return true; // TODO: locking system
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -84,17 +92,6 @@ public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityP
|
|||
return state.getValue(BlockDoor.HALF) == EnumDoorHalf.LOWER;
|
||||
}
|
||||
|
||||
// Called to update the render information on the tile entity. Could probably implement a data watcher,
|
||||
// but this works fine and is more versatile I think.
|
||||
public void updateAttachedTile(World world, BlockPos pos) { // TODO
|
||||
DimDoors.proxy.updateDoorTE(this, world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) {
|
||||
updateAttachedTile(worldIn, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return state.getValue(HALF) == BlockDoor.EnumDoorHalf.UPPER ? Items.AIR : getItem();
|
||||
|
@ -105,6 +102,11 @@ public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityP
|
|||
return new ItemStack(getItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntityVerticalEntranceRift createNewTileEntity(World worldIn, int meta) {
|
||||
return new TileEntityVerticalEntranceRift();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
|
||||
super.onBlockAdded(worldIn, pos, state);
|
||||
|
@ -112,26 +114,24 @@ public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityP
|
|||
TileEntityVerticalEntranceRift rift = createNewTileEntity(worldIn, getMetaFromState(state));
|
||||
rift.orientation = state.getValue(BlockDoor.FACING).getOpposite();
|
||||
worldIn.setTileEntity(pos, rift);
|
||||
setupRift(rift);
|
||||
rift.markDirty();
|
||||
rift.register();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public TileEntityVerticalEntranceRift createNewTileEntity(World worldIn, int meta) {
|
||||
return new TileEntityVerticalEntranceRift();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
|
||||
if (!hasTileEntity(state)) return;
|
||||
TileEntityEntranceRift origRift = getRift(worldIn, pos, state);
|
||||
TileEntityEntranceRift rift = getRift(worldIn, pos, state);
|
||||
super.breakBlock(worldIn, pos, state);
|
||||
if (origRift.isPlaceRiftOnBreak()) {
|
||||
worldIn.setBlockState(pos, ModBlocks.RIFT.getDefaultState());
|
||||
TileEntityRift newRift = (TileEntityRift) worldIn.getTileEntity(pos);
|
||||
newRift.copyFrom(origRift);
|
||||
worldIn.setBlockState(pos, ModBlocks.RIFT.getDefaultState()); // TODO: send the TileEntity
|
||||
if (rift.isPlaceRiftOnBreak()) {
|
||||
TileEntityRift newRift = new TileEntityFloatingRift();
|
||||
newRift.copyFrom(rift);
|
||||
worldIn.setBlockState(rift.getPos(), ModBlocks.RIFT.getDefaultState());
|
||||
worldIn.setTileEntity(rift.getPos(), newRift);
|
||||
} else {
|
||||
rift.unregister();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -148,4 +148,6 @@ public abstract class BlockDimDoorBase extends BlockDoor implements ITileEntityP
|
|||
}
|
||||
|
||||
public abstract Item getItem();
|
||||
|
||||
protected abstract void setupRift(TileEntityVerticalEntranceRift rift);
|
||||
}
|
||||
|
|
|
@ -24,4 +24,9 @@ public class BlockDimDoorGold extends BlockDimDoorBase {
|
|||
public Item getItem() {
|
||||
return ModItems.GOLD_DIMENSIONAL_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.zixiken.dimdoors.shared.blocks;
|
|||
|
||||
import com.zixiken.dimdoors.DimDoors;
|
||||
import com.zixiken.dimdoors.shared.items.ModItems;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityVerticalEntranceRift;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
@ -22,4 +23,9 @@ public class BlockDimDoorIron extends BlockDimDoorBase {
|
|||
public Item getItem() {
|
||||
return ModItems.DIMENSIONAL_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,4 +24,9 @@ public class BlockDimDoorPersonal extends BlockDimDoorBase {
|
|||
public Item getItem() {
|
||||
return ModItems.PERSONAL_DIMENSIONAL_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package com.zixiken.dimdoors.shared.blocks;
|
||||
|
||||
import com.zixiken.dimdoors.DimDoors;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityVerticalEntranceRift;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class BlockDimDoorTransient extends BlockDimDoorBase { // TODO: convert to a more general entrance block (like nether portals) and
|
||||
public class BlockDimDoorTransient extends BlockDimDoorBase { // TODO: convert to a more general entrance block (like nether portals)
|
||||
|
||||
public static final String ID = "transient_dimensional_door";
|
||||
|
||||
|
@ -25,4 +26,9 @@ public class BlockDimDoorTransient extends BlockDimDoorBase { // TODO: convert t
|
|||
public boolean isCollidable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ public class BlockDimDoorUnstable extends BlockDimDoorBase {
|
|||
|
||||
public BlockDimDoorUnstable() {
|
||||
super(Material.IRON);
|
||||
setHardness(.2F);
|
||||
setHardness(0.2F);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setLightLevel(0.0F);
|
||||
|
@ -35,4 +35,9 @@ public class BlockDimDoorUnstable extends BlockDimDoorBase {
|
|||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return state.getValue(HALF) == BlockDoor.EnumDoorHalf.UPPER ? Items.AIR : Items.IRON_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,4 +24,9 @@ public class BlockDimDoorWarp extends BlockDimDoorBase {
|
|||
public Item getItem() {
|
||||
return ModItems.WARP_DIMENSIONAL_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setupRift(TileEntityVerticalEntranceRift rift) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,10 +2,7 @@ package com.zixiken.dimdoors.shared.blocks;
|
|||
|
||||
import com.zixiken.dimdoors.DimDoors;
|
||||
import com.zixiken.dimdoors.shared.tileentities.TileEntityHorizontalEntranceRift;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockTrapDoor;
|
||||
import net.minecraft.block.ITileEntityProvider;
|
||||
import net.minecraft.block.SoundType;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
@ -23,10 +20,10 @@ public class BlockDimTrapdoor extends BlockTrapDoor implements ITileEntityProvid
|
|||
|
||||
public BlockDimTrapdoor() {
|
||||
super(Material.WOOD);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setHardness(1.0F);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setUnlocalizedName(ID);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setHardness(1.0F);
|
||||
setSoundType(SoundType.WOOD);
|
||||
}
|
||||
|
||||
|
@ -47,22 +44,25 @@ public class BlockDimTrapdoor extends BlockTrapDoor implements ITileEntityProvid
|
|||
}
|
||||
}
|
||||
|
||||
public boolean checkCanOpen(World world, BlockPos pos, EntityPlayer player) {
|
||||
return true; // TODO: locking system
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World worldIn, int meta) {
|
||||
return new TileEntityHorizontalEntranceRift();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) {
|
||||
super.onBlockAdded(worldIn, pos, state);
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
|
||||
// TODO
|
||||
super.breakBlock(worldIn, pos, state);
|
||||
}
|
||||
|
||||
public boolean checkCanOpen(World world, BlockPos pos, EntityPlayer player) {
|
||||
return true; // TODO: locking system
|
||||
}
|
||||
|
||||
public static boolean isTrapdoorSetLow(IBlockState state) {
|
||||
return state.getValue(BlockTrapDoor.HALF) == DoorHalf.BOTTOM;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import com.zixiken.dimdoors.shared.items.ModItems;
|
|||
import net.minecraft.block.BlockDoor;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
@ -21,14 +23,15 @@ public class BlockDoorGold extends BlockDoor {
|
|||
|
||||
public BlockDoorGold() {
|
||||
super(Material.IRON);
|
||||
setHardness(0.1F);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setUnlocalizedName(ID);
|
||||
setCreativeTab(CreativeTabs.REDSTONE);
|
||||
setHardness(0.1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return state.getValue(BlockDoor.HALF) == EnumDoorHalf.LOWER ? ModItems.GOLD_DOOR : null;
|
||||
return state.getValue(HALF) == BlockDoor.EnumDoorHalf.UPPER ? Items.AIR : ModItems.GOLD_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -7,6 +7,8 @@ import com.zixiken.dimdoors.shared.items.ModItems;
|
|||
import net.minecraft.block.BlockDoor;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
@ -21,14 +23,15 @@ public class BlockDoorQuartz extends BlockDoor {
|
|||
|
||||
public BlockDoorQuartz() {
|
||||
super(Material.ROCK);
|
||||
setHardness(0.1F);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setUnlocalizedName(ID);
|
||||
setCreativeTab(CreativeTabs.REDSTONE);
|
||||
setHardness(0.1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
|
||||
return state.getValue(BlockDoor.HALF) == EnumDoorHalf.LOWER ? ModItems.QUARTZ_DOOR : null;
|
||||
return state.getValue(HALF) == BlockDoor.EnumDoorHalf.UPPER ? Items.AIR : ModItems.QUARTZ_DOOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -36,9 +36,6 @@ public class BlockFabric extends Block {
|
|||
public static final String ID = "fabric";
|
||||
public static final PropertyEnum<EnumType> TYPE = PropertyEnum.create("type", BlockFabric.EnumType.class);
|
||||
|
||||
private static final float SUPER_HIGH_HARDNESS = 10000000000000F;
|
||||
private static final float SUPER_EXPLOSION_RESISTANCE = 18000000F;
|
||||
|
||||
public enum EnumType implements IStringSerializable {
|
||||
REALITY("reality", 0),
|
||||
ANCIENT("ancient", 1),
|
||||
|
@ -58,26 +55,18 @@ public class BlockFabric extends Block {
|
|||
|
||||
public BlockFabric() {
|
||||
super(Material.CLOTH);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setLightLevel(1.0F);
|
||||
setHardness(0.1F);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setUnlocalizedName(ID);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setHardness(0.1F);
|
||||
setLightLevel(1.0F);
|
||||
setSoundType(SoundType.STONE);
|
||||
|
||||
setTickRandomly(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Theoretically, this shouldn't be needed, but just for precautions
|
||||
* this is added just incase
|
||||
* @param world world the block is in
|
||||
* @param pos block position
|
||||
* @param face the block face
|
||||
* @return fire begone!
|
||||
*/
|
||||
@Override
|
||||
public boolean isFlammable(IBlockAccess world, BlockPos pos, EnumFacing face) {
|
||||
public boolean isFlammable(IBlockAccess world, BlockPos pos, EnumFacing face) { // Just in case
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -103,7 +92,7 @@ public class BlockFabric extends Block {
|
|||
@Override
|
||||
public float getBlockHardness(IBlockState blockState, World worldIn, BlockPos pos) {
|
||||
if (blockState.getValue(TYPE).equals(EnumType.ANCIENT) || blockState.getValue(TYPE).equals(EnumType.ETERNAL)) {
|
||||
return SUPER_HIGH_HARDNESS;
|
||||
return -1; // unbreakable
|
||||
} else {
|
||||
return blockHardness;
|
||||
}
|
||||
|
@ -113,7 +102,7 @@ public class BlockFabric extends Block {
|
|||
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) {
|
||||
IBlockState state = world.getBlockState(pos);
|
||||
if (state.getValue(TYPE).equals(EnumType.ANCIENT) || state.getValue(TYPE).equals(EnumType.ETERNAL)) {
|
||||
return SUPER_EXPLOSION_RESISTANCE;
|
||||
return 6000000.0F / 5;
|
||||
} else {
|
||||
return super.getExplosionResistance(world, pos, exploder, explosion);
|
||||
}
|
||||
|
@ -121,12 +110,7 @@ public class BlockFabric extends Block {
|
|||
|
||||
@Override
|
||||
public int damageDropped(IBlockState state) {
|
||||
if (state.getValue(TYPE).equals(EnumType.ANCIENT) || state.getValue(TYPE).equals(EnumType.ETERNAL)) {
|
||||
//Return 0 to avoid dropping Ancient or Eternal Fabric even if the player somehow manages to break it
|
||||
return EnumType.REALITY.ordinal();
|
||||
} else {
|
||||
return state.getValue(TYPE).ordinal();
|
||||
}
|
||||
return state.getValue(TYPE).ordinal();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -217,7 +201,7 @@ public class BlockFabric extends Block {
|
|||
@Override
|
||||
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { //if this creates more problems, because everything ticks, we should probably move this to its own class again
|
||||
//Make sure this block is unraveled fabric in Limbo
|
||||
if (state.getValue(TYPE) == EnumType.ANCIENT && worldIn.provider instanceof WorldProviderLimbo) {
|
||||
if (state.getValue(TYPE) == EnumType.UNRAVELED && worldIn.provider instanceof WorldProviderLimbo) {
|
||||
LimboDecay.applySpreadDecay(worldIn, pos);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,11 +41,11 @@ public class BlockRift extends Block implements ITileEntityProvider {
|
|||
private final ArrayList<Block> blocksImmuneToRift; // TODO
|
||||
|
||||
public BlockRift() {
|
||||
super(Material.LEAVES); //Fire is replacable. We do not want this block to be replacable. We do want to walk through it though...
|
||||
setTickRandomly(true);
|
||||
setHardness(1.0F);
|
||||
setUnlocalizedName(ID);
|
||||
super(Material.LEAVES); //Fire is replacable. We do not want this block to be replacable. We do want to walk through it though... TODO
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
setUnlocalizedName(ID);
|
||||
setTickRandomly(true);
|
||||
setBlockUnbreakable();
|
||||
|
||||
blocksImmuneToRift = new ArrayList<>();
|
||||
blocksImmuneToRift.add(ModBlocks.FABRIC);
|
||||
|
@ -112,9 +112,7 @@ public class BlockRift extends Block implements ITileEntityProvider {
|
|||
}
|
||||
|
||||
public void dropWorldThread(World world, BlockPos pos, Random random) {
|
||||
Block block = world.getBlockState(pos).getBlock();
|
||||
|
||||
if (!world.getBlockState(pos).equals(Blocks.AIR) && !(block instanceof BlockLiquid || block instanceof IFluidBlock)) {
|
||||
if (!world.getBlockState(pos).equals(Blocks.AIR)) {
|
||||
ItemStack thread = new ItemStack(ModItems.WORLD_THREAD, 1);
|
||||
world.spawnEntity(new EntityItem(world, pos.getX(), pos.getY(), pos.getZ(), thread));
|
||||
}
|
||||
|
@ -150,7 +148,7 @@ public class BlockRift extends Block implements ITileEntityProvider {
|
|||
rand.nextGaussian() * 0.01D,
|
||||
rand.nextGaussian() * 0.01D));*/
|
||||
|
||||
if (tile.shouldClose) {//renders an opposite color effect if it is being closed by the rift remover
|
||||
if (tile.shouldClose) { //renders an opposite color effect if it is being closed by the rift remover
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(
|
||||
worldIn,
|
||||
x + .5, y + .5, z + .5,
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.zixiken.dimdoors.shared.commands;
|
|||
import com.zixiken.dimdoors.DimDoors;
|
||||
import com.zixiken.dimdoors.shared.*;
|
||||
import com.zixiken.dimdoors.shared.pockets.*;
|
||||
import com.zixiken.dimdoors.shared.rifts.TileEntityRift;
|
||||
import com.zixiken.dimdoors.shared.util.StringUtils;
|
||||
import com.zixiken.dimdoors.shared.util.WorldUtils;
|
||||
import com.zixiken.dimdoors.shared.world.DimDoorDimensions;
|
||||
|
@ -50,7 +51,10 @@ public class PocketCommand extends CommandBase {
|
|||
if (DimDoorDimensions.isPocketDimension(dim)) {
|
||||
PocketTemplate template = SchematicHandler.INSTANCE.getTemplate(args[0], args[1]);
|
||||
Pocket pocket = PocketGenerator.generatePocketFromTemplate(dim, 0, template, new VirtualLocation(0, 0, 0, 0,0));
|
||||
// TODO: teleport the player
|
||||
// TODO: options for linking back/not setting entrance
|
||||
pocket.selectEntrance();
|
||||
TileEntityRift entrance = (TileEntityRift) player.world.getTileEntity(pocket.getEntrance().getPos());
|
||||
entrance.teleportTo(player);
|
||||
} else {
|
||||
DimDoors.chat(player, "You must be in a pocket dimension to use this command!");
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ public class ItemBlockFabric extends ItemBlock {
|
|||
|
||||
public ItemBlockFabric() {
|
||||
super(ModBlocks.FABRIC);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setMaxDamage(0);
|
||||
setHasSubtypes(true);
|
||||
setRegistryName(BlockFabric.ID);
|
||||
|
|
|
@ -35,7 +35,7 @@ public abstract class ItemDoorBase extends ItemDoor {
|
|||
public ItemDoorBase(Block block, ItemDoor vanillaDoor) {
|
||||
super(block);
|
||||
setMaxStackSize(64);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
|
||||
doorItemMapping.put(this, this); //@todo Why?
|
||||
if (vanillaDoor != null) {
|
||||
|
|
|
@ -29,7 +29,7 @@ public class ItemRiftBlade extends ItemSword {
|
|||
|
||||
public ItemRiftBlade() {
|
||||
super(ToolMaterial.DIAMOND);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public class ItemRiftConnectionTool extends ItemTool {
|
|||
super(1.0F, -2.8F, ToolMaterial.WOOD, new HashSet<>());
|
||||
//@todo add extra stuff?
|
||||
setMaxDamage(16);
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ public class ItemRiftSignature extends Item {
|
|||
public static final String ID = "rift_signature";
|
||||
|
||||
public ItemRiftSignature() {
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ public class ItemStableFabric extends Item {
|
|||
public static final String ID = "stable_fabric";
|
||||
|
||||
public ItemStableFabric() {
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ public class ItemWorldThread extends Item {
|
|||
public static final String ID = "world_thread";
|
||||
|
||||
public ItemWorldThread() {
|
||||
setCreativeTab(DimDoors.dimDoorsCreativeTab);
|
||||
setCreativeTab(DimDoors.DIM_DOORS_CREATIVE_TAB);
|
||||
setUnlocalizedName(ID);
|
||||
setRegistryName(new ResourceLocation(DimDoors.MODID, ID));
|
||||
}
|
||||
|
|
|
@ -95,9 +95,6 @@ public class PocketTemplate { //there is exactly one pocket placer for each diff
|
|||
DimDoors.log(getClass(), "Rift found in schematic: " + pos);
|
||||
TileEntityRift rift = (TileEntityRift) tileEntity;
|
||||
rifts.add(rift);
|
||||
if (rift instanceof TileEntityVerticalEntranceRift) {
|
||||
DimDoors.proxy.updateDoorTE((BlockDimDoorBase) world.getBlockState(pos).getBlock(), world, pos);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
tileEntity.readFromNBT(tileEntityNBT); //this reads in the wrong blockPos
|
||||
|
|
|
@ -194,25 +194,7 @@ public class RiftRegistry extends WorldSavedData {
|
|||
registry.markDirty();
|
||||
}
|
||||
|
||||
public static void registerNewLink(Location from, Location to) {
|
||||
RiftRegistry registryFrom = getRegistry(from);
|
||||
RiftRegistry registryTo = getRegistry(to);
|
||||
registryFrom.rifts.get(from).destinations.add(to);
|
||||
registryTo.rifts.get(to).destinations.add(from);
|
||||
registryFrom.markDirty();
|
||||
registryTo.markDirty();
|
||||
}
|
||||
|
||||
public static void deleteLink(Location from, Location to) {
|
||||
RiftRegistry registryFrom = getRegistry(from);
|
||||
RiftRegistry registryTo = getRegistry(to);
|
||||
registryFrom.rifts.get(from).destinations.remove(to);
|
||||
registryTo.rifts.get(to).destinations.remove(from);
|
||||
registryFrom.markDirty();
|
||||
registryTo.markDirty();
|
||||
}
|
||||
|
||||
public static void deleteRift(Location rift) {
|
||||
public static void removeRift(Location rift) {
|
||||
RiftRegistry registry = getRegistry(rift);
|
||||
RiftInfo oldRift = registry.rifts.remove(rift);
|
||||
if (oldRift == null) return;
|
||||
|
@ -233,6 +215,24 @@ public class RiftRegistry extends WorldSavedData {
|
|||
registry.markDirty();
|
||||
}
|
||||
|
||||
public static void addLink(Location from, Location to) {
|
||||
RiftRegistry registryFrom = getRegistry(from);
|
||||
RiftRegistry registryTo = getRegistry(to);
|
||||
registryFrom.rifts.get(from).destinations.add(to);
|
||||
registryTo.rifts.get(to).destinations.add(from);
|
||||
registryFrom.markDirty();
|
||||
registryTo.markDirty();
|
||||
}
|
||||
|
||||
public static void removeLink(Location from, Location to) {
|
||||
RiftRegistry registryFrom = getRegistry(from);
|
||||
RiftRegistry registryTo = getRegistry(to);
|
||||
registryFrom.rifts.get(from).destinations.remove(to);
|
||||
registryTo.rifts.get(to).destinations.remove(from);
|
||||
registryFrom.markDirty();
|
||||
registryTo.markDirty();
|
||||
}
|
||||
|
||||
public static void addAvailableLink(Location rift, AvailableLinkInfo link) { // TODO cache rifts with availableLinks
|
||||
RiftRegistry registry = getRegistry(rift);
|
||||
registry.rifts.get(rift).availableLinks.add(link);
|
||||
|
|
|
@ -198,12 +198,12 @@ public abstract class TileEntityRift extends TileEntity implements ITickable { /
|
|||
|
||||
public void registerDest(RiftDestination dest) {
|
||||
Location destLoc = translateDestCoordinates(dest);
|
||||
if (destLoc != null) RiftRegistry.registerNewLink(new Location(world, pos), destLoc);
|
||||
if (destLoc != null) RiftRegistry.addLink(new Location(world, pos), destLoc);
|
||||
}
|
||||
|
||||
public void unregisterDest(RiftDestination dest) {
|
||||
Location destLoc = translateDestCoordinates(dest);
|
||||
if (destLoc != null) RiftRegistry.deleteLink(new Location(world, pos), destLoc);
|
||||
if (destLoc != null) RiftRegistry.removeLink(new Location(world, pos), destLoc);
|
||||
}
|
||||
|
||||
public void register() { // registers or reregisters the rift
|
||||
|
@ -214,8 +214,8 @@ public abstract class TileEntityRift extends TileEntity implements ITickable { /
|
|||
}
|
||||
}
|
||||
|
||||
public void destroyRift() {
|
||||
RiftRegistry.deleteRift(new Location(world, pos));
|
||||
public void unregister() {
|
||||
RiftRegistry.removeRift(new Location(world, pos));
|
||||
// TODO: inform pocket that entrance was destroyed (we'll probably need an isPrivate field on the pocket)
|
||||
}
|
||||
|
||||
|
|
|
@ -76,5 +76,4 @@ public abstract class TileEntityEntranceRift extends TileEntityRift {
|
|||
}
|
||||
return new RGBA(red, green, blue, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue