Skip to content

Instantly share code, notes, and snippets.

@RealMangorage
Created May 1, 2024 00:39
Show Gist options
  • Save RealMangorage/07bb772edb570023fba9fefed1523cea to your computer and use it in GitHub Desktop.
Save RealMangorage/07bb772edb570023fba9fefed1523cea to your computer and use it in GitHub Desktop.
import net.minecraft.core.component.DataComponentType;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.codec.ByteBufCodecs;
import net.minecraft.util.ExtraCodecs;
import net.minecraft.world.item.DyeItem;
import net.minecraft.world.item.Items;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.GatherItemComponentsEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
// The value here should match an entry in the META-INF/mods.toml file
@Mod(ExampleMod.MODID)
public class ExampleMod
{
public static final String MODID = "examplemod";
public static final DeferredRegister<DataComponentType<?>> COMPONENT_TYPES = DeferredRegister.create(BuiltInRegistries.DATA_COMPONENT_TYPE.key(), MODID);
public static final RegistryObject<DataComponentType<Integer>> EXAMPLE_COMPONENT = COMPONENT_TYPES.register("test", () -> {
return DataComponentType.<Integer>builder()
.persistent(ExtraCodecs.intRange(0, Integer.MAX_VALUE))
.networkSynchronized(ByteBufCodecs.VAR_INT)
.build();
});
public ExampleMod()
{
var modBus = FMLJavaModLoadingContext.get().getModEventBus();
COMPONENT_TYPES.register(modBus);
MinecraftForge.EVENT_BUS.addListener(this::onItem);
}
public void onItem(GatherItemComponentsEvent event) {
switch (event.getItem()) {
case DyeItem a -> {
event.register(DataComponents.MAX_STACK_SIZE, 16);
event.register(DataComponents.DAMAGE, 10);
event.register(DataComponents.MAX_DAMAGE, 100);
}
default -> {}
}
if (event.getItem() == Items.BEACON) {
event.register(DataComponents.MAX_STACK_SIZE, 16);
event.register(DataComponents.DAMAGE, 10);
event.register(DataComponents.MAX_DAMAGE, 100);
event.register(EXAMPLE_COMPONENT.get(), 10);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment