mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-12-18 04:48:24 +00:00
remove test avatar
This commit is contained in:
parent
1567e480e1
commit
0132ad66ab
@ -14,20 +14,22 @@ import emu.grasscutter.game.inventory.ItemType;
|
||||
import java.util.*;
|
||||
|
||||
@Command(label = "giveall", usage = "giveall [player] <amount>",
|
||||
description = "Gives all items", aliases = {"givea"}, permission = "player.giveall",threading = true)
|
||||
description = "Gives all items", aliases = {"givea"}, permission = "player.giveall", threading = true)
|
||||
public class GiveAllCommand implements CommandHandler {
|
||||
|
||||
@Override
|
||||
public void execute(GenshinPlayer sender, List<String> args) {
|
||||
int target,amount=99999;
|
||||
int target, amount = 99999;
|
||||
|
||||
if(sender == null){
|
||||
CommandHandler.sendMessage(null, "Run this command in-game");
|
||||
switch (args.size()) {
|
||||
case 0: // *no args*
|
||||
if (sender == null) {
|
||||
CommandHandler.sendMessage(null, "This usage can only be run in-game");
|
||||
return;
|
||||
}
|
||||
switch (args.size()) {
|
||||
default: // *no args*
|
||||
target = sender.getUid();
|
||||
break;
|
||||
|
||||
case 1: // [player]
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
@ -40,6 +42,7 @@ public class GiveAllCommand implements CommandHandler {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // [player] [amount]
|
||||
try {
|
||||
target = Integer.parseInt(args.get(0));
|
||||
@ -54,6 +57,10 @@ public class GiveAllCommand implements CommandHandler {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default: // invalid
|
||||
CommandHandler.sendMessage(null, "Usage: giveall [player] <amount>");
|
||||
return;
|
||||
}
|
||||
|
||||
GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target);
|
||||
@ -62,47 +69,121 @@ public class GiveAllCommand implements CommandHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
this.GetAllItem(targetPlayer,amount);
|
||||
CommandHandler.sendMessage(sender, "Done! or Getting all items done");
|
||||
this.giveAllItems(targetPlayer, amount);
|
||||
CommandHandler.sendMessage(sender, "Giving all items done");
|
||||
}
|
||||
|
||||
public void GetAllItem(GenshinPlayer player, int amount){
|
||||
CommandHandler.sendMessage(player, "Getting all item....");
|
||||
public void giveAllItems(GenshinPlayer player, int amount) {
|
||||
CommandHandler.sendMessage(player, "Giving all items...");
|
||||
|
||||
Collection<GenshinItem> genshinItemList =new LinkedList<>();
|
||||
for (ItemData itemdata: GenshinData.getItemDataMap().values()) {
|
||||
if(itemdata.getId() > 1000 && itemdata.getId() <= 1099)continue;//is avatar
|
||||
if (itemdata.isEquip()) {
|
||||
for (int i = 0; i < 20; i++) {
|
||||
GenshinItem genshinItem = new GenshinItem(itemdata);
|
||||
if(itemdata.getItemType() == ItemType.ITEM_WEAPON){
|
||||
genshinItem.setLevel(90);
|
||||
genshinItem.setPromoteLevel(6);
|
||||
}
|
||||
genshinItemList.add(genshinItem);
|
||||
}
|
||||
} else {
|
||||
GenshinItem genshinItem = new GenshinItem(itemdata);
|
||||
genshinItem.setCount(amount);
|
||||
genshinItemList.add(genshinItem);
|
||||
}
|
||||
}
|
||||
player.getInventory().addItems(genshinItemList);
|
||||
for (AvatarData avatarData: GenshinData.getAvatarDataMap().values()) {
|
||||
//Exclude test avatar
|
||||
if (isTestAvatar(avatarData.getId())) continue;
|
||||
|
||||
for(AvatarData avatarData:GenshinData.getAvatarDataMap().values()) {
|
||||
if(avatarData.getId() == 10000001 || avatarData.getId() >= 10000099)continue;
|
||||
// Calculate ascension level.
|
||||
int ascension = (int) Math.ceil(90 / 10f) - 3;
|
||||
GenshinAvatar avatar = new GenshinAvatar(avatarData);
|
||||
avatar.setLevel(90);
|
||||
avatar.setPromoteLevel(ascension);
|
||||
for (int i = 1;i<=6;i++){
|
||||
avatar.getTalentIdList().add((avatar.getAvatarId()-10000000)*10+i);//(10000058-10000000)*10+i
|
||||
avatar.setPromoteLevel(6);
|
||||
for (int i = 1; i <= 6; ++i) {
|
||||
avatar.getTalentIdList().add((avatar.getAvatarId() - 10000000) * 10 + i);
|
||||
}
|
||||
// This will handle stats and talents
|
||||
avatar.recalcStats();
|
||||
player.addAvatar(avatar);
|
||||
}
|
||||
|
||||
//some test items
|
||||
List<GenshinItem> genshinItemList = new ArrayList<>();
|
||||
for (ItemData itemdata: GenshinData.getItemDataMap().values()) {
|
||||
//Exclude test item
|
||||
if (isTestItem(itemdata.getId())) continue;
|
||||
|
||||
if (itemdata.isEquip()) {
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
GenshinItem genshinItem = new GenshinItem(itemdata);
|
||||
if (itemdata.getItemType() == ItemType.ITEM_WEAPON) {
|
||||
genshinItem.setLevel(90);
|
||||
genshinItem.setPromoteLevel(6);
|
||||
genshinItem.setRefinement(4);
|
||||
}
|
||||
genshinItemList.add(genshinItem);
|
||||
}
|
||||
}
|
||||
else {
|
||||
GenshinItem genshinItem = new GenshinItem(itemdata);
|
||||
genshinItem.setCount(amount);
|
||||
genshinItemList.add(genshinItem);
|
||||
}
|
||||
}
|
||||
int packetNum = 20;
|
||||
int itemLength = genshinItemList.size();
|
||||
int number = itemLength / packetNum;
|
||||
int remainder = itemLength % packetNum;
|
||||
int offset = 0;
|
||||
for (int i = 0; i < packetNum; ++i) {
|
||||
if (remainder > 0) {
|
||||
player.getInventory().addItems(genshinItemList.subList(i * number + offset, (i + 1) * number + offset + 1));
|
||||
--remainder;
|
||||
++offset;
|
||||
}
|
||||
else {
|
||||
player.getInventory().addItems(genshinItemList.subList(i * number + offset, (i + 1) * number + offset));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isTestAvatar(int avatarId) {
|
||||
return avatarId < 10000002 || avatarId >= 11000000;
|
||||
}
|
||||
|
||||
public boolean isTestItem(int itemId) {
|
||||
for (Range range: testItemRanges) {
|
||||
if (range.check(itemId)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (testItemsList.contains(itemId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static class Range {
|
||||
private int min;
|
||||
private int max;
|
||||
|
||||
public Range(int min, int max) {
|
||||
if(min > max){
|
||||
min ^= max;
|
||||
max ^= min;
|
||||
min ^= max;
|
||||
}
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public boolean check(int value) {
|
||||
return value >= this.min && value <= this.max;
|
||||
}
|
||||
}
|
||||
|
||||
private static final Range[] testItemRanges = new Range[] {
|
||||
new Range(106, 139),
|
||||
new Range(1000, 1099),
|
||||
new Range(2001, 2008),
|
||||
new Range(2017, 2029),
|
||||
// new Range(108001, 108387) //food
|
||||
};
|
||||
|
||||
private static final Integer[] testItemsIds = new Integer[] {
|
||||
210, 211, 314, 315, 317, 1005, 1007, 1105, 1107, 1201, 1202, 2800,
|
||||
100001, 100002, 100244, 100305, 100312, 100313, 101212, 11411, 11506, 11507, 11508, 12505,
|
||||
12506, 12508, 12509, 13503, 13506, 14411, 14503, 14505, 14508, 15411, 15504, 15505,
|
||||
15506, 15508, 20001, 10002, 10003, 10004, 10005, 10006, 10008 //9
|
||||
};
|
||||
|
||||
private static final Collection<Integer> testItemsList = Arrays.asList(testItemsIds);
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user