This commit is contained in:
parent
ab15c7bd3c
commit
1e78023ee4
@ -53,13 +53,34 @@ class EnergyTeleporter {
|
||||
}
|
||||
}
|
||||
|
||||
private static int changeY(int y, int oldHeight, int newHeight) {
|
||||
int bottomPadding = HardcodedConfig.ENERGY_PORTAL_Y_PADDING;
|
||||
int topPadding = bottomPadding + HardcodedConfig.ENERGY_PORTAL_Y_PADDING_EXTRA_TOP;
|
||||
|
||||
int oldMax = oldHeight - topPadding;
|
||||
|
||||
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 = (int) (y * multiplier);
|
||||
|
||||
int newMax = newHeight - topPadding;
|
||||
|
||||
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) {
|
||||
ServerWorld to = world.getServer().getWorld(toKey);
|
||||
assert to != null;
|
||||
|
||||
float yMultiplier = (float) to.getDimensionHeight() / (float) world.getDimensionHeight();
|
||||
int y = (int) (center.getY() * yMultiplier);
|
||||
y = MathHelper.clamp(y, HardcodedConfig.ENERGY_PORTAL_Y_PADDING, to.getDimensionHeight() - HardcodedConfig.ENERGY_PORTAL_Y_PADDING - HardcodedConfig.ENERGY_PORTAL_Y_PADDING_EXTRA_TOP);
|
||||
int y = changeY(center.getY(), world.getDimensionHeight(), to.getDimensionHeight());
|
||||
|
||||
int x = (int) (center.getX() * multiplier);
|
||||
int z = (int) (center.getZ() * multiplier);
|
||||
|
Reference in New Issue
Block a user