Merge pull request #288 from TinyTank800/master

enchant= and setcustomdata= additions.
This commit is contained in:
RockyHawk 2024-01-19 17:55:43 +11:00 committed by GitHub
commit 912d79c9de
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,10 +3,15 @@ package me.rockyhawk.commandpanels.commandtags.tags.standard;
import me.rockyhawk.commandpanels.CommandPanels;
import me.rockyhawk.commandpanels.commandtags.CommandTagEvent;
import me.rockyhawk.commandpanels.openpanelsmanager.PanelPosition;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
import java.util.Objects;
import java.util.Set;
public class ItemTags implements Listener {
CommandPanels plugin;
public ItemTags(CommandPanels pl) {
@ -34,6 +39,82 @@ public class ItemTags implements Listener {
}else{
e.p.getInventory().setItem(Integer.parseInt(e.args[1]), s);
}
return;
}
if(e.name.equalsIgnoreCase("enchant=")){
e.commandTagUsed();
//if player uses enchant= [slot] [position] [ADD/REMOVE/CLEAR] [enchant] <level> it will add/remove/clear the enchants of the selected slot
PanelPosition position = PanelPosition.valueOf(e.args[1]);
ItemStack EditItem;
if(position == PanelPosition.Top) {
EditItem = e.p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(e.args[0]));
}else if(position == PanelPosition.Middle) {
EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])+9);
}else{
EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0]));
}
assert EditItem != null;
if(e.args[2].equalsIgnoreCase("add")){
try{
Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(e.args[3].toLowerCase()));
assert enchant != null;
EditItem.addEnchantment(enchant, Integer.parseInt(e.args[4]));
return;
} catch (Exception err){
//Some sort of message for player or console?
}
}
if(e.args[2].equalsIgnoreCase("remove")){
try{
Enchantment enchant = Enchantment.getByKey(NamespacedKey.minecraft(e.args[3].toLowerCase()));
assert enchant != null;
EditItem.removeEnchantment(enchant);
return;
} catch (Exception err){
//Some sort of message for player or console?
}
}
if(e.args[2].equalsIgnoreCase("clear")){
try{
Set<Enchantment> Enchants = EditItem.getEnchantments().keySet();
for(Enchantment enchant : Enchants){
EditItem.removeEnchantment(enchant);
}
} catch (Exception err){
//Some sort of message for player or console?
}
}
return;
}
if(e.name.equalsIgnoreCase("setcustomdata=")){
e.commandTagUsed();
//if player uses setcustomdata= [slot] [position] [data] it will change the custom model data of the item
PanelPosition position = PanelPosition.valueOf(e.args[1]);
ItemStack EditItem;
if(position == PanelPosition.Top) {
EditItem = e.p.getOpenInventory().getTopInventory().getItem(Integer.parseInt(e.args[0]));
}else if(position == PanelPosition.Middle) {
EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0])+9);
}else{
EditItem = e.p.getInventory().getItem(Integer.parseInt(e.args[0]));
}
assert EditItem != null;
try{
if(EditItem.hasItemMeta()){
Objects.requireNonNull(EditItem.getItemMeta()).setCustomModelData(Integer.valueOf(e.args[2]));
}
} catch (Exception err){
//Some sort of message for player or console?
}
return;
}
}
}