More fixes

This commit is contained in:
Runemoro 2017-12-14 00:42:10 -05:00
parent a92e657b12
commit 9c63a9d73e
28 changed files with 141 additions and 134 deletions

View file

@ -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() {

View file

@ -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();

View file

@ -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) {

View file

@ -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();
}
}
}

View file

@ -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);
}

View file

@ -24,4 +24,9 @@ public class BlockDimDoorGold extends BlockDimDoorBase {
public Item getItem() {
return ModItems.GOLD_DIMENSIONAL_DOOR;
}
@Override
protected void setupRift(TileEntityVerticalEntranceRift rift) {
// TODO
}
}

View file

@ -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
}
}

View file

@ -24,4 +24,9 @@ public class BlockDimDoorPersonal extends BlockDimDoorBase {
public Item getItem() {
return ModItems.PERSONAL_DIMENSIONAL_DOOR;
}
@Override
protected void setupRift(TileEntityVerticalEntranceRift rift) {
// TODO
}
}

View file

@ -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
}
}

View file

@ -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
}
}

View file

@ -24,4 +24,9 @@ public class BlockDimDoorWarp extends BlockDimDoorBase {
public Item getItem() {
return ModItems.WARP_DIMENSIONAL_DOOR;
}
@Override
protected void setupRift(TileEntityVerticalEntranceRift rift) {
// TODO
}
}

View file

@ -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;
}
}

View file

@ -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

View file

@ -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

View file

@ -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);
}
}

View file

@ -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,

View file

@ -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!");
}

View file

@ -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);

View file

@ -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) {

View file

@ -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));
}

View file

@ -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));
}

View file

@ -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));
}

View file

@ -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));
}

View file

@ -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));
}

View file

@ -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

View file

@ -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);

View file

@ -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)
}

View file

@ -76,5 +76,4 @@ public abstract class TileEntityEntranceRift extends TileEntityRift {
}
return new RGBA(red, green, blue, 1);
}
}