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.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.Item;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.util.Identifier;
public class SFItems {
public static final Item AERO_BACKPACK = register(
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() {
}
private static Item register(Item item, String id) {
Identifier itemID = Identifier.of(SFCraft.MOD_ID, id);
Item registeredItem = Registry.register(SFItemRegistry.ITEMS, itemID, item);
((ItemBridge) registeredItem).setRegistryEntry(SFItemRegistry.ITEMS.getEntry(itemID).get());
Item registeredItem = Registry.register(ITEMS, itemID, item);
((ItemBridge) registeredItem).setRegistryEntry(ITEMS.getEntry(itemID).get());
return registeredItem;
}
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;
import io.ib67.sfcraft.SFItemRegistry;
import io.ib67.sfcraft.item.SFItem;
import net.minecraft.item.Item;
import net.minecraft.registry.DefaultedRegistry;
import net.minecraft.registry.Registries;
import net.minecraft.registry.entry.RegistryEntry;
import org.spongepowered.asm.mixin.Debug;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@@ -1,8 +1,7 @@
package io.ib67.sfcraft.mixin.server.item;
import io.ib67.sfcraft.SFCraft;
import io.ib67.sfcraft.SFItemRegistry;
import io.ib67.sfcraft.item.SFItem;
import io.ib67.sfcraft.SFItems;
import net.minecraft.component.ComponentHolder;
import net.minecraft.component.ComponentMapImpl;
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"))
private void initSFItem(ItemConvertible item, int count, ComponentMapImpl components, CallbackInfo ci) {
var _id = get(DataComponentTypes.CUSTOM_DATA);
if (_id != null && _id.contains(SFItemRegistry.SF_ITEM_TYPE_KEY)) {
var id = _id.copyNbt().getString(SFItemRegistry.SF_ITEM_TYPE_KEY);
if (_id != null && _id.contains(SFItems.SF_ITEM_TYPE_KEY)) {
var id = _id.copyNbt().getString(SFItems.SF_ITEM_TYPE_KEY);
try {
sfItem = SFItemRegistry.ITEMS.get(Identifier.of(SFCraft.MOD_ID, id));
sfItem = SFItems.ITEMS.get(Identifier.of(SFCraft.MOD_ID, id));
}catch(Exception e){
e.printStackTrace();
}
@@ -1,24 +1,18 @@
package io.ib67.sfcraft.module;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import io.ib67.sfcraft.SFItemRegistry;
import io.ib67.sfcraft.SFItems;
import io.ib67.sfcraft.ServerModule;
import io.ib67.sfcraft.item.SFItem;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.command.CommandRegistryAccess;
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.type.NbtComponent;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.Text;
@@ -27,7 +21,7 @@ import net.minecraft.util.Identifier;
public class CustomItemModule extends ServerModule {
@Override
public void onInitialize() {
SFItemRegistry.init();
SFItems.init();
CommandRegistrationCallback.EVENT
.register(this::registerCommand);
}
@@ -47,7 +41,7 @@ public class CustomItemModule extends ServerModule {
if(item == null) return null;
var stack = new ItemStack(((SFItem) item).getMappedItem());
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));
return stack.copy();
}