mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-15 00:15:33 +01:00
[BREAKING] Item Usage Overhaul
-De-hardcode elemental orb values -De-hardcode exp items -Change ShopChest format (temporary, drop system overhaul will replace it entirely) -Food healing actually uses Ability data for real HP amounts
This commit is contained in:
@@ -4,6 +4,7 @@ import dev.morphia.annotations.Entity;
|
||||
import dev.morphia.annotations.Id;
|
||||
import dev.morphia.annotations.IndexOptions;
|
||||
import dev.morphia.annotations.Indexed;
|
||||
import dev.morphia.annotations.Transient;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.HomeWorldLevelData;
|
||||
@@ -25,12 +26,12 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
@Builder(builderMethodName = "of")
|
||||
public class GameHome {
|
||||
|
||||
@Id
|
||||
String id;
|
||||
|
||||
@Indexed(options = @IndexOptions(unique = true))
|
||||
long ownerUid;
|
||||
@Transient Player player;
|
||||
|
||||
int level;
|
||||
int exp;
|
||||
@@ -70,6 +71,8 @@ public class GameHome {
|
||||
}
|
||||
|
||||
public void onOwnerLogin(Player player) {
|
||||
if (this.player == null)
|
||||
this.player = player;
|
||||
player.getSession().send(new PacketHomeBasicInfoNotify(player, false));
|
||||
player.getSession().send(new PacketPlayerHomeCompInfoNotify(player));
|
||||
player.getSession().send(new PacketHomeComfortInfoNotify(player));
|
||||
@@ -78,30 +81,40 @@ public class GameHome {
|
||||
player.getSession().send(new PacketUnlockedHomeBgmNotify(player));
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
if (this.player == null)
|
||||
this.player = Grasscutter.getGameServer().getPlayerByUid((int) this.ownerUid, true);
|
||||
return this.player;
|
||||
}
|
||||
|
||||
public HomeWorldLevelData getLevelData(){
|
||||
return GameData.getHomeWorldLevelDataMap().get(level);
|
||||
}
|
||||
|
||||
public void addUnlockedHomeBgm(int homeBgmId) {
|
||||
getUnlockedHomeBgmList().add(homeBgmId);
|
||||
public boolean addUnlockedHomeBgm(int homeBgmId) {
|
||||
if (getUnlockedHomeBgmList().add(homeBgmId)) return false;
|
||||
|
||||
var player = this.getPlayer();
|
||||
player.sendPacket(new PacketUnlockHomeBgmNotify(homeBgmId));
|
||||
player.sendPacket(new PacketUnlockedHomeBgmNotify(player));
|
||||
save();
|
||||
return true;
|
||||
}
|
||||
|
||||
public Set<Integer> getUnlockedHomeBgmListInfo() {
|
||||
var list = getUnlockedHomeBgmList();
|
||||
if (list == null) {
|
||||
list = new HashSet<>();
|
||||
addAllDefaultUnlockedBgmIds(list);
|
||||
setUnlockedHomeBgmList(list);
|
||||
if (this.unlockedHomeBgmList == null) {
|
||||
this.unlockedHomeBgmList = new HashSet<>();
|
||||
addAllDefaultUnlockedBgmIds(this.unlockedHomeBgmList);
|
||||
save();
|
||||
}
|
||||
|
||||
return list;
|
||||
return this.unlockedHomeBgmList;
|
||||
}
|
||||
|
||||
private void addAllDefaultUnlockedBgmIds(Set<Integer> list) {
|
||||
GameData.getHomeWorldBgmDataMap().int2ObjectEntrySet().stream()
|
||||
.filter(entry -> entry.getValue().isDefaultUnlock())
|
||||
.forEach(entry -> list.add(entry.getIntKey()));
|
||||
GameData.getHomeWorldBgmDataMap().forEach((id, data) -> {
|
||||
if (data.isDefaultUnlock())
|
||||
list.add(id);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user