Posted June 4, 20205 yr public class BlockUsaPortal extends Block{ public BlockUsaPortal(Properties properties){ super(properties); } public boolean hasTileEntity(BlockState state){ return true; } public TileEntity createTileEntity(BlockState state, IBlockReader world) { return ModTileEntityTypes.USAPORTAL.get().create(); } public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { if (!worldIn.isRemote && !entityIn.isPassenger() && !entityIn.isBeingRidden() && entityIn.isNonBoss() && VoxelShapes.compare(VoxelShapes.create(entityIn.getBoundingBox().offset((double)(-pos.getX()), (double)(-pos.getY()), (double)(-pos.getZ()))), state.getShape(worldIn, pos), IBooleanFunction.AND)) { entityIn.changeDimension(worldIn.dimension.getType() == DimensionType.OVERWORLD ? DimensionType.OVERWORLD : (DimensionType) DimensionInit.USA_DIMENSION.get().getFactory()); } } } So I'm trying to make a portal for a custom dimension. Right now I'm just trying to get it to teleport you to this dimension when you touch it, and so far that's not working. When I come into contact with this block in the overworld, all it does is spawn a nether portal where I'm standing (or teleports me to a nearby one). If I try to do it in the custom dimension the game crashes. Any advice on how I can get this to work properly is appreciated.
June 4, 20205 yr For the teleport code, just look into the /forge setdimension command. That should help.
June 4, 20205 yr Author I figured it out by looking at the dimension manager class. entityIn.changeDimension(worldIn.dimension.getType() == DimensionType.OVERWORLD ? DimensionManager.registerOrGetDimension(racismmod.USA_TYPE, DimensionInit.USA_DIMENSION.get(), null, true) : DimensionType.OVERWORLD);
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.