Improve Energy Teleporter Y
All checks were successful
EnergonRelics/pipeline/head This commit looks good

This commit is contained in:
TheBrokenRail 2020-08-19 19:57:38 -04:00
parent f6e94963d2
commit f4bb60b819

View File

@ -13,7 +13,6 @@ import net.minecraft.server.world.ServerWorld;
import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents; import net.minecraft.sound.SoundEvents;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.Heightmap; import net.minecraft.world.Heightmap;
@ -54,30 +53,13 @@ class EnergyTeleporter {
} }
private static int convertY(int y, int oldHeight, int newHeight) { private static int convertY(int y, int oldHeight, int newHeight) {
int newY = (int) (((float) y / (float) oldHeight) * (float) newHeight);
int bottomPadding = HardcodedConfig.ENERGY_PORTAL_Y_PADDING; int bottomPadding = HardcodedConfig.ENERGY_PORTAL_Y_PADDING;
int topPadding = bottomPadding + HardcodedConfig.ENERGY_PORTAL_Y_PADDING_EXTRA_TOP; int topPadding = bottomPadding + HardcodedConfig.ENERGY_PORTAL_Y_PADDING_EXTRA_TOP;
newY = Math.max(bottomPadding, Math.min(topPadding, newY));
int oldMax = oldHeight - topPadding; return newY;
y = MathHelper.clamp(y, bottomPadding, oldMax);
int totalPadding = bottomPadding + topPadding;
int oldPaddedHeight = oldHeight - totalPadding;
int newPaddedHeight = newHeight - totalPadding;
float multiplier = (float) newPaddedHeight / (float) oldPaddedHeight;
y = y - bottomPadding;
y = (int) (y * multiplier);
int newMax = newHeight - topPadding;
y = y + bottomPadding;
y = MathHelper.clamp(y, bottomPadding, newMax);
return y;
} }
private static void teleportWithMultiplier(ServerWorld world, Entity entity, BlockPos center, Vec3d offset, RegistryKey<World> toKey, double multiplier) { private static void teleportWithMultiplier(ServerWorld world, Entity entity, BlockPos center, Vec3d offset, RegistryKey<World> toKey, double multiplier) {