Skip to content

Commit

Permalink
[1.9.4-dev1]修复Folia端在控制台执行item give命令时,若玩家背包已满会报错的bug
Browse files Browse the repository at this point in the history
  • Loading branch information
YufiriaMazenta committed Apr 16, 2024
1 parent a17df45 commit c03e1fd
Show file tree
Hide file tree
Showing 20 changed files with 164 additions and 146 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import java.text.SimpleDateFormat
version = "1.9.3"
version = "1.9.4-dev1"

plugins {
`java-library`
Expand Down Expand Up @@ -40,7 +40,7 @@ dependencies {
compileOnly("io.lumine:Mythic-Dist:5.3.5")
compileOnly("io.lumine:MythicLib-dist:1.6.2-SNAPSHOT")
compileOnly("net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT")
implementation("com.crypticlib:CrypticLib:0.16.1")
implementation("com.crypticlib:CrypticLib:0.16.9")
}

group = "com.github.yufiriamazenta"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.github.yufiriamazenta.craftorithm.cmd.sub.item;

import com.github.yufiriamazenta.craftorithm.Craftorithm;
import com.github.yufiriamazenta.craftorithm.cmd.sub.AbstractSubCommand;
import com.github.yufiriamazenta.craftorithm.config.Languages;
import com.github.yufiriamazenta.craftorithm.item.impl.CraftorithmItemProvider;
import com.github.yufiriamazenta.craftorithm.util.CollectionsUtil;
import com.github.yufiriamazenta.craftorithm.util.LangUtil;
import crypticlib.CrypticLib;
import crypticlib.platform.IPlatform;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -52,8 +55,17 @@ public boolean execute(CommandSender sender, List<String> args) {

HashMap<Integer, ItemStack> failedItems = player.getInventory().addItem(itemStack);
if (!failedItems.isEmpty()) {
for (ItemStack stack : failedItems.values()) {
player.getWorld().dropItem(player.getLocation(), stack);
if (!CrypticLib.platform().platform().equals(IPlatform.Platform.FOLIA)) {
for (ItemStack stack : failedItems.values()) {
player.getWorld().dropItem(player.getLocation(), stack);
}
} else {
Runnable dropTask = () -> {
for (ItemStack stack : failedItems.values()) {
player.getWorld().dropItem(player.getLocation(), stack);
}
};
CrypticLib.platform().scheduler().runTaskOnEntity(Craftorithm.instance(), player, dropTask, dropTask);
}
}
LangUtil.sendLang(sender, Languages.COMMAND_ITEM_GIVE_SUCCESS);
Expand All @@ -63,9 +75,7 @@ public boolean execute(CommandSender sender, List<String> args) {
@Override
public List<String> tab(CommandSender sender, List<String> args) {
if (args.size() < 2) {
List<String> tabList = new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemMap().keySet());
filterTabList(tabList, args.get(0));
return tabList;
return new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemMap().keySet());
}
else
return getOnlinePlayerNameList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ public boolean execute(CommandSender sender, List<String> args) {
@Override
public List<String> tab(CommandSender sender, List<String> args) {
if (args.size() < 2) {
List<String> tabList = new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemConfigFileMap().keySet());
filterTabList(tabList, args.get(0));
return tabList;
return new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemConfigFileMap().keySet());
} else {
return Collections.singletonList("");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,7 @@ public boolean execute(CommandSender sender, List<String> args) {
@Override
public List<String> tab(CommandSender sender, List<String> args) {
if (args.size() <= 1) {
List<String> tabList = new ArrayList<>(recipeTypeList);
filterTabList(tabList, args.get(0));
return tabList;
return new ArrayList<>(recipeTypeList);
}
return Collections.singletonList("<recipe_name>");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ public List<String> tab(CommandSender sender, List<String> args) {
if (str.contains(args.get(0)))
tabList.add(key.toString());
}
filterTabList(tabList, args.get(0));
return tabList;
}
return super.onTabComplete(sender, args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ public List<String> tab(CommandSender sender, List<String> args) {
for (Map<String, RecipeGroup> recipeGroupMap : RecipeManager.INSTANCE.recipeMap().values()) {
tabList.addAll(recipeGroupMap.keySet());
}
filterTabList(tabList, args.get(0));
return tabList;
}
return super.onTabComplete(sender, args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,37 +56,37 @@ public AnvilRecipeCreator(@NotNull Player player, @NotNull String recipeName) {
layoutMap.put('*', new Icon(Material.CYAN_STAINED_GLASS_PANE, Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_FRAME.value(player)));
layoutMap.put('B', getCopyNbtIcon());
layoutMap.put('C', getCostLevelIcon());
layoutMap.put('A', new Icon(Material.ANVIL, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player),
event -> {
StoredMenu creator = (StoredMenu) event.getClickedInventory().getHolder();
ItemStack result = Objects.requireNonNull(creator).storedItems().get(24);
ItemStack base = creator.storedItems().get(19);
ItemStack addition = creator.storedItems().get(21);
if (ItemUtil.isAir(result)) {
LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_RESULT);
return;
}
if (ItemUtil.isAir(addition) || ItemUtil.isAir(base)) {
LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_SOURCE);
return;
}
String resultName = ItemUtils.matchItemNameOrCreate(result, false);
String inputName = ItemUtils.matchItemNameOrCreate(base, false);
String ingredientName = ItemUtils.matchItemNameOrCreate(addition, false);
ConfigWrapper recipeConfig = createRecipeConfig(recipeName);
recipeConfig.set("source.copy_nbt", event.getInventory().getItem(40).getItemMeta().hasEnchants());
recipeConfig.set("type", "anvil");
recipeConfig.set("source.base", inputName);
recipeConfig.set("source.addition", ingredientName);
recipeConfig.set("source.cost_level", costLevel);
recipeConfig.set("result", resultName);
recipeConfig.saveConfig();
recipeConfig.reloadConfig();
regRecipeGroup(recipeConfig);
event.getWhoClicked().closeInventory();
sendSuccessMsg(player, recipeName);
})
);
layoutMap.put('A', new Icon(Material.ANVIL, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player))
.setClickAction(
event -> {
StoredMenu creator = (StoredMenu) event.getClickedInventory().getHolder();
ItemStack result = Objects.requireNonNull(creator).storedItems().get(24);
ItemStack base = creator.storedItems().get(19);
ItemStack addition = creator.storedItems().get(21);
if (ItemUtil.isAir(result)) {
LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_RESULT);
return;
}
if (ItemUtil.isAir(addition) || ItemUtil.isAir(base)) {
LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_SOURCE);
return;
}
String resultName = ItemUtils.matchItemNameOrCreate(result, false);
String inputName = ItemUtils.matchItemNameOrCreate(base, false);
String ingredientName = ItemUtils.matchItemNameOrCreate(addition, false);
ConfigWrapper recipeConfig = createRecipeConfig(recipeName);
recipeConfig.set("source.copy_nbt", event.getInventory().getItem(40).getItemMeta().hasEnchants());
recipeConfig.set("type", "anvil");
recipeConfig.set("source.base", inputName);
recipeConfig.set("source.addition", ingredientName);
recipeConfig.set("source.cost_level", costLevel);
recipeConfig.set("result", resultName);
recipeConfig.saveConfig();
recipeConfig.reloadConfig();
regRecipeGroup(recipeConfig);
event.getWhoClicked().closeInventory();
sendSuccessMsg(player, recipeName);
}));
return layoutMap;
})
)
Expand All @@ -107,7 +107,8 @@ protected Icon getCopyNbtIcon() {
Material.NAME_TAG,
Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COPY_NBT_TOGGLE
.value(player)
.replace("<enable>", String.valueOf(copyNbt)),
.replace("<enable>", String.valueOf(copyNbt))
).setClickAction(
event -> toggleCopyNbt(event.getSlot(), event)
);
if (copyNbt)
Expand All @@ -132,13 +133,14 @@ protected Icon getCostLevelIcon() {
Material.EXPERIENCE_BOTTLE,
Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_NAME.value(player)
.replace("<level>", String.valueOf(costLevel)),
Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_LORE.value(player),
Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_LORE.value(player)
).setClickAction(
event -> {
Conversation conversation = new Conversation(
Craftorithm.instance(),
player,
new CostLevelInputPrompt(),
data -> player.openInventory(openedInventory)
data -> player.openInventory(inventoryCache)
);
inConversation = true;
conversation.start();
Expand All @@ -148,7 +150,7 @@ protected Icon getCostLevelIcon() {
}

public void updateCostLevelIcon() {
ItemStack costLevelIcon = this.openedInventory().getItem(4);
ItemStack costLevelIcon = this.inventoryCache.getItem(4);
if (costLevelIcon == null)
return;
ItemUtil.setDisplayName(
Expand All @@ -164,7 +166,7 @@ class CostLevelInputPrompt implements NumberPrompt {
@Nullable
public Prompt acceptValidatedInput(@NotNull Map<Object, Object> data, @NotNull Number number) {
costLevel = number.intValue();
player.openInventory(openedInventory());
player.openInventory(inventoryCache);
updateCostLevelIcon();
inConversation = false;
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ public CookingRecipeCreator(@NotNull Player player, @NotNull String recipeName)
layoutMap.put('G', getCookingTimeIcon());
layoutMap.put('H', getExpIcon());
layoutMap.put('A', new Icon(
Material.FURNACE,
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player),
Material.FURNACE, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player)
).setClickAction(
event -> {
StoredMenu creator = (StoredMenu) Objects.requireNonNull(event.getClickedInventory()).getHolder();
ItemStack source = Objects.requireNonNull(creator).storedItems().get(20);
Expand Down Expand Up @@ -107,7 +107,8 @@ public CookingRecipeCreator(@NotNull Player player, @NotNull String recipeName)
regRecipeGroup(recipeConfig);
event.getWhoClicked().closeInventory();
sendSuccessMsg(event.getWhoClicked(), recipeName);
})
}
)
);
return layoutMap;
})
Expand Down Expand Up @@ -145,7 +146,8 @@ protected Icon getCookingToggleIcon(Material material) {
displayName = displayName.replace("<enable>", String.valueOf(enable));
Icon icon = new Icon(
material,
displayName,
displayName
).setClickAction(
event -> toggleCookingIcon(event.getSlot(), event)
);
if (enable) {
Expand Down Expand Up @@ -184,13 +186,14 @@ protected Icon getCookingTimeIcon() {
Material.CLOCK,
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_TIME_NAME.value(player)
.replace("<time>", String.valueOf(cookingTime)),
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_TIME_LORE.value(player),
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_TIME_LORE.value(player)
).setClickAction(
event -> {
Conversation timeInputConversation = new Conversation(
Craftorithm.instance(),
player,
new TimeInputPrompt(),
data -> player.openInventory(openedInventory())
data -> player.openInventory(inventoryCache)
);
inConversation = true;
timeInputConversation.start();
Expand All @@ -204,13 +207,14 @@ protected Icon getExpIcon() {
Material.EXPERIENCE_BOTTLE,
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_EXP_NAME.value(player)
.replace("<exp>", String.valueOf(exp)),
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_EXP_LORE.value(player),
Languages.MENU_RECIPE_CREATOR_ICON_COOKING_EXP_LORE.value(player)
).setClickAction(
event -> {
Conversation conversation = new Conversation(
Craftorithm.instance(),
player,
new ExpInputPrompt(),
data -> player.openInventory(openedInventory)
data -> player.openInventory(inventoryCache)
);
inConversation = true;
conversation.start();
Expand All @@ -220,7 +224,7 @@ protected Icon getExpIcon() {
}

protected void updateCookingTimeIcon() {
ItemStack cookingTimeIcon = this.openedInventory().getItem(3);
ItemStack cookingTimeIcon = this.inventoryCache.getItem(3);
if (cookingTimeIcon == null)
return;
ItemUtil.setDisplayName(
Expand All @@ -232,7 +236,7 @@ protected void updateCookingTimeIcon() {
}

protected void updateExpIcon() {
ItemStack expIcon = this.openedInventory().getItem(5);
ItemStack expIcon = this.inventoryCache.getItem(5);
if (expIcon == null)
return;
ItemUtil.setDisplayName(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public CraftingRecipeCreator(@NotNull Player player, RecipeType recipeType, @Not
layoutMap.put('F', getUnlockIcon());
layoutMap.put('A', new Icon(
Material.CRAFTING_TABLE,
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player),
event -> {
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player)
).setClickAction(event -> {
StoredMenu creator = (StoredMenu) Objects.requireNonNull(event.getClickedInventory()).getHolder();
Map<Integer, ItemStack> storedItems = Objects.requireNonNull(creator).storedItems();
ItemStack result = storedItems.get(24);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ public PotionMixCreator(@NotNull Player player, @NotNull String recipeName) {
));
layoutMap.put('A', new Icon(
Material.BREWING_STAND,
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player),
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player)
).setClickAction(
event -> {
StoredMenu creator = (StoredMenu) event.getClickedInventory().getHolder();
ItemStack result = Objects.requireNonNull(creator).storedItems().get(24);
Expand All @@ -70,7 +71,8 @@ public PotionMixCreator(@NotNull Player player, @NotNull String recipeName) {
regRecipeGroup(recipeConfig);
event.getWhoClicked().closeInventory();
sendSuccessMsg(player, recipeName);
})
}
)
);
return layoutMap;
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ public SmithingRecipeCreator(@NotNull Player player, @NotNull String recipeName)
layoutMap.put('B', getCopyNbtIcon());
layoutMap.put('A', new Icon(
Material.SMITHING_TABLE,
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player),
Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player)
).setClickAction(
event -> {
StoredMenu creator = (StoredMenu) Objects.requireNonNull(event.getClickedInventory()).getHolder();
ItemStack result = Objects.requireNonNull(creator).storedItems().get(24);
Expand Down Expand Up @@ -109,7 +110,8 @@ public SmithingRecipeCreator(@NotNull Player player, @NotNull String recipeName)
regRecipeGroup(recipeConfig);
event.getWhoClicked().closeInventory();
sendSuccessMsg(event.getWhoClicked(), recipeName);
})
}
)
);
return layoutMap;
}
Expand All @@ -122,9 +124,8 @@ protected Icon getCopyNbtIcon() {
Material.NAME_TAG,
Languages.MENU_RECIPE_CREATOR_ICON_SMITHING_COPY_NBT_TOGGLE
.value(player)
.replace("<enable>", String.valueOf(copyNbt)),
event -> toggleCopyNbt(event.getSlot(), event)
);
.replace("<enable>", String.valueOf(copyNbt))
).setClickAction(event -> toggleCopyNbt(event.getSlot(), event));
if (copyNbt)
ItemUtils.toggleItemGlowing(icon.display());
return icon;
Expand Down
Loading

0 comments on commit c03e1fd

Please sign in to comment.