From 4b03770ec100206d1cb136b8a756b6d7b50a9c7f Mon Sep 17 00:00:00 2001
From: AnimeGitB <AnimeGitB@bigblueball.in>
Date: Wed, 10 Aug 2022 17:40:00 +0930
Subject: [PATCH] Hide resin from map when disabled

---
 .../send/PacketOpenStateUpdateNotify.java     | 20 ++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java
index 12d1bcac..15187048 100644
--- a/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java
+++ b/src/main/java/emu/grasscutter/server/packet/send/PacketOpenStateUpdateNotify.java
@@ -1,5 +1,7 @@
 package emu.grasscutter.server.packet.send;
 
+import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
+
 import emu.grasscutter.data.GameData;
 import emu.grasscutter.data.excels.OpenStateData;
 import emu.grasscutter.game.player.Player;
@@ -19,17 +21,21 @@ public class PacketOpenStateUpdateNotify extends BasePacket {
 
         OpenStateUpdateNotify.Builder proto = OpenStateUpdateNotify.newBuilder();
 
-        for (OpenStateData state : GameData.getOpenStateList()) {
+        GameData.getOpenStateList().stream().map(OpenStateData::getId).forEach(id -> {
+            if ((id == 45) && !GAME_OPTIONS.resinOptions.resinUsage) {
+                proto.putOpenStateMap(45, 0);  // Remove resin from map
+                return;
+            }
             // If the player has an open state stored in their map, then it would always override any default value
-            if (player.getOpenStates().containsKey(state.getId())) {
-                proto.putOpenStateMap(state.getId(), player.getProgressManager().getOpenState(state.getId()));
+            if (player.getOpenStates().containsKey(id)) {
+                proto.putOpenStateMap(id, player.getProgressManager().getOpenState(id));
             }
             // Otherwise, add the state if it is contained in the set of default open states. 
-            else if (PlayerProgressManager.DEFAULT_OPEN_STATES.contains(state.getId())) {
-                proto.putOpenStateMap(state.getId(), 1);
+            else if (PlayerProgressManager.DEFAULT_OPEN_STATES.contains(id)) {
+                proto.putOpenStateMap(id, 1);
             }
-        }
-        
+        });
+
         this.setData(proto);
     }
 }
-- 
GitLab