refactor(c-item): merged SFItemRegistry into SFItems

This commit is contained in:
iceBear67 committed 2024-10-01 12:42:19 +08:00
1 parent 3729c4c2e6
commit 8c431ebc63
5 files changed
+17 -48

No files matched your search

@@ -1,29 +0,0 @@
package io.ib67.sfcraft;
import com.mojang.serialization.Codec;
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
import net.minecraft.component.ComponentType;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.item.Item;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.network.codec.PacketCodecs;
import net.minecraft.registry.DefaultedRegistry;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.util.Identifier;
import java.util.function.UnaryOperator;
public class SFItemRegistry {
public static final String SF_ITEM_TYPE_KEY = "sf_type";
public static final Registry<Item> ITEMS = FabricRegistryBuilder
.<Item>createSimple(RegistryKey.ofRegistry(Identifier.of(SFCraft.MOD_ID, "item")))
.attribute(RegistryAttribute.MODDED)
.buildAndRegister();
public static void init() {
SFItems.init();
}
}
+11 -3
View File
@@ -2,26 +2,34 @@ package io.ib67.sfcraft;
import io.ib67.sfcraft.item.AeroBackpack; import io.ib67.sfcraft.item.AeroBackpack;
import io.ib67.sfcraft.mixin.common.bridge.ItemBridge; import io.ib67.sfcraft.mixin.common.bridge.ItemBridge;
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
import net.minecraft.item.ArmorItem; import net.minecraft.item.ArmorItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public class SFItems { public class SFItems {
public static final Item AERO_BACKPACK = register( public static final Item AERO_BACKPACK = register(
new AeroBackpack(new Item.Settings().maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15))), "aero_backpack"); new AeroBackpack(new Item.Settings().maxDamage(ArmorItem.Type.CHESTPLATE.getMaxDamage(15))), "aero_backpack");
public static final String SF_ITEM_TYPE_KEY = "sf_type";
public static final Registry<Item> ITEMS = FabricRegistryBuilder
.<Item>createSimple(RegistryKey.ofRegistry(Identifier.of(SFCraft.MOD_ID, "item")))
.attribute(RegistryAttribute.MODDED)
.buildAndRegister();
public static void init() { public static void init() {
} }
private static Item register(Item item, String id) { private static Item register(Item item, String id) {
Identifier itemID = Identifier.of(SFCraft.MOD_ID, id); Identifier itemID = Identifier.of(SFCraft.MOD_ID, id);
Item registeredItem = Registry.register(SFItemRegistry.ITEMS, itemID, item); Item registeredItem = Registry.register(ITEMS, itemID, item);
((ItemBridge) registeredItem).setRegistryEntry(SFItemRegistry.ITEMS.getEntry(itemID).get()); ((ItemBridge) registeredItem).setRegistryEntry(ITEMS.getEntry(itemID).get());
return registeredItem; return registeredItem;
} }
public static Item getById(Identifier item) { public static Item getById(Identifier item) {
return SFItemRegistry.ITEMS.get(item); return ITEMS.get(item);
} }
} }
@@ -1,12 +1,9 @@
package io.ib67.sfcraft.mixin.server.item; package io.ib67.sfcraft.mixin.server.item;
import io.ib67.sfcraft.SFItemRegistry;
import io.ib67.sfcraft.item.SFItem; import io.ib67.sfcraft.item.SFItem;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.registry.DefaultedRegistry; import net.minecraft.registry.DefaultedRegistry;
import net.minecraft.registry.Registries;
import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.entry.RegistryEntry;
import org.spongepowered.asm.mixin.Debug;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.Redirect;
@@ -1,8 +1,7 @@
package io.ib67.sfcraft.mixin.server.item; package io.ib67.sfcraft.mixin.server.item;
import io.ib67.sfcraft.SFCraft; import io.ib67.sfcraft.SFCraft;
import io.ib67.sfcraft.SFItemRegistry; import io.ib67.sfcraft.SFItems;
import io.ib67.sfcraft.item.SFItem;
import net.minecraft.component.ComponentHolder; import net.minecraft.component.ComponentHolder;
import net.minecraft.component.ComponentMapImpl; import net.minecraft.component.ComponentMapImpl;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
@@ -37,10 +36,10 @@ public abstract class ItemStackMixin implements ComponentHolder {
@Inject(method = "<init>(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/ComponentMapImpl;)V", at = @At("TAIL")) @Inject(method = "<init>(Lnet/minecraft/item/ItemConvertible;ILnet/minecraft/component/ComponentMapImpl;)V", at = @At("TAIL"))
private void initSFItem(ItemConvertible item, int count, ComponentMapImpl components, CallbackInfo ci) { private void initSFItem(ItemConvertible item, int count, ComponentMapImpl components, CallbackInfo ci) {
var _id = get(DataComponentTypes.CUSTOM_DATA); var _id = get(DataComponentTypes.CUSTOM_DATA);
if (_id != null && _id.contains(SFItemRegistry.SF_ITEM_TYPE_KEY)) { if (_id != null && _id.contains(SFItems.SF_ITEM_TYPE_KEY)) {
var id = _id.copyNbt().getString(SFItemRegistry.SF_ITEM_TYPE_KEY); var id = _id.copyNbt().getString(SFItems.SF_ITEM_TYPE_KEY);
try { try {
sfItem = SFItemRegistry.ITEMS.get(Identifier.of(SFCraft.MOD_ID, id)); sfItem = SFItems.ITEMS.get(Identifier.of(SFCraft.MOD_ID, id));
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
} }
@@ -1,24 +1,18 @@
package io.ib67.sfcraft.module; package io.ib67.sfcraft.module;
import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException;
import io.ib67.sfcraft.SFItemRegistry;
import io.ib67.sfcraft.SFItems; import io.ib67.sfcraft.SFItems;
import io.ib67.sfcraft.ServerModule; import io.ib67.sfcraft.ServerModule;
import io.ib67.sfcraft.item.SFItem; import io.ib67.sfcraft.item.SFItem;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.command.CommandRegistryAccess; import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.command.argument.IdentifierArgumentType; import net.minecraft.command.argument.IdentifierArgumentType;
import net.minecraft.command.argument.ItemStackArgument;
import net.minecraft.component.ComponentChanges;
import net.minecraft.component.DataComponentTypes; import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.NbtComponent; import net.minecraft.component.type.NbtComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -27,7 +21,7 @@ import net.minecraft.util.Identifier;
public class CustomItemModule extends ServerModule { public class CustomItemModule extends ServerModule {
@Override @Override
public void onInitialize() { public void onInitialize() {
SFItemRegistry.init(); SFItems.init();
CommandRegistrationCallback.EVENT CommandRegistrationCallback.EVENT
.register(this::registerCommand); .register(this::registerCommand);
} }
@@ -47,7 +41,7 @@ public class CustomItemModule extends ServerModule {
if(item == null) return null; if(item == null) return null;
var stack = new ItemStack(((SFItem) item).getMappedItem()); var stack = new ItemStack(((SFItem) item).getMappedItem());
var cmp = new NbtCompound(); var cmp = new NbtCompound();
cmp.putString(SFItemRegistry.SF_ITEM_TYPE_KEY, item.getRegistryEntry().getKey().map(it -> it.getValue().getPath()).orElseThrow()); cmp.putString(SFItems.SF_ITEM_TYPE_KEY, item.getRegistryEntry().getKey().map(it -> it.getValue().getPath()).orElseThrow());
stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(cmp)); stack.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(cmp));
return stack.copy(); return stack.copy();
} }