Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement new drop system. Full chest drop support. #1951

Closed
wants to merge 10 commits into from

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void execute(Player sender, Player targetPlayer, List<String> args) {
Grasscutter.loadConfig();
Grasscutter.loadLanguage();
Grasscutter.getGameServer().getGachaSystem().load();
Grasscutter.getGameServer().getDropSystem().load();
Grasscutter.getGameServer().getDropSystemLegacy().load();
Grasscutter.getGameServer().getShopSystem().load();

CommandHandler.sendMessage(sender, translate(sender, "commands.reload.reload_done"));
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/emu/grasscutter/data/GameData.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public class GameData {
@Getter private static final Int2ObjectMap<CookRecipeData> cookRecipeDataMap = new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<CompoundData> compoundDataMap=new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<DailyDungeonData> dailyDungeonDataMap = new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<DropTableData> dropTableDataMap=new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<DropMaterialData> dropMaterialDataMap=new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<DungeonData> dungeonDataMap = new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<DungeonEntryData> dungeonEntryDataMap = new Int2ObjectOpenHashMap<>();
@Getter private static final Int2ObjectMap<EnvAnimalGatherConfigData> envAnimalGatherConfigDataMap = new Int2ObjectOpenHashMap<>();
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/emu/grasscutter/data/common/DropItemData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package emu.grasscutter.data.common;

import com.google.gson.annotations.SerializedName;
import lombok.Getter;

@Getter
public class DropItemData {
@SerializedName(value="itemId")
private int id;
private String countRange;
private int weight;
}
18 changes: 18 additions & 0 deletions src/main/java/emu/grasscutter/data/excels/DropMaterialData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package emu.grasscutter.data.excels;

import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import lombok.Getter;

@ResourceType(name = "DropMaterialExcelConfigData.json")
@Getter
public class DropMaterialData extends GameResource {
@Getter(onMethod = @__(@Override))
private int id;
private boolean useOnGain;
private boolean disableFirstGainHint;
private boolean autoPick;
private boolean dropSeparately;
private int groupId;
private boolean forceGainHint;
}
25 changes: 25 additions & 0 deletions src/main/java/emu/grasscutter/data/excels/DropTableData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package emu.grasscutter.data.excels;

import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.data.ResourceType.LoadPriority;
import emu.grasscutter.data.common.DropItemData;
import lombok.Getter;

import java.util.List;

@ResourceType(name ={"DropTableExcelConfigData.json","DropSubTableExcelConfigData.json"} , loadPriority = LoadPriority.HIGH)
@Getter
public class DropTableData extends GameResource {
@Getter(onMethod = @__(@Override))
private int id;
private int randomType;
private int dropLevel;
private List<DropItemData> dropVec;
private int nodeType;
private boolean fallToGround;
private int sourceType;
private int everydayLimit;
private int historyLimit;
private int activityLimit;
}
11 changes: 11 additions & 0 deletions src/main/java/emu/grasscutter/game/drop/BaseDropData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package emu.grasscutter.game.drop;

import lombok.Getter;

@Getter
public class BaseDropData {
private int minLevel;
private String index;
private int dropId;
private int dropCount;
}
9 changes: 9 additions & 0 deletions src/main/java/emu/grasscutter/game/drop/ChestDropData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package emu.grasscutter.game.drop;

import lombok.Getter;

@Getter
public class ChestDropData extends BaseDropData {
private int sourceType;
private String type;
}
1 change: 1 addition & 0 deletions src/main/java/emu/grasscutter/game/drop/DropData.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package emu.grasscutter.game.drop;

@Deprecated
public class DropData {
private int minWeight;
private int maxWeight;
Expand Down