Add option for enabling costumes on trial avatars

This commit is contained in:
KingRainbow44 2023-06-01 14:23:12 -04:00
parent deaa13c2af
commit 2c7c8bf4fd
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
2 changed files with 28 additions and 21 deletions

View File

@ -17,19 +17,21 @@ import static emu.grasscutter.Grasscutter.*;
public class ConfigContainer { public class ConfigContainer {
/* /*
* Configuration changes: * Configuration changes:
* Version 5 - 'questing' has been changed from a boolean * Version 5 - 'questing' has been changed from a boolean
* to a container of options ('questOptions'). * to a container of options ('questOptions').
* This field will be removed in future versions. * This field will be removed in future versions.
* Version 6 - 'questing' has been fully replaced with 'questOptions'. * Version 6 - 'questing' has been fully replaced with 'questOptions'.
* The field for 'legacyResources' has been removed. * The field for 'legacyResources' has been removed.
* Version 7 - 'regionKey' is being added for authentication * Version 7 - 'regionKey' is being added for authentication
* with the new dispatch server. * with the new dispatch server.
* Version 8 - 'server' is being added for enforcing handbook server * Version 8 - 'server' is being added for enforcing handbook server
* addresses. * addresses.
* Version 9 - 'limits' was added for handbook requests. * Version 9 - 'limits' was added for handbook requests.
* Version 10 - 'trialCostumes' was added for enabling costumes
* on trial avatars.
*/ */
private static int version() { private static int version() {
return 9; return 10;
} }
/** /**
@ -255,6 +257,8 @@ public class ConfigContainer {
public boolean staminaUsage = true; public boolean staminaUsage = true;
public boolean energyUsage = true; public boolean energyUsage = true;
public boolean fishhookTeleport = true; public boolean fishhookTeleport = true;
public boolean trialCostumes = false;
@SerializedName(value = "questing", alternate = "questOptions") @SerializedName(value = "questing", alternate = "questOptions")
public Questing questing = new Questing(); public Questing questing = new Questing();
public ResinOptions resinOptions = new ResinOptions(); public ResinOptions resinOptions = new ResinOptions();

View File

@ -1,7 +1,5 @@
package emu.grasscutter.game.avatar; package emu.grasscutter.game.avatar;
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
import dev.morphia.annotations.*; import dev.morphia.annotations.*;
import emu.grasscutter.GameConstants; import emu.grasscutter.GameConstants;
import emu.grasscutter.data.GameData; import emu.grasscutter.data.GameData;
@ -32,12 +30,15 @@ import emu.grasscutter.net.proto.TrialAvatarInfoOuterClass.TrialAvatarInfo;
import emu.grasscutter.server.packet.send.*; import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.utils.helpers.ProtoHelper; import emu.grasscutter.utils.helpers.ProtoHelper;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import java.util.*;
import java.util.stream.Stream;
import javax.annotation.*;
import lombok.*; import lombok.*;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import javax.annotation.*;
import java.util.*;
import java.util.stream.Stream;
import static emu.grasscutter.config.Configuration.GAME_OPTIONS;
@Entity(value = "avatars", useDiscriminator = false) @Entity(value = "avatars", useDiscriminator = false)
public class Avatar { public class Avatar {
@Transient @Getter private final Int2ObjectMap<GameItem> equips; @Transient @Getter private final Int2ObjectMap<GameItem> equips;
@ -1243,13 +1244,15 @@ public class Avatar {
}); });
// Add costume if avatar has a costume. // Add costume if avatar has a costume.
GameData.getAvatarCostumeDataItemIdMap() if (GAME_OPTIONS.trialCostumes) {
GameData.getAvatarCostumeDataItemIdMap()
.values() .values()
.forEach( .forEach(
costumeData -> { costumeData -> {
if (costumeData.getCharacterId() != this.getAvatarId()) return; if (costumeData.getCharacterId() != this.getAvatarId()) return;
this.setCostume(costumeData.getId()); this.setCostume(costumeData.getId());
}); });
}
} }
/** Equips the items applied from {@link Avatar#applyTrialItems()}. */ /** Equips the items applied from {@link Avatar#applyTrialItems()}. */