diff --git a/build.gradle b/build.gradle index 6588f7a..1a12e54 100644 --- a/build.gradle +++ b/build.gradle @@ -167,7 +167,7 @@ tasks.withType(JavaCompile).configureEach { // IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior. idea { module { - downloadSources = true + downloadSources = false downloadJavadoc = true } } diff --git a/gradle.properties b/gradle.properties index 3968566..c9df08b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,8 +5,8 @@ org.gradle.debug=false #read more on this at https://github.com/neoforged/NeoGradle/blob/NG_7.0/README.md#apply-parchment-mappings # you can also find the latest versions at: https://parchmentmc.org/docs/getting-started -neogradle.subsystems.parchment.minecraftVersion=1.20.6 -neogradle.subsystems.parchment.mappingsVersion=2024.05.01 +neogradle.subsystems.parchment.minecraftVersion=1.21 +neogradle.subsystems.parchment.mappingsVersion=2024.07.07 # Environment Properties # You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge # The Minecraft version must agree with the Neo version to get a valid artifact @@ -26,18 +26,18 @@ loader_version_range=[4,) # The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63} # Must match the String constant located in the main mod class annotated with @Mod. -mod_id=examplemod +mod_id=ajarc # The human-readable display name for the mod. -mod_name=Example Mod +mod_name=ajar computers # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. -mod_license=All Rights Reserved +mod_license=GPL3.0 or later # The mod version. See https://semver.org/ mod_version=1.0.0 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. # See https://maven.apache.org/guides/mini/guide-naming-conventions.html -mod_group_id=com.example.examplemod +mod_group_id=dev.exhq.ajarc # The authors of the mod. This is a simple text string that is used for display purposes in the mod list. -mod_authors=YourNameHere, OtherNameHere +mod_authors=echo, nea # The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list. -mod_description=Example mod description.\nNewline characters can be used and will be replaced properly. +mod_description=indian tech startup diff --git a/src/main/java/com/example/examplemod/ExampleMod.java b/src/main/java/dev/exhq/ajarc/Ajar.java similarity index 66% rename from src/main/java/com/example/examplemod/ExampleMod.java rename to src/main/java/dev/exhq/ajarc/Ajar.java index 835a48d..8f9c69b 100644 --- a/src/main/java/com/example/examplemod/ExampleMod.java +++ b/src/main/java/dev/exhq/ajarc/Ajar.java @@ -1,5 +1,7 @@ -package com.example.examplemod; +package dev.exhq.ajarc; +import dev.exhq.ajarc.config.Config; +import dev.exhq.ajarc.items.Register; import org.slf4j.Logger; import com.mojang.logging.LogUtils; @@ -35,51 +37,38 @@ import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; // The value here should match an entry in the META-INF/neoforge.mods.toml file -@Mod(ExampleMod.MODID) -public class ExampleMod +@Mod(Ajar.MODID) +public class Ajar { // Define mod id in a common place for everything to reference - public static final String MODID = "examplemod"; + public static final String MODID = "ajarc"; // Directly reference a slf4j logger private static final Logger LOGGER = LogUtils.getLogger(); // Create a Deferred Register to hold Blocks which will all be registered under the "examplemod" namespace - public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID); - // Create a Deferred Register to hold Items which will all be registered under the "examplemod" namespace - public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID); - // Create a Deferred Register to hold CreativeModeTabs which will all be registered under the "examplemod" namespace - public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID); - - // Creates a new Block with the id "examplemod:example_block", combining the namespace and path - public static final DeferredBlock EXAMPLE_BLOCK = BLOCKS.registerSimpleBlock("example_block", BlockBehaviour.Properties.of().mapColor(MapColor.STONE)); - // Creates a new BlockItem with the id "examplemod:example_block", combining the namespace and path - public static final DeferredItem EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("example_block", EXAMPLE_BLOCK); - - // Creates a new food item with the id "examplemod:example_id", nutrition 1 and saturation 2 - public static final DeferredItem EXAMPLE_ITEM = ITEMS.registerSimpleItem("example_item", new Item.Properties().food(new FoodProperties.Builder() - .alwaysEdible().nutrition(1).saturationModifier(2f).build())); // Creates a creative tab with the id "examplemod:example_tab" for the example item, that is placed after the combat tab - public static final DeferredHolder EXAMPLE_TAB = CREATIVE_MODE_TABS.register("example_tab", () -> CreativeModeTab.builder() - .title(Component.translatable("itemGroup.examplemod")) //The language key for the title of your CreativeModeTab - .withTabsBefore(CreativeModeTabs.COMBAT) - .icon(() -> EXAMPLE_ITEM.get().getDefaultInstance()) - .displayItems((parameters, output) -> { - output.accept(EXAMPLE_ITEM.get()); // Add the example item to the tab. For your own tabs, this method is preferred over the event - }).build()); +// public static final DeferredHolder EXAMPLE_TAB = CREATIVE_MODE_TABS.register("example_tab", () -> CreativeModeTab.builder() +// .title(Component.translatable("itemGroup.examplemod")) //The language key for the title of your CreativeModeTab +// .withTabsBefore(CreativeModeTabs.COMBAT) +// .icon(() -> EXAMPLE_ITEM.get().getDefaultInstance()) +// .displayItems((parameters, output) -> { +// output.accept(EXAMPLE_ITEM.get()); // Add the example item to the tab. For your own tabs, this method is preferred over the event +// }).build()); // The constructor for the mod class is the first code that is run when your mod is loaded. // FML will recognize some parameter types like IEventBus or ModContainer and pass them in automatically. - public ExampleMod(IEventBus modEventBus, ModContainer modContainer) + public Ajar(IEventBus modEventBus, ModContainer modContainer) { + // Register the commonSetup method for modloading modEventBus.addListener(this::commonSetup); // Register the Deferred Register to the mod event bus so blocks get registered - BLOCKS.register(modEventBus); + Register.BLOCKS.register(modEventBus); // Register the Deferred Register to the mod event bus so items get registered - ITEMS.register(modEventBus); + Register.ITEMS.register(modEventBus); // Register the Deferred Register to the mod event bus so tabs get registered - CREATIVE_MODE_TABS.register(modEventBus); +// CREATIVE_MODE_TABS.register(modEventBus); // Register ourselves for server and other game events we are interested in. // Note that this is necessary if and only if we want *this* class (ExampleMod) to respond directly to events. @@ -110,7 +99,7 @@ public class ExampleMod private void addCreative(BuildCreativeModeTabContentsEvent event) { if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) - event.accept(EXAMPLE_BLOCK_ITEM); + event.accept(Register.EXAMPLE_BLOCK_ITEM); } // You can use SubscribeEvent and let the Event Bus discover methods to call diff --git a/src/main/java/com/example/examplemod/Config.java b/src/main/java/dev/exhq/ajarc/config/Config.java similarity index 92% rename from src/main/java/com/example/examplemod/Config.java rename to src/main/java/dev/exhq/ajarc/config/Config.java index d70d1eb..c83eab6 100644 --- a/src/main/java/com/example/examplemod/Config.java +++ b/src/main/java/dev/exhq/ajarc/config/Config.java @@ -1,9 +1,10 @@ -package com.example.examplemod; +package dev.exhq.ajarc.config; import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import dev.exhq.ajarc.Ajar; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -14,7 +15,7 @@ import net.neoforged.neoforge.common.ModConfigSpec; // 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 Neo's config APIs -@EventBusSubscriber(modid = ExampleMod.MODID, bus = EventBusSubscriber.Bus.MOD) +@EventBusSubscriber(modid = Ajar.MODID, bus = EventBusSubscriber.Bus.MOD) public class Config { private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); @@ -36,7 +37,7 @@ public class Config .comment("A list of items to log on common setup.") .defineListAllowEmpty("items", List.of("minecraft:iron_ingot"), Config::validateItemName); - static final ModConfigSpec SPEC = BUILDER.build(); + public static final ModConfigSpec SPEC = BUILDER.build(); public static boolean logDirtBlock; public static int magicNumber; diff --git a/src/main/java/dev/exhq/ajarc/items/Register.java b/src/main/java/dev/exhq/ajarc/items/Register.java new file mode 100644 index 0000000..de42c7b --- /dev/null +++ b/src/main/java/dev/exhq/ajarc/items/Register.java @@ -0,0 +1,33 @@ +package dev.exhq.ajarc.items; + +import dev.exhq.ajarc.items.blocks.NeaBlock; +import net.minecraft.world.food.FoodProperties; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.MapColor; +import net.neoforged.neoforge.registries.DeferredBlock; +import net.neoforged.neoforge.registries.DeferredItem; +import net.neoforged.neoforge.registries.DeferredRegister; + +import static dev.exhq.ajarc.Ajar.MODID; + +public class Register { + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID); + // Create a Deferred Register to hold Items which will all be registered under the "examplemod" namespace + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID); + // Create a Deferred Register to hold CreativeModeTabs which will all be registered under the "examplemod" namespace + // public static final DeferredRegister CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID); + + // Creates a new Block with the id "examplemod:example_block", combining the namespace and path + public static final DeferredBlock EXAMPLE_BLOCK = BLOCKS.registerBlock("example_block", NeaBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GREEN)); + + // Creates a new BlockItem with the id "examplemod:example_block", combining the namespace and path + public static final DeferredItem EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("example_block", EXAMPLE_BLOCK); + + // Creates a new food item with the id "examplemod:example_id", nutrition 1 and saturation 2 + public static final DeferredItem EXAMPLE_ITEM = ITEMS.registerSimpleItem("example_item", new Item.Properties().food(new FoodProperties.Builder() + .alwaysEdible().nutrition(1).saturationModifier(2f).build())); + +} diff --git a/src/main/java/dev/exhq/ajarc/items/blocks/NeaBlock.java b/src/main/java/dev/exhq/ajarc/items/blocks/NeaBlock.java new file mode 100644 index 0000000..8f8c31f --- /dev/null +++ b/src/main/java/dev/exhq/ajarc/items/blocks/NeaBlock.java @@ -0,0 +1,9 @@ +package dev.exhq.ajarc.items.blocks; + +import net.minecraft.world.level.block.Block; + +public class NeaBlock extends Block { + public NeaBlock(Properties properties) { + super(properties); + } +}