From e678b1f05ac18d122b9bbe5437427b1567e196f2 Mon Sep 17 00:00:00 2001 From: Malte Reents Date: Wed, 13 Mar 2024 22:56:46 +0100 Subject: [PATCH] fix for null-NBT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn ein leerer NBT gespeichert wurde (ohne spawnpunkt), gab das bisher einen Fehler und das speichern ist abgestürtzt --- .../modchest/mixin/ServerPlayerEntityMixin.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/modchest/mixin/ServerPlayerEntityMixin.java b/src/main/java/modchest/mixin/ServerPlayerEntityMixin.java index 06c2e4a..0a70b69 100644 --- a/src/main/java/modchest/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/modchest/mixin/ServerPlayerEntityMixin.java @@ -32,13 +32,25 @@ public abstract class ServerPlayerEntityMixin implements ServerPlayerEntityInter @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) public void writeCustomDataToNbt(NbtCompound nbt, CallbackInfo ci) { //Immer wenn eine andere Methode aufruft, dass Daten abgespeichert werden sollen, tun wir das jetzt auch - nbt.put("REServerMod", this.dataSaver); + if (dataSaver != null) { //wenn der dataSaver null ist, wuerde sonst ein Error kommen, weil Minecraft keine leeren NBTs absepeicheern kann :( + try { + nbt.put("REServerMod", this.dataSaver); + } catch (Exception e) { + REServerMod.LOGGER.info("Error while saving custom NBt-Data: " + e); + } + } else { + REServerMod.LOGGER.info("write failed! This probably means, that the player hasn't set a custom spanpoint yet"); + } //REServerMod.LOGGER.info("writeCustomDataToNbt called"); } @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) public void readCustomDataFromNbt(NbtCompound nbt, CallbackInfo ci) { //gleiches beim einlesen. Werden NBT-Daten eingelesen, tun wird das auch - dataSaver = (NbtCompound) nbt.get("REServerMod"); + try { + dataSaver = (NbtCompound) nbt.get("REServerMod"); + } catch (Exception e) { + REServerMod.LOGGER.info("Error while saving custom NBt-Data: " + e); + } //REServerMod.LOGGER.info("readCustomDataFromNbt called with following Data: " + Arrays.toString(nbt.getIntArray("REServerMod.sleep_data"))); } -- 2.40.1