diff --git a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java index 85534434b..d0143d5cf 100644 --- a/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java +++ b/src/main/java/emu/grasscutter/game/entity/gadget/GadgetWorktop.java @@ -1,5 +1,6 @@ package emu.grasscutter.game.entity.gadget; +import emu.grasscutter.Grasscutter; import emu.grasscutter.game.entity.EntityGadget; import emu.grasscutter.game.entity.gadget.worktop.WorktopWorktopOptionHandler; import emu.grasscutter.game.player.Player; @@ -10,6 +11,7 @@ import emu.grasscutter.net.proto.WorktopInfoOuterClass.WorktopInfo; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; import java.util.Arrays; +import java.util.Collections; public final class GadgetWorktop extends GadgetContent { private IntSet worktopOptions; @@ -45,14 +47,19 @@ public final class GadgetWorktop extends GadgetContent { } public void onBuildProto(SceneGadgetInfo.Builder gadgetInfo) { - if (this.worktopOptions == null) { - return; + var options = this.getWorktopOptions(); + if (options == null) return; + + try { + var worktop = WorktopInfo.newBuilder() + .addAllOptionList(options).build(); + gadgetInfo.setWorktop(worktop); + } catch (NullPointerException ignored) { + // "this.wrapped" is null. + gadgetInfo.setWorktop(WorktopInfo.newBuilder() + .addAllOptionList(Collections.emptyList()).build()); + Grasscutter.getLogger().warn("GadgetWorktop.onBuildProto: this.wrapped is null"); } - - WorktopInfo worktop = - WorktopInfo.newBuilder().addAllOptionList(this.getWorktopOptions()).build(); - - gadgetInfo.setWorktop(worktop); } public void setOnSelectWorktopOptionEvent(WorktopWorktopOptionHandler handler) {