More item API, setup visuals mod

This commit is contained in:
FlorianMichael 2024-12-24 13:16:19 +01:00
parent a3c3456118
commit 50a8c1e1dd
No known key found for this signature in database
GPG Key ID: C2FB87E71C425126
5 changed files with 41 additions and 10 deletions

View File

@ -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);
}

View File

@ -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"

View File

@ -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

View File

@ -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);
}
}

View File

@ -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);
}