diff --git a/build.gradle b/build.gradle index 0223e1c4..1dde96dc 100644 --- a/build.gradle +++ b/build.gradle @@ -92,7 +92,7 @@ repositories { } dependencies { - minecraft 'net.minecraftforge:forge:1.15.2-31.0.1' + minecraft 'net.minecraftforge:forge:1.15.2-31.0.4' compileOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.2:api") runtimeOnly fg.deobf("mezz.jei:jei-1.15.2:6.0.0.2") diff --git a/src/main/java/de/ellpeck/naturesaura/blocks/BlockDimensionRail.java b/src/main/java/de/ellpeck/naturesaura/blocks/BlockDimensionRail.java index be096bcb..2cea7170 100644 --- a/src/main/java/de/ellpeck/naturesaura/blocks/BlockDimensionRail.java +++ b/src/main/java/de/ellpeck/naturesaura/blocks/BlockDimensionRail.java @@ -13,7 +13,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.Entity; import net.minecraft.entity.item.minecart.AbstractMinecartEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -30,18 +30,14 @@ import net.minecraft.util.SoundEvents; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.Style; -import net.minecraft.util.text.TextFormatting; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.gen.Heightmap; import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.common.util.ITeleporter; -import javax.annotation.Nullable; -import java.util.List; +import java.util.function.Function; import java.util.function.Supplier; public class BlockDimensionRail extends AbstractRailBlock implements IModItem, ICustomRenderType, ICustomBlockState, ICustomItemModel { @@ -95,24 +91,19 @@ public class BlockDimensionRail extends AbstractRailBlock implements IModItem, I world.playSound(null, pos, SoundEvents.ENTITY_ENDERMAN_TELEPORT, SoundCategory.BLOCKS, 1F, 1F); BlockPos goalCoords = this.getGoalCoords(world, pos); - - // TODO wait for Forge to have re-implemented ITeleporter - if (true) - return; - - cart.changeDimension(DimensionType.getById(this.goalDim)); - cart.moveToBlockPosAndAngles(goalCoords, cart.rotationYaw, cart.rotationPitch); + cart.changeDimension(DimensionType.getById(this.goalDim), new ITeleporter() { + @Override + public Entity placeEntity(Entity entity, ServerWorld currentWorld, ServerWorld destWorld, float yaw, Function repositionEntity) { + Entity result = repositionEntity.apply(false); + result.moveToBlockPosAndAngles(goalCoords, yaw, result.rotationPitch); + return result; + } + }); BlockPos spot = IAuraChunk.getHighestSpot(world, pos, 35, pos); IAuraChunk.getAuraChunk(world, spot).drainAura(spot, 50000); } - @Override - public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { - super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add(new StringTextComponent("CURRENTLY UNIMPLEMENTED - Waiting for a Forge change").setStyle(new Style().setColor(TextFormatting.RED))); - } - private BlockPos getGoalCoords(World world, BlockPos pos) { MinecraftServer server = world.getServer(); DimensionType goalDimType = DimensionType.getById(this.goalDim); diff --git a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java index 176efa67..0b2404af 100644 --- a/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java +++ b/src/main/java/de/ellpeck/naturesaura/entities/EntityMoverMinecart.java @@ -24,6 +24,7 @@ import net.minecraft.world.GameRules; import net.minecraft.world.World; import net.minecraft.world.dimension.DimensionType; import net.minecraftforge.common.util.Constants; +import net.minecraftforge.common.util.ITeleporter; import net.minecraftforge.fml.network.NetworkHooks; import javax.annotation.Nullable; @@ -134,8 +135,8 @@ public class EntityMoverMinecart extends AbstractMinecartEntity { @Nullable @Override - public Entity changeDimension(DimensionType destination) { - Entity entity = super.changeDimension(destination); + public Entity changeDimension(DimensionType destination, ITeleporter teleporter) { + Entity entity = super.changeDimension(destination, teleporter); if (entity instanceof EntityMoverMinecart) { BlockPos pos = entity.getPosition(); this.moveAura(this.world, this.lastPosition, entity.world, pos);