Use the World registry instead of dimension IDs
In 1.16, they got rid of dimension IDs and started using a registry. I personally love this decision, but I need to update the mod for it.
This commit is contained in:
parent
3604a9027f
commit
3cbc868b51
@ -7,7 +7,7 @@ import net.minecraft.server.command.CommandManager;
|
|||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
import party._2a03.mc.server.Config;
|
import party._2a03.mc.server.Config;
|
||||||
import party._2a03.mc.server.PlayerData;
|
import party._2a03.mc.server.PlayerData;
|
||||||
import party._2a03.mc.server.PlayerPosition;
|
import party._2a03.mc.server.PlayerPosition;
|
||||||
@ -18,11 +18,11 @@ public class HomeCommand {
|
|||||||
ServerCommandSource source = ctx.getSource();
|
ServerCommandSource source = ctx.getSource();
|
||||||
ServerPlayerEntity sender = source.getPlayer();
|
ServerPlayerEntity sender = source.getPlayer();
|
||||||
PlayerPosition position = Config.getPlayer(sender.getUuid().toString()).getHome();
|
PlayerPosition position = Config.getPlayer(sender.getUuid().toString()).getHome();
|
||||||
if (position.dimensiontype == null) {
|
if (position.registrykey == null) {
|
||||||
source.sendFeedback(new LiteralText("Home not found, do /home set"), false);
|
source.sendFeedback(new LiteralText("Home not found, do /home set"), false);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sender.teleport(sender.getServer().getWorld(position.dimensiontype), position.x, position.y, position.z, position.yaw, position.pitch);
|
sender.teleport(sender.getServer().getWorld(position.registrykey), position.x, position.y, position.z, position.yaw, position.pitch);
|
||||||
source.sendFeedback(new LiteralText("Teleported to home"), true);
|
source.sendFeedback(new LiteralText("Teleported to home"), true);
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
@ -36,8 +36,8 @@ public class HomeCommand {
|
|||||||
double z = sender.getZ();
|
double z = sender.getZ();
|
||||||
float yaw = sender.yaw;
|
float yaw = sender.yaw;
|
||||||
float pitch = sender.pitch;
|
float pitch = sender.pitch;
|
||||||
DimensionType dimensiontype = sender.getServerWorld().getDimension().getType();
|
RegistryKey registrykey = sender.getServerWorld().getRegistryKey();
|
||||||
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, dimensiontype);
|
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, registrykey);
|
||||||
playerdata.setHome(location);
|
playerdata.setHome(location);
|
||||||
Config.setPlayer(playerdata);
|
Config.setPlayer(playerdata);
|
||||||
source.sendFeedback(new LiteralText("Your home has been updated"), true);
|
source.sendFeedback(new LiteralText("Your home has been updated"), true);
|
||||||
@ -55,8 +55,8 @@ public class HomeCommand {
|
|||||||
double z = sender.getZ();
|
double z = sender.getZ();
|
||||||
float yaw = sender.yaw;
|
float yaw = sender.yaw;
|
||||||
float pitch = sender.pitch;
|
float pitch = sender.pitch;
|
||||||
DimensionType dimensiontype = sender.getServerWorld().getDimension().getType();
|
RegistryKey registrykey = sender.getServerWorld().getRegistryKey();
|
||||||
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, dimensiontype);
|
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, registrykey);
|
||||||
playerdata.setHome(location);
|
playerdata.setHome(location);
|
||||||
Config.setPlayer(playerdata);
|
Config.setPlayer(playerdata);
|
||||||
source.sendFeedback(new LiteralText("User's home has been updated (" + StringArgumentType.getString(ctx, "UUID") + ")"), true);
|
source.sendFeedback(new LiteralText("User's home has been updated (" + StringArgumentType.getString(ctx, "UUID") + ")"), true);
|
||||||
|
@ -6,7 +6,7 @@ import net.minecraft.server.command.CommandManager;
|
|||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
import party._2a03.mc.server.Config;
|
import party._2a03.mc.server.Config;
|
||||||
import party._2a03.mc.server.PlayerPosition;
|
import party._2a03.mc.server.PlayerPosition;
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ public class SpawnCommand {
|
|||||||
ServerCommandSource source = ctx.getSource();
|
ServerCommandSource source = ctx.getSource();
|
||||||
ServerPlayerEntity sender = source.getPlayer();
|
ServerPlayerEntity sender = source.getPlayer();
|
||||||
PlayerPosition position = new PlayerPosition(Config.getData("spawn"));
|
PlayerPosition position = new PlayerPosition(Config.getData("spawn"));
|
||||||
if (position.dimensiontype == null) {
|
if (position.registrykey == null) {
|
||||||
if (source.hasPermissionLevel(2)) {
|
if (source.hasPermissionLevel(2)) {
|
||||||
source.sendFeedback(new LiteralText("Spawn not found, do /spawn set"), false);
|
source.sendFeedback(new LiteralText("Spawn not found, do /spawn set"), false);
|
||||||
} else {
|
} else {
|
||||||
@ -24,7 +24,7 @@ public class SpawnCommand {
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sender.teleport(sender.getServer().getWorld(position.dimensiontype), position.x, position.y, position.z, position.yaw, position.pitch);
|
sender.teleport(sender.getServer().getWorld(position.registrykey), position.x, position.y, position.z, position.yaw, position.pitch);
|
||||||
source.sendFeedback(new LiteralText("Teleported to the spawn point"), true);
|
source.sendFeedback(new LiteralText("Teleported to the spawn point"), true);
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
@ -39,8 +39,8 @@ public class SpawnCommand {
|
|||||||
double z = sender.getZ();
|
double z = sender.getZ();
|
||||||
float yaw = sender.yaw;
|
float yaw = sender.yaw;
|
||||||
float pitch = sender.pitch;
|
float pitch = sender.pitch;
|
||||||
DimensionType dimensiontype = sender.getServerWorld().getDimension().getType();
|
RegistryKey registrykey = sender.getServerWorld().getRegistryKey();
|
||||||
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, dimensiontype);
|
PlayerPosition location = new PlayerPosition(x, y, z, yaw, pitch, registrykey);
|
||||||
Config.setData("spawn", location.getJSON());
|
Config.setData("spawn", location.getJSON());
|
||||||
source.sendFeedback(new LiteralText("Spawn has been set"), true);
|
source.sendFeedback(new LiteralText("Spawn has been set"), true);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
package party._2a03.mc.mixin;
|
|
||||||
|
|
||||||
import net.minecraft.entity.LivingEntity;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import party._2a03.mc.server.Config;
|
|
||||||
import party._2a03.mc.server.PlayerPosition;
|
|
||||||
|
|
||||||
@Mixin(PlayerEntity.class)
|
|
||||||
public abstract class MixinPlayerEntity extends LivingEntity {
|
|
||||||
public MixinPlayerEntity() {
|
|
||||||
super(null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "getSpawnPosition", at = @At("RETURN"), cancellable = true)
|
|
||||||
public void OnGetSpawnPosition(CallbackInfoReturnable cir) {
|
|
||||||
PlayerPosition position = new PlayerPosition(Config.getData("spawn"));
|
|
||||||
if (position.dimensiontype == this.dimension)
|
|
||||||
cir.setReturnValue(null); // Don't override the world spawn.
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,23 +2,29 @@ package party._2a03.mc.mixin;
|
|||||||
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
|
import net.minecraft.world.World;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import party._2a03.mc.server.Config;
|
import party._2a03.mc.server.Config;
|
||||||
import party._2a03.mc.server.PlayerPosition;
|
import party._2a03.mc.server.PlayerPosition;
|
||||||
|
|
||||||
@Mixin(ServerPlayerEntity.class)
|
@Mixin(ServerPlayerEntity.class)
|
||||||
public abstract class MixinServerPlayerEntity extends PlayerEntity {
|
public abstract class MixinServerPlayerEntity extends PlayerEntity {
|
||||||
|
@Shadow
|
||||||
|
private RegistryKey<World> spawnPointDimension;
|
||||||
|
|
||||||
public MixinServerPlayerEntity() {
|
public MixinServerPlayerEntity() {
|
||||||
super(null, null);
|
super(null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "moveToSpawn", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "moveToSpawn", at = @At("HEAD"), cancellable = true)
|
||||||
private void OnServerPlayerSpawn(CallbackInfo ci) {
|
private void OnServerPlayerSpawn(CallbackInfo ci) {
|
||||||
PlayerPosition position = new PlayerPosition(Config.getData("spawn"));
|
PlayerPosition position = new PlayerPosition(Config.getData("spawn"));
|
||||||
if (position.dimensiontype == this.dimension) {
|
if (position.registrykey == this.spawnPointDimension) {
|
||||||
this.updatePositionAndAngles(position.x, position.y, position.z, position.yaw, position.pitch);
|
this.updatePositionAndAngles(position.x, position.y, position.z, position.yaw, position.pitch);
|
||||||
ci.cancel();
|
ci.cancel();
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ public class Config {
|
|||||||
json = new JSONObject(jsonRaw);
|
json = new JSONObject(jsonRaw);
|
||||||
} else {
|
} else {
|
||||||
LOGGER.info("Config not found, creating one");
|
LOGGER.info("Config not found, creating one");
|
||||||
json = new JSONObject("{\"disableTntExplosions\":false,\"spawn\":[0,0,0,0,0,-2],\"members\":[]}");
|
json = new JSONObject("{\"disableTntExplosions\":false,\"spawn\":[0,0,0,0,0,\"\"],\"members\":[]}");
|
||||||
saveConfig();
|
saveConfig();
|
||||||
}
|
}
|
||||||
LOGGER.info("Configuration loaded");
|
LOGGER.info("Configuration loaded");
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package party._2a03.mc.server;
|
package party._2a03.mc.server;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import net.minecraft.world.dimension.DimensionType;
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.registry.Registry;
|
||||||
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
import party._2a03.mc.server.Config;
|
import party._2a03.mc.server.Config;
|
||||||
|
|
||||||
public class PlayerPosition {
|
public class PlayerPosition {
|
||||||
@ -10,48 +12,48 @@ public class PlayerPosition {
|
|||||||
public double z;
|
public double z;
|
||||||
public float yaw;
|
public float yaw;
|
||||||
public float pitch;
|
public float pitch;
|
||||||
public DimensionType dimensiontype;
|
public RegistryKey registrykey;
|
||||||
|
|
||||||
public PlayerPosition() {
|
public PlayerPosition() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerPosition(JSONArray data) {
|
public PlayerPosition(JSONArray data) {
|
||||||
int dimension_id = data.getInt(5);
|
String registry_string = data.getString(5);
|
||||||
if (dimension_id != -2) {
|
if (!registry_string.isEmpty()) {
|
||||||
this.x = data.getDouble(0);
|
this.x = data.getDouble(0);
|
||||||
this.y = data.getDouble(1);
|
this.y = data.getDouble(1);
|
||||||
this.z = data.getDouble(2);
|
this.z = data.getDouble(2);
|
||||||
this.yaw = data.getNumber(3).floatValue();
|
this.yaw = data.getNumber(3).floatValue();
|
||||||
this.pitch = data.getNumber(4).floatValue();
|
this.pitch = data.getNumber(4).floatValue();
|
||||||
this.dimensiontype = DimensionType.byRawId(dimension_id);
|
this.registrykey = RegistryKey.of(Registry.DIMENSION, new Identifier(registry_string));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerPosition(double p_x, double p_y, double p_z, float p_yaw, float p_pitch, DimensionType p_dimensiontype) {
|
public PlayerPosition(double p_x, double p_y, double p_z, float p_yaw, float p_pitch, RegistryKey p_registrykey) {
|
||||||
this.x = p_x;
|
this.x = p_x;
|
||||||
this.y = p_y;
|
this.y = p_y;
|
||||||
this.z = p_z;
|
this.z = p_z;
|
||||||
this.yaw = p_yaw;
|
this.yaw = p_yaw;
|
||||||
this.pitch = p_pitch;
|
this.pitch = p_pitch;
|
||||||
this.dimensiontype = p_dimensiontype;
|
this.registrykey = p_registrykey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JSONArray getJSON() {
|
public JSONArray getJSON() {
|
||||||
JSONArray json = new JSONArray();
|
JSONArray json = new JSONArray();
|
||||||
if (this.dimensiontype != null) {
|
if (this.registrykey != null) {
|
||||||
json.put(this.x);
|
json.put(this.x);
|
||||||
json.put(this.y);
|
json.put(this.y);
|
||||||
json.put(this.z);
|
json.put(this.z);
|
||||||
json.put(this.yaw);
|
json.put(this.yaw);
|
||||||
json.put(this.pitch);
|
json.put(this.pitch);
|
||||||
json.put(this.dimensiontype.getRawId());
|
json.put(this.registrykey.getValue().toString());
|
||||||
} else {
|
} else {
|
||||||
json.put(0);
|
json.put(0);
|
||||||
json.put(0);
|
json.put(0);
|
||||||
json.put(0);
|
json.put(0);
|
||||||
json.put(0);
|
json.put(0);
|
||||||
json.put(0);
|
json.put(0);
|
||||||
json.put(-2);
|
json.put("");
|
||||||
}
|
}
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
"compatibilityLevel": "JAVA_8",
|
"compatibilityLevel": "JAVA_8",
|
||||||
"server": [
|
"server": [
|
||||||
"MixinGameModeCommand",
|
"MixinGameModeCommand",
|
||||||
"MixinPlayerEntity",
|
|
||||||
"MixinServerPlayerEntity",
|
"MixinServerPlayerEntity",
|
||||||
"MixinTntBlock",
|
"MixinTntBlock",
|
||||||
"MixinTntEntity"
|
"MixinTntEntity"
|
||||||
|
Loading…
Reference in New Issue
Block a user