Last commit before AI code, GO BACK HERE

This commit is contained in:
2026-09-08 00:10:52 +02:00
parent 115bdad4f4
commit 6d307dbdd6
7 changed files with 203 additions and 17 deletions
@@ -2,11 +2,14 @@ package dev.lazysucksat.purgatory.dimension;
import com.mojang.logging.LogUtils;
import dev.lazysucksat.purgatory.Purgatory;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Position;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
@@ -49,10 +52,25 @@ public class DimensionTeleporter {
for (TeleportRequest request : toTeleport) {
ServerPlayer player = request.player();
ServerLevel level = request.targetLevel();
ServerLevel target = request.targetLevel();
double currentScale = player.level().dimensionType().coordinateScale();
double destScale = target.dimensionType().coordinateScale();
double scaleFactor = currentScale / destScale;
double targetX = player.getX() * scaleFactor;
double targetZ = player.getZ() * scaleFactor;
int blockX = (int) targetX;
int blockZ = (int) targetZ;
BlockPos highestPos = target.getHeightmapPos(Heightmap.Types.WORLD_SURFACE, new BlockPos(blockX, 0, blockZ));
int highestY = highestPos.getY();
if (player.isAlive()) {
player.teleportTo(level, 0.5, 70.0, 0.5, player.getYRot(), player.getXRot());
player.teleportTo(target, targetX, highestY, targetZ, player.getYRot(), player.getXRot());
} else {
teleportQueue.add(request);
}
@@ -0,0 +1,52 @@
package dev.lazysucksat.purgatory.dimension;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraftforge.common.util.ITeleporter;
import java.util.function.Function;
public class PurgatoryTeleport implements ITeleporter {
@Override
public Entity placeEntity(Entity entity, ServerLevel currentWorld, ServerLevel destWorld, float yaw, Function<Boolean, Entity> repositionEntity) {
if (!(entity instanceof ServerPlayer player)) {
return entity;
}
// Calculate coordinate scale between dimensions
double currentScale = currentWorld.dimensionType().coordinateScale();
double destScale = destWorld.dimensionType().coordinateScale();
double scaleFactor = currentScale / destScale;
int targetX = (int) (player.getX() * scaleFactor);
int targetZ = (int) (player.getZ() * scaleFactor);
// Find safe ground height
BlockPos searchPos = new BlockPos(targetX, destWorld.getMinBuildHeight(), targetZ);
BlockPos safePos = destWorld.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, searchPos);
// Ticket forces the destination chunk to compile BEFORE packet sending
destWorld.getChunkSource().addRegionTicket(
net.minecraft.server.level.TicketType.POST_TELEPORT,
new net.minecraft.world.level.ChunkPos(safePos),
1,
player.getId()
);
// Execute teleport and sync dimension/position packets
player.teleportTo(
destWorld,
safePos.getX() + 0.5,
safePos.getY(),
safePos.getZ() + 0.5,
yaw,
player.getXRot()
);
return player;
}
}
@@ -2,10 +2,10 @@
"type": "purgatory:purgatory_type",
"generator": {
"type": "minecraft:noise",
"settings": "minecraft:nether",
"settings": "purgatory:purgatory_noise",
"biome_source": {
"type": "minecraft:fixed",
"biome": "minecraft:plains"
"biome": "purgatory:purgatory"
}
}
}
@@ -1,20 +1,19 @@
{
"ultrawarm": true,
"natural": false,
"coordinate_scale": 1.0,
"ultrawarm": false,
"natural": true,
"coordinate_scale": 0.015625,
"has_skylight": false,
"has_ceiling": true,
"ambient_light": 0.1,
"fixed_time": 6000,
"has_ceiling": false,
"ambient_light": 0,
"monster_spawn_light_level": 0,
"monster_spawn_block_light_limit": 0,
"piglin_safe": true,
"piglin_safe": false,
"has_raids": false,
"bed_works": false,
"respawn_anchor_works": true,
"height": 128,
"min_y": 0,
"logical_height": 128,
"infiniburn": "#minecraft:infiniburn_nether",
"effects": "minecraft:the_nether"
"respawn_anchor_works": false,
"height": 384,
"min_y": -64,
"logical_height": 384,
"infiniburn": "#minecraft:infiniburn_overworld",
"effects": "minecraft:the_end"
}
@@ -0,0 +1,16 @@
{
"has_precipitation": false,
"temperature": 0.5,
"downfall": 0.5,
"effects": {
"sky_color": 0,
"fog_color": 1051871,
"water_color": 4159204,
"water_fog_color": 329011,
"ambient_loop_sound": "minecraft:ambient.crimson_forest.loop"
},
"spawners": {},
"spawn_costs": {},
"carvers": {},
"features": []
}
@@ -0,0 +1,101 @@
{
"sea_level": -64,
"disable_mob_generation": true,
"aquifers_enabled": false,
"ore_veins_enabled": false,
"legacy_random_source": false,
"default_block": {
"Name": "minecraft:basalt",
"Properties": {
"axis": "y"
}
},
"default_fluid": {
"Name": "minecraft:air"
},
"noise": {
"min_y": -64,
"height": 384,
"size_horizontal": 2,
"size_vertical": 1
},
"noise_router": {
"barrier": 0,
"fluid_level_floodedness": 0,
"fluid_level_spread": 0,
"lava": 0,
"temperature": 0,
"vegetation": 0,
"continents": "minecraft:overworld/continents",
"erosion": "minecraft:overworld/erosion",
"depth": "minecraft:overworld/depth",
"ridges": "minecraft:overworld/ridges",
"initial_density_without_jaggedness": {
"type": "minecraft:add",
"argument1": -0.2,
"argument2": {
"type": "minecraft:mul",
"argument1": 1.5,
"argument2": "minecraft:overworld/sloped_cheese"
}
},
"final_density": {
"type": "minecraft:squeeze",
"argument": {
"type": "minecraft:mul",
"argument1": 0.64,
"argument2": {
"type": "minecraft:interpolated",
"argument": {
"type": "minecraft:blend_density",
"argument": "minecraft:overworld/sloped_cheese"
}
}
}
},
"vein_toggle": 0,
"vein_ridged": 0,
"vein_gap": 0
},
"spawn_target": [],
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:above_preliminary_surface"
},
"then_run": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:noise_threshold",
"noise": "minecraft:surface",
"min_threshold": -0.2,
"max_threshold": 0.2
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:bone_block",
"Properties": {
"axis": "y"
}
}
}
},
{
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:soul_soil"
}
}
]
}
}
]
}
}