From b375881a3e388d3f9515066ad51ca9ecaa88c18e Mon Sep 17 00:00:00 2001 From: Melledy <52122272+Melledy@users.noreply.github.com> Date: Wed, 18 May 2022 02:36:50 -0700 Subject: [PATCH] Fix errors caused by merge + Refactor chests into GadgetChest --- .../grasscutter/game/entity/EntityGadget.java | 34 +++--------- .../game/entity/gadget/GadgetChest.java | 53 +++++++++++++++++++ .../emu/grasscutter/game/player/Player.java | 7 --- .../emu/grasscutter/game/world/Scene.java | 7 +-- .../emu/grasscutter/scripts/ScriptLib.java | 4 +- 5 files changed, 64 insertions(+), 41 deletions(-) create mode 100644 src/main/java/emu/grasscutter/game/entity/gadget/GadgetChest.java diff --git a/src/main/java/emu/grasscutter/game/entity/EntityGadget.java b/src/main/java/emu/grasscutter/game/entity/EntityGadget.java index 6b4c677b2..db7e4b80e 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityGadget.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityGadget.java @@ -3,6 +3,7 @@ package emu.grasscutter.game.entity; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.def.GadgetData; +import emu.grasscutter.game.entity.gadget.GadgetChest; import emu.grasscutter.game.entity.gadget.GadgetContent; import emu.grasscutter.game.entity.gadget.GadgetGatherPoint; import emu.grasscutter.game.entity.gadget.GadgetRewardStatue; @@ -27,6 +28,7 @@ import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo; import emu.grasscutter.net.proto.SceneGadgetInfoOuterClass.SceneGadgetInfo; import emu.grasscutter.net.proto.VectorOuterClass.Vector; import emu.grasscutter.net.proto.WorktopInfoOuterClass.WorktopInfo; +import emu.grasscutter.server.packet.send.PacketGadgetStateNotify; import emu.grasscutter.utils.Position; import emu.grasscutter.utils.ProtoHelper; import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap; @@ -91,6 +93,11 @@ public class EntityGadget extends EntityBaseGadget { public void setState(int state) { this.state = state; } + + public void updateState(int state){ + this.setState(state); + this.getScene().broadcastPacket(new PacketGadgetStateNotify(this, state)); + } public int getPointType() { return pointType; @@ -120,6 +127,7 @@ public class EntityGadget extends EntityBaseGadget { case GatherPoint -> new GadgetGatherPoint(this); case Worktop -> new GadgetWorktop(this); case RewardStatue -> new GadgetRewardStatue(this); + case Chest -> new GadgetChest(this); default -> null; }; @@ -176,30 +184,4 @@ public class EntityGadget extends EntityBaseGadget { return entityInfo.build(); } - - public void openChest(Player player) { - var chestRewardMap = getScene().getWorld().getServer().getWorldDataManager().getChestRewardMap(); - var chestReward = chestRewardMap.get(this.getGadgetData().getJsonName()); - if(chestReward == null){ - Grasscutter.getLogger().warn("Could not found the config of this type of Chests {}", this.getGadgetData().getJsonName()); - return; - } - - player.earnExp(chestReward.getAdvExp()); - player.getInventory().addItem(201, chestReward.getResin()); - - var mora = chestReward.getMora() * (1 + (player.getWorldLevel() - 1) * 0.5); - player.getInventory().addItem(202, (int)mora); - - for(int i=0;i garbageGadgets = group.getGarbageGadgets(); if (garbageGadgets != null) { - garbageGadgets.forEach(g -> scriptManager.createGadgets(group.id, group.block_id, g)); + garbageGadgets.forEach(g -> scriptManager.createGadget(group.id, group.block_id, g)); } // Load suites @@ -706,9 +706,4 @@ public class Scene { addEntity(entity); } } - - public void updateGadgetState(EntityGadget gadget, int state){ - gadget.setState(state); - broadcastPacket(new PacketGadgetStateNotify(gadget, state)); - } } diff --git a/src/main/java/emu/grasscutter/scripts/ScriptLib.java b/src/main/java/emu/grasscutter/scripts/ScriptLib.java index 74aa8b6b6..7b2aefdc7 100644 --- a/src/main/java/emu/grasscutter/scripts/ScriptLib.java +++ b/src/main/java/emu/grasscutter/scripts/ScriptLib.java @@ -437,8 +437,8 @@ public class ScriptLib { return 1; } - if(entity instanceof EntityGadget entityGadget){ - getSceneScriptManager().getScene().updateGadgetState(entityGadget, state); + if (entity instanceof EntityGadget entityGadget) { + entityGadget.updateState(state); } return 0;