diff --git a/api/src/main/java/com/viaversion/viafabricplus/api/ViaFabricPlusBase.java b/api/src/main/java/com/viaversion/viafabricplus/api/ViaFabricPlusBase.java index ef4ed7ac..9db44d4e 100644 --- a/api/src/main/java/com/viaversion/viafabricplus/api/ViaFabricPlusBase.java +++ b/api/src/main/java/com/viaversion/viafabricplus/api/ViaFabricPlusBase.java @@ -206,4 +206,24 @@ public interface ViaFabricPlusBase { */ ItemStack translateItem(final Item item, final ProtocolVersion sourceVersion); + /** + * @param item The item to check + * @param version The version to check for + * @return true if the item exists in the given version, false otherwise, this will also check for CPE items (CustomBlocks V1 extension) + */ + boolean itemExists(final net.minecraft.item.Item item, final ProtocolVersion version); + + /** + * @param item The item to check + * @return Similar to {@link #itemExists(net.minecraft.item.Item, ProtocolVersion)}, but takes in the current connection details (e.g. classic protocol extensions being loaded) + */ + boolean itemExistsInConnection(final net.minecraft.item.Item item); + + /** + * @param stack The item stack to get the count of + * @return Similar to {@link ItemStack#getCount()}, but also handles negative item counts in pre 1.11 versions + */ + int getStackCount(final ItemStack stack); + + } diff --git a/build.gradle b/build.gradle index 664a8e29..ab1bd40c 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,9 @@ dependencies { // Manually include to ignore dependencies include implementation(project(path: ":viafabricplus-api", configuration: "namedElements")) + include implementation(project(path: ":viafabricplus-visual-changes", configuration: "namedElements")) + + // Will be removed in future versions include implementation(project(":viafabricplus-api-legacy")) jij "com.viaversion:viaversion-common:5.2.1-SNAPSHOT" diff --git a/settings.gradle b/settings.gradle index c510f1c9..112f981b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,7 +14,8 @@ includeBuild("build-logic") setupViaSubproject("api") setupViaSubproject("api-legacy") -setupViaSubproject("diff-generator") +setupViaSubproject("generator-tools") +setupViaSubproject("visual-changes") void setupViaSubproject(String name) { var pName = "viafabricplus-" + name diff --git a/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java b/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java index e72e4762..aa8b72c4 100644 --- a/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java +++ b/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java @@ -25,6 +25,8 @@ import com.viaversion.viafabricplus.api.events.ChangeProtocolVersionCallback; import com.viaversion.viafabricplus.api.events.LoadingCycleCallback; import com.viaversion.viafabricplus.api.ViaFabricPlusBase; import com.viaversion.viafabricplus.api.settings.SettingGroup; +import com.viaversion.viafabricplus.features.item.filter_creative_tabs.ItemRegistryDiff; +import com.viaversion.viafabricplus.features.item.negative_items.NegativeItemUtil; import com.viaversion.viafabricplus.injection.access.base.IClientConnection; import com.viaversion.viafabricplus.injection.access.base.IServerInfo; import com.viaversion.viafabricplus.protocoltranslator.translator.ItemTranslator; @@ -246,4 +248,18 @@ public final class ViaFabricPlusImpl implements ViaFabricPlusBase { return ItemTranslator.viaToMc(item, sourceVersion); } + @Override + public boolean itemExists(net.minecraft.item.Item item, ProtocolVersion version) { + return ItemRegistryDiff.contains(item, version); + } + + @Override + public boolean itemExistsInConnection(net.minecraft.item.Item item) { + return ItemRegistryDiff.keepItem(item); + } + + @Override + public int getStackCount(ItemStack stack) { + return NegativeItemUtil.getCount(stack); + } } diff --git a/src/main/java/com/viaversion/viafabricplus/features/item/filter_creative_tabs/ItemRegistryDiff.java b/src/main/java/com/viaversion/viafabricplus/features/item/filter_creative_tabs/ItemRegistryDiff.java index 94540c84..cf953090 100644 --- a/src/main/java/com/viaversion/viafabricplus/features/item/filter_creative_tabs/ItemRegistryDiff.java +++ b/src/main/java/com/viaversion/viafabricplus/features/item/filter_creative_tabs/ItemRegistryDiff.java @@ -1496,10 +1496,6 @@ public final class ItemRegistryDiff { // https://minecraft.gamepedia.com/Java_Edition_version_history } - /** - * @param item The item to check - * @return true if the item exists in the current version, false otherwise, this will also check for CPE items (CustomBlocks V1 extension) - */ public static boolean keepItem(final Item item) { if (ProtocolTranslator.getTargetVersion().equals(c0_30cpe)) { final ClientPlayNetworkHandler handler = MinecraftClient.getInstance().getNetworkHandler(); @@ -1519,11 +1515,6 @@ public final class ItemRegistryDiff { return contains(item, ProtocolTranslator.getTargetVersion()); } - /** - * @param item The item to check - * @param version The version to check - * @return true if the item is present in the version, false otherwise - */ public static boolean contains(final Item item, final ProtocolVersion version) { return !ITEM_DIFF.containsKey(item) || ITEM_DIFF.get(item).contains(version); }