Fix invalid gadget info for worktops

This commit is contained in:
KingRainbow44 2023-04-29 14:07:22 -04:00
parent 404ff9233a
commit 76251c6718
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE

View File

@ -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) {