Skip to content

Commit

Permalink
Add check for Items tag, used in Bundles
Browse files Browse the repository at this point in the history
  • Loading branch information
ds58 committed Aug 14, 2022
1 parent 7932679 commit 2d9c9bd
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ public NbtCheck_BlockEntityTag() {
super("BlockEntityTag", PStrictness.LENIENT);
}

private FailedNbt checkItems(INbtTagList items, String itemName, IPanilla panilla) {
public static FailedNbt checkItems(String nbtTagName, INbtTagList items, String itemName, IPanilla panilla) {
int charCount = NbtCheck_pages.getCharCountForItems(items);

if (charCount > 100_000) {
return new FailedNbt(getName(), NbtCheck.NbtCheckResult.CRITICAL);
return new FailedNbt(nbtTagName, NbtCheck.NbtCheckResult.CRITICAL);
}

for (int i = 0; i < items.size(); i++) {
Expand All @@ -31,7 +31,7 @@ private FailedNbt checkItems(INbtTagList items, String itemName, IPanilla panill
return FailedNbt.NO_FAIL;
}

private FailedNbt checkItem(INbtTagCompound item, String itemName, IPanilla panilla) {
public static FailedNbt checkItem(INbtTagCompound item, String itemName, IPanilla panilla) {
if (item.hasKey("tag")) {
FailedNbt failedNbt = NbtChecks.checkAll(item.getCompound("tag"), itemName, panilla);

Expand Down Expand Up @@ -116,7 +116,7 @@ public NbtCheckResult check(INbtTagCompound tag, String itemName, IPanilla panil
}

INbtTagList items = blockEntityTag.getList("Items", NbtDataType.COMPOUND);
FailedNbt failedNbt = checkItems(items, itemName, panilla);
FailedNbt failedNbt = checkItems(getName(), items, itemName, panilla);

if (FailedNbt.fails(failedNbt)) {
return failedNbt.result;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.ruinscraft.panilla.api.nbt.checks;

import com.ruinscraft.panilla.api.IPanilla;
import com.ruinscraft.panilla.api.config.PStrictness;
import com.ruinscraft.panilla.api.exception.FailedNbt;
import com.ruinscraft.panilla.api.nbt.INbtTagCompound;
import com.ruinscraft.panilla.api.nbt.INbtTagList;

// Similar to BlockEntityTag
// Used mainly for Bundles (1.17)
public class NbtCheck_Items extends NbtCheck {

public NbtCheck_Items() {
super("Items", PStrictness.LENIENT);
}

@Override
public NbtCheck.NbtCheckResult check(INbtTagCompound tag, String itemName, IPanilla panilla) {
INbtTagList itemsTagList = tag.getList(getName());

FailedNbt failedNbt = NbtCheck_BlockEntityTag.checkItems(getName(), itemsTagList, itemName, panilla);

if (FailedNbt.fails(failedNbt)) {
return failedNbt.result;
} else {
return NbtCheck.NbtCheckResult.PASS;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public final class NbtChecks {
register(new NbtCheck_CustomModelData());
register(new NbtCheck_HasVisualFire()); // 1.17
register(new NbtCheck_ChargedProjectiles());
register(new NbtCheck_Items());

// non-vanilla
register(new NbtCheck_weBrushJson());
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
allprojects {
group = 'com.ruinscraft'
version = '1.7.8'
version = '1.7.9'
}

subprojects {
Expand Down
2 changes: 1 addition & 1 deletion craftbukkit-v1_19_R1/build.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
dependencies {
compileOnly project(':panilla-api')
compileOnly 'org.spigotmc:spigot:1.19.1-R0.1-SNAPSHOT'
compileOnly 'org.spigotmc:spigot:1.19.2-R0.1-SNAPSHOT'
}

0 comments on commit 2d9c9bd

Please sign in to comment.