Skip to content
Snippets Groups Projects
Commit e140284d authored by ImmuState's avatar ImmuState Committed by Melledy
Browse files

Persist unlocked blueprints to the database.

parent f243c101
No related merge requests found
...@@ -824,7 +824,6 @@ public class InventoryManager { ...@@ -824,7 +824,6 @@ public class InventoryManager {
int used = 0; int used = 0;
// Use // Use
Grasscutter.getLogger().info("Item: {}", useItem.getItemData().getId());
switch (useItem.getItemData().getMaterialType()) { switch (useItem.getItemData().getMaterialType()) {
case MATERIAL_FOOD: case MATERIAL_FOOD:
if (useItem.getItemData().getUseTarget().equals("ITEM_USE_TARGET_SPECIFY_DEAD_AVATAR")) { if (useItem.getItemData().getUseTarget().equals("ITEM_USE_TARGET_SPECIFY_DEAD_AVATAR")) {
...@@ -856,8 +855,9 @@ public class InventoryManager { ...@@ -856,8 +855,9 @@ public class InventoryManager {
// Determine the forging item we should unlock. // Determine the forging item we should unlock.
int forgeId = Integer.parseInt(useItem.getItemData().getItemUse().get(0).getUseParam().get(0)); int forgeId = Integer.parseInt(useItem.getItemData().getItemUse().get(0).getUseParam().get(0));
// Tell the client that this blueprint is now unlocked. // Tell the client that this blueprint is now unlocked and add the unlocked item to the player.
player.sendPacket(new PacketForgeFormulaDataNotify(forgeId)); player.sendPacket(new PacketForgeFormulaDataNotify(forgeId));
player.getUnlockedForgingBlueprints().add(forgeId);
// Use up the blueprint item. // Use up the blueprint item.
used = 1; used = 1;
......
...@@ -89,6 +89,7 @@ public class Player { ...@@ -89,6 +89,7 @@ public class Player {
private Set<Integer> nameCardList; private Set<Integer> nameCardList;
private Set<Integer> flyCloakList; private Set<Integer> flyCloakList;
private Set<Integer> costumeList; private Set<Integer> costumeList;
private Set<Integer> unlockedForgingBlueprints;
private Integer widgetId; private Integer widgetId;
...@@ -183,6 +184,7 @@ public class Player { ...@@ -183,6 +184,7 @@ public class Player {
this.nameCardList = new HashSet<>(); this.nameCardList = new HashSet<>();
this.flyCloakList = new HashSet<>(); this.flyCloakList = new HashSet<>();
this.costumeList = new HashSet<>(); this.costumeList = new HashSet<>();
this.unlockedForgingBlueprints = new HashSet<>();
this.setSceneId(3); this.setSceneId(3);
this.setRegionId(1); this.setRegionId(1);
...@@ -515,6 +517,10 @@ public class Player { ...@@ -515,6 +517,10 @@ public class Player {
return this.nameCardList; return this.nameCardList;
} }
public Set<Integer> getUnlockedForgingBlueprints() {
return unlockedForgingBlueprints;
}
public MpSettingType getMpSetting() { public MpSettingType getMpSetting() {
return MpSettingType.MP_SETTING_TYPE_ENTER_AFTER_APPLY; // TEMP return MpSettingType.MP_SETTING_TYPE_ENTER_AFTER_APPLY; // TEMP
} }
......
package emu.grasscutter.server.packet.send; package emu.grasscutter.server.packet.send;
import java.util.List;
import dev.morphia.AdvancedDatastore;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ForgeDataNotifyOuterClass.ForgeDataNotify; import emu.grasscutter.net.proto.ForgeDataNotifyOuterClass.ForgeDataNotify;
import emu.grasscutter.net.proto.ForgeQueueDataOuterClass.ForgeQueueData;
public class PacketForgeDataNotify extends BasePacket { public class PacketForgeDataNotify extends BasePacket {
...@@ -22,10 +18,13 @@ public class PacketForgeDataNotify extends BasePacket { ...@@ -22,10 +18,13 @@ public class PacketForgeDataNotify extends BasePacket {
: 1; : 1;
ForgeDataNotify proto = ForgeDataNotify.newBuilder() ForgeDataNotify proto = ForgeDataNotify.newBuilder()
.addAllForgeIdList(List.of(14017, 14009, 14008)) .addAllForgeIdList(player.getUnlockedForgingBlueprints())
.setMaxQueueNum(numQueues) .setMaxQueueNum(numQueues)
.build(); .build();
// ToDo: Add the information for the actual forging queues
// and ongoing forges.
this.setData(proto); this.setData(proto);
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment