Merge pull request #307 from TinyTank800/master

Fixes to mmo= paywalls, multipaywalls, minor changes to item-paywall=
This commit is contained in:
RockyHawk 2024-04-10 20:23:53 +10:00 committed by GitHub
commit 53dafd8f69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 33 deletions

View File

@ -33,6 +33,7 @@ body:
- 1.17 - 1.17
- 1.18 - 1.18
- 1.19 - 1.19
- 1.20
validations: validations:
required: true required: true
- type: dropdown - type: dropdown
@ -41,6 +42,9 @@ body:
label: What CommandPanels version are you using? label: What CommandPanels version are you using?
options: options:
- latest - latest
- 3.20.0.3
- 3.20.0.2
- 3.20.0.1
- 3.19.0.3 - 3.19.0.3
- 3.19.0.2 - 3.19.0.2
- 3.19.0.1 - 3.19.0.1
@ -66,16 +70,6 @@ body:
- 3.17.4.1 - 3.17.4.1
- 3.17.4.0 - 3.17.4.0
- 3.17.3.1 - 3.17.3.1
- 3.17.3.0
- 3.17.2.2
- 3.17.2.1
- 3.17.2.0
- 3.17.1.5
- 3.17.1.4
- 3.17.1.3
- 3.17.1.2
- 3.17.1.1
- 3.17.1.0
- Any other version - Any other version
validations: validations:
required: true required: true

View File

@ -31,6 +31,7 @@ body:
- 1.17 - 1.17
- 1.18 - 1.18
- 1.19 - 1.19
- 1.20
validations: validations:
required: true required: true
- type: dropdown - type: dropdown
@ -39,6 +40,9 @@ body:
label: What CommandPanels version are you using? label: What CommandPanels version are you using?
options: options:
- latest - latest
- 3.20.0.3
- 3.20.0.2
- 3.20.0.1
- 3.19.0.3 - 3.19.0.3
- 3.19.0.2 - 3.19.0.2
- 3.19.0.1 - 3.19.0.1
@ -64,16 +68,6 @@ body:
- 3.17.4.1 - 3.17.4.1
- 3.17.4.0 - 3.17.4.0
- 3.17.3.1 - 3.17.3.1
- 3.17.3.0
- 3.17.2.2
- 3.17.2.1
- 3.17.2.0
- 3.17.1.5
- 3.17.1.4
- 3.17.1.3
- 3.17.1.2
- 3.17.1.1
- 3.17.1.0
- Any other version - Any other version
validations: validations:
required: true required: true

View File

@ -523,6 +523,14 @@ public class ItemCreation {
} }
} }
}catch(Exception ignore){} }catch(Exception ignore){}
//check for custom model data
try {
if (one.getItemMeta().getCustomModelData() != (two.getItemMeta().getCustomModelData())) {
if(one.getItemMeta().hasCustomModelData()) {
return false;
}
}
}catch(Exception ignore){}
//check for nbt //check for nbt
if(nbtCheck) { if(nbtCheck) {
try { try {

View File

@ -231,7 +231,7 @@ public class CommandTags {
} }
case "item-paywall=": { case "item-paywall=": {
String command = plugin.tex.placeholders(panel, PanelPosition.Top, p, rawCommand); String command = plugin.tex.placeholders(panel, PanelPosition.Top, p, rawCommand);
//if player uses item-paywall= [Material] [Amount] <id:#> WILL NOT TAKE CUSTOM ITEMS //if player uses item-paywall= [Material] [Amount] <id:#> <IGNORENBT> WILL NOT TAKE CUSTOM ITEMS. IGNORENBT lets nbt items through. Useful for spawner edge cases.
//player can use item-paywall= [custom-item] [Amount] //player can use item-paywall= [custom-item] [Amount]
List<ItemStack> cont = new ArrayList<>(Arrays.asList(plugin.inventorySaver.getNormalInventory(p))); List<ItemStack> cont = new ArrayList<>(Arrays.asList(plugin.inventorySaver.getNormalInventory(p)));
HashMap<Integer, ItemStack> remCont = new HashMap<>(); HashMap<Integer, ItemStack> remCont = new HashMap<>();
@ -254,6 +254,8 @@ public class CommandTags {
} }
//this is not a boolean because it needs to return an int //this is not a boolean because it needs to return an int
PaywallOutput removedItem = PaywallOutput.Blocked; PaywallOutput removedItem = PaywallOutput.Blocked;
//This is here for when people want to take nbt items like spawners with types in a check for spawners.
boolean ignoreNBT = command.contains("IGNORENBT");
int remainingAmount = sellItem.getAmount(); int remainingAmount = sellItem.getAmount();
//loop through items in the inventory //loop through items in the inventory
@ -267,17 +269,6 @@ public class CommandTags {
ItemStack itm = cont.get(f); ItemStack itm = cont.get(f);
if (Material.matchMaterial(args[1]) == null) { if (Material.matchMaterial(args[1]) == null) {
//item-paywall is a custom item as it is not a material
if (plugin.itemCreate.isIdentical(sellItem, itm, Objects.requireNonNull(panel.getConfig().getConfigurationSection("custom-item." + args[1])).contains("nbt"))) {
ItemStack add = new ItemStack(p.getInventory().getItem(f).getType(), p.getInventory().getItem(f).getAmount());
remainingAmount -= add.getAmount();
if (removal) remCont.put(f,add);
if (remainingAmount <= 0) {
removedItem = PaywallOutput.Passed;
break;
}
}
//if custom item is a mmo item (1.14+ for the API) //if custom item is a mmo item (1.14+ for the API)
try { try {
if (plugin.getServer().getPluginManager().isPluginEnabled("MMOItems") && panel.getConfig().getString("custom-item." + args[1] + ".material").startsWith("mmo=")) { if (plugin.getServer().getPluginManager().isPluginEnabled("MMOItems") && panel.getConfig().getString("custom-item." + args[1] + ".material").startsWith("mmo=")) {
@ -294,15 +285,27 @@ public class CommandTags {
break; break;
} }
} }
continue; //This stops the other custom item section from reading and adding false numbers.
} }
} catch (Exception ex) { } catch (Exception ex) {
plugin.debug(ex, p); plugin.debug(ex, p);
} }
//item-paywall is a custom item as it is not a material
if (plugin.itemCreate.isIdentical(sellItem, itm, Objects.requireNonNull(panel.getConfig().getConfigurationSection("custom-item." + args[1])).contains("nbt"))) {
ItemStack add = new ItemStack(p.getInventory().getItem(f).getType(), p.getInventory().getItem(f).getAmount());
remainingAmount -= add.getAmount();
if (removal) remCont.put(f,add);
if (remainingAmount <= 0) {
removedItem = PaywallOutput.Passed;
break;
}
}
} else { } else {
//if the item is a standard material //if the item is a standard material
if (itm.getType() == sellItem.getType()) { if (itm.getType() == sellItem.getType()) {
if(itm.hasItemMeta()){ if(itm.hasItemMeta() && !ignoreNBT){
//If item has custom meta continue to next item. //If item has custom meta continue to next item.
continue; continue;
} }