+ Added ruby item

main
Herobane 12 months ago
parent a1a3819dc2
commit 0467d0a5ee

@ -1,63 +0,0 @@
package net.herobane.learning;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
// An example config class. This is not required, but it's a good idea to have one to keep your config organized.
// Demonstrates how to use Forge's config APIs
@Mod.EventBusSubscriber(modid = Learning.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class Config
{
private static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder();
private static final ForgeConfigSpec.BooleanValue LOG_DIRT_BLOCK = BUILDER
.comment("Whether to log the dirt block on common setup")
.define("logDirtBlock", true);
private static final ForgeConfigSpec.IntValue MAGIC_NUMBER = BUILDER
.comment("A magic number")
.defineInRange("magicNumber", 42, 0, Integer.MAX_VALUE);
public static final ForgeConfigSpec.ConfigValue<String> MAGIC_NUMBER_INTRODUCTION = BUILDER
.comment("What you want the introduction message to be for the magic number")
.define("magicNumberIntroduction", "The magic number is... ");
// a list of strings that are treated as resource locations for items
private static final ForgeConfigSpec.ConfigValue<List<? extends String>> ITEM_STRINGS = BUILDER
.comment("A list of items to log on common setup.")
.defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName);
static final ForgeConfigSpec SPEC = BUILDER.build();
public static boolean logDirtBlock;
public static int magicNumber;
public static String magicNumberIntroduction;
public static Set<Item> items;
private static boolean validateItemName(final Object obj)
{
return obj instanceof final String itemName && ForgeRegistries.ITEMS.containsKey(new ResourceLocation(itemName));
}
@SubscribeEvent
static void onLoad(final ModConfigEvent event)
{
logDirtBlock = LOG_DIRT_BLOCK.get();
magicNumber = MAGIC_NUMBER.get();
magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get();
// convert the list of strings into a set of items
items = ITEM_STRINGS.get().stream()
.map(itemName -> ForgeRegistries.ITEMS.getValue(new ResourceLocation(itemName)))
.collect(Collectors.toSet());
}
}

@ -1,68 +1,64 @@
package net.herobane.learning; package net.herobane.learning;
import com.mojang.logging.LogUtils; import com.mojang.logging.LogUtils;
import net.herobane.learning.item.ModItems;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.slf4j.Logger; import org.slf4j.Logger;
// The value here should match an entry in the META-INF/mods.toml file // The value here should match an entry in the META-INF/mods.toml file
@Mod(Learning.MODID) @Mod(Learning.MODID)
public class Learning public class Learning {
{
// Define mod id in a common place for everything to reference // Define mod id in a common place for everything to reference
public static final String MODID = "learning"; public static final String MODID = "learning";
// Directly reference a slf4j logger // Directly reference a slf4j logger
private static final Logger LOGGER = LogUtils.getLogger(); private static final Logger LOGGER = LogUtils.getLogger();
public Learning() public Learning() {
{
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
ModItems.register(modEventBus);
modEventBus.addListener(this::commonSetup); modEventBus.addListener(this::commonSetup);
MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(this);
modEventBus.addListener(this::addCreative); modEventBus.addListener(this::addCreative);
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.SPEC);
} }
private void commonSetup(final FMLCommonSetupEvent event) private void commonSetup(final FMLCommonSetupEvent event) {
{
} }
private void addCreative(BuildCreativeModeTabContentsEvent event) private void addCreative(BuildCreativeModeTabContentsEvent event) {
{ if (event.getTabKey() == CreativeModeTabs.INGREDIENTS)
event.accept(ModItems.RUBY);
} }
@SubscribeEvent @SubscribeEvent
public void onServerStarting(ServerStartingEvent event) public void onServerStarting(ServerStartingEvent event) {
{
// Do something when the server starts // Do something when the server starts
LOGGER.info("Hello from serverside"); LOGGER.info("Hello from serverside");
} }
// You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent // You can use EventBusSubscriber to automatically register all static methods
// in the class annotated with @SubscribeEvent
@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class ClientModEvents public static class ClientModEvents {
{
@SubscribeEvent @SubscribeEvent
public static void onClientSetup(FMLClientSetupEvent event) public static void onClientSetup(FMLClientSetupEvent event) {
{
// Some client setup code // Some client setup code
LOGGER.info("Hello from clientside"); LOGGER.info("Hello from clientside");
} }
} }
} }

@ -0,0 +1,19 @@
package net.herobane.learning.item;
import net.herobane.learning.Learning;
import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
public class ModItems {
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Learning.MODID);
public static final RegistryObject<Item> RUBY = ITEMS.register("ruby", () -> new Item(new Item.Properties()));
public static void register(IEventBus eventBus) {
ITEMS.register(eventBus);
}
}

@ -0,0 +1,3 @@
{
"item.learning.ruby": "Ruby"
}

@ -0,0 +1,3 @@
{
"item.learning.ruby": "Rubis"
}

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "learning:item/ruby"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

Loading…
Cancel
Save