From 76251c67184dd6d56150d6ca0eb40bebac941051 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Sat, 29 Apr 2023 14:07:22 -0400 Subject: [PATCH] Fix invalid gadget info for worktops --- .../game/entity/gadget/GadgetWorktop.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) 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) {