mirror of
https://github.com/dragonruler1000/hdm-mod.git
synced 2025-06-29 00:19:32 -05:00
Refactor teleportation logic and add custom dimension config
Simplified portal activation logic to improve readability and efficiency, removing redundant checks and consolidating teleport code paths. Added configuration file for the "world1" custom dimension, defining its properties and behavior and fixing the bug I was having.
This commit is contained in:
parent
79949bc13b
commit
02d4df7c55
2 changed files with 38 additions and 44 deletions
|
@ -104,16 +104,16 @@ public class Window extends HorizontalBlock {
|
|||
Hand handIn,
|
||||
BlockRayTraceResult hit
|
||||
) {
|
||||
// Only process on the server side, avoid duplicating logic on client
|
||||
if (worldIn.isRemote()) return super.onBlockActivated(state, worldIn, pos, player, handIn, hit);
|
||||
// Do nothing if the player is crouching (commonly used for alternative interactions)
|
||||
if (player.isCrouching()) return super.onBlockActivated(state, worldIn, pos, player, handIn, hit);
|
||||
|
||||
// Get the server instance safely
|
||||
if (worldIn.getServer() == null) return super.onBlockActivated(state, worldIn, pos, player, handIn, hit);
|
||||
if (!worldIn.isRemote() && !player.isCrouching()) {
|
||||
MinecraftServer server = worldIn.getServer();
|
||||
if (server == null) return ActionResultType.PASS;
|
||||
|
||||
boolean goingToCustom = worldIn.getDimensionKey() != ModDimensions.World1;
|
||||
|
||||
ServerWorld targetWorld = (worldIn.getDimensionKey() == ModDimensions.World1)
|
||||
? server.getWorld(World.OVERWORLD)
|
||||
: server.getWorld(ModDimensions.World1);
|
||||
|
||||
// Check if in custom dimension; if so, teleport to Overworld
|
||||
if (worldIn.getDimensionKey() == ModDimensions.World1) {
|
||||
ServerWorld overWorld = server.getWorld(World.OVERWORLD);
|
||||
if (overWorld != null) {
|
||||
|
@ -121,38 +121,17 @@ public class Window extends HorizontalBlock {
|
|||
}
|
||||
}
|
||||
|
||||
// Set up for teleportation based on current dimension
|
||||
ServerWorld targetWorld;
|
||||
boolean goingToCustom = worldIn.getDimensionKey() != ModDimensions.World1;
|
||||
|
||||
if (goingToCustom) {
|
||||
// Teleporting from Overworld to custom dimension
|
||||
targetWorld = server.getWorld(ModDimensions.World1);
|
||||
} else {
|
||||
// From custom dimension, teleport to Overworld
|
||||
ServerWorld world1 = server.getWorld(ModDimensions.World1);
|
||||
if (world1 != null) {
|
||||
player.changeDimension(world1, new SimpleTeleporter(pos, true));
|
||||
}
|
||||
targetWorld = server.getWorld(World.OVERWORLD);
|
||||
}
|
||||
|
||||
// Attempt teleport if a valid world was found
|
||||
if (targetWorld != null) {
|
||||
SimpleTeleporter teleporter = new SimpleTeleporter(pos, goingToCustom);
|
||||
player.changeDimension(targetWorld, teleporter);
|
||||
|
||||
// Notify the player about the result
|
||||
if (teleporter.wasSuccessful()) {
|
||||
player.sendMessage(new StringTextComponent("Teleportation successful!"), player.getUniqueID());
|
||||
} else {
|
||||
player.sendMessage(new StringTextComponent("Teleportation failed: no safe location found."), player.getUniqueID());
|
||||
}
|
||||
|
||||
System.out.println("[DEBUG] Portal activated on server!");
|
||||
player.sendMessage(new StringTextComponent("Teleport logic running!"), player.getUniqueID());
|
||||
player.sendMessage(new StringTextComponent("Teleport attempted!"), player.getUniqueID());
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
// Fall back to default processing if teleportation did not occur
|
||||
}
|
||||
return super.onBlockActivated(state, worldIn, pos, player, handIn, hit);
|
||||
}
|
||||
|
||||
|
|
15
src/main/resources/data/hdm_mod/dimension_type/world1.json
Normal file
15
src/main/resources/data/hdm_mod/dimension_type/world1.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"logical_height": 256,
|
||||
"infiniburn": "minecraft:infiniburn_overworld",
|
||||
"effects": "minecraft:overworld",
|
||||
"ambient_light": 0,
|
||||
"bed_works": true,
|
||||
"respawn_anchor_works": false,
|
||||
"has_raids": true,
|
||||
"ultrawarm": false,
|
||||
"natural": true,
|
||||
"coordinate_scale": 1,
|
||||
"piglin_safe": false,
|
||||
"has_skylight": true,
|
||||
"has_ceiling": false
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue