diff --git a/src/main/java/de/jottyfan/minecraft/QuicklyClient.java b/src/main/java/de/jottyfan/minecraft/QuicklyClient.java index 9326af5..40033bf 100644 --- a/src/main/java/de/jottyfan/minecraft/QuicklyClient.java +++ b/src/main/java/de/jottyfan/minecraft/QuicklyClient.java @@ -1,5 +1,6 @@ package de.jottyfan.minecraft; +import de.jottyfan.minecraft.item.QuicklyItems; import net.fabricmc.api.ClientModInitializer; /** @@ -11,5 +12,6 @@ public class QuicklyClient implements ClientModInitializer { @Override public void onInitializeClient() { + QuicklyItems.registerModItems(); } } diff --git a/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java new file mode 100644 index 0000000..c0bd224 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/QuicklyItems.java @@ -0,0 +1,36 @@ +package de.jottyfan.minecraft.item; + +import java.util.function.Function; + +import de.jottyfan.minecraft.Quickly; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Item.Properties; + +/** + * + * @author jotty + * + */ +public class QuicklyItems { + public static final Item MY_ITEM = registerItem("stub", new Item.Properties(), p -> new Stub(p)); + + private static final Item registerItem(String name, Item.Properties properties, Function function) { + Identifier identifier = Identifier.fromNamespaceAndPath(Quickly.MOD_ID, name); + ResourceKey rc = ResourceKey.create(Registries.ITEM, identifier); + Item i = function.apply(properties.setId(rc).modelId(identifier).useItemDescriptionPrefix()); + return Registry.register(BuiltInRegistries.ITEM, identifier, i); + } + + public static void registerModItems() { + ItemGroupEvents.modifyEntriesEvent(CreativeModeTabs.TOOLS_AND_UTILITIES).register(i -> { + i.accept(MY_ITEM); + }); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/item/Stub.java b/src/main/java/de/jottyfan/minecraft/item/Stub.java new file mode 100644 index 0000000..904177f --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/Stub.java @@ -0,0 +1,52 @@ +package de.jottyfan.minecraft.item; + +import java.util.Map; +import java.util.Random; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +public class Stub extends Item { + + public Stub(Properties properties) { + super(properties.stacksTo(64)); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Map SLASH_MAP = Map.of( + Blocks.HAY_BLOCK, Items.WHEAT, + Blocks.DRIED_KELP_BLOCK, Items.DRIED_KELP); +// , +// ModBlocks.BLOCK_KELPSTACK, Items.KELP); + + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Block clickedBlock = level.getBlockState(pos).getBlock(); + if (SLASH_MAP.containsKey(clickedBlock)) { + if (!level.isClientSide()) { + level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + level.playSound(null, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS); + for (int i = 0; i < 9; i++) { + ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock)); + float xScatter = new Random().nextFloat(); + float yScatter = new Random().nextFloat(); + ItemEntity entity = new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), + stack, xScatter, yScatter, 0.2); + level.addFreshEntity(entity); + } + } + } + return InteractionResult.SUCCESS; + } +} diff --git a/src/main/resources/assets/quickly/items/stub.json b/src/main/resources/assets/quickly/items/stub.json new file mode 100644 index 0000000..353039b --- /dev/null +++ b/src/main/resources/assets/quickly/items/stub.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "quickly:item/stub" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/lang/de_de.json b/src/main/resources/assets/quickly/lang/de_de.json new file mode 100644 index 0000000..ed41b61 --- /dev/null +++ b/src/main/resources/assets/quickly/lang/de_de.json @@ -0,0 +1,3 @@ +{ + "item.quickly.stub": "Stummel" +} diff --git a/src/main/resources/assets/quickly/lang/en_us.json b/src/main/resources/assets/quickly/lang/en_us.json new file mode 100644 index 0000000..b32db46 --- /dev/null +++ b/src/main/resources/assets/quickly/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "item.quickly.stub": "stub" +} diff --git a/src/main/resources/assets/quickly/models/item/stub.json b/src/main/resources/assets/quickly/models/item/stub.json new file mode 100644 index 0000000..342de04 --- /dev/null +++ b/src/main/resources/assets/quickly/models/item/stub.json @@ -0,0 +1,6 @@ +{ + "parent": "item/stick", + "textures": { + "layer0": "quickly:item/stub" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/quickly/textures/item/stub.png b/src/main/resources/assets/quickly/textures/item/stub.png new file mode 100644 index 0000000..cd67920 Binary files /dev/null and b/src/main/resources/assets/quickly/textures/item/stub.png differ diff --git a/src/main/resources/data/quickly/recipe/campfire_torch.json b/src/main/resources/data/quickly/recipe/campfire_torch.json new file mode 100644 index 0000000..36e278c --- /dev/null +++ b/src/main/resources/data/quickly/recipe/campfire_torch.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": "quickly:stub", + "result": { + "id": "minecraft:torch" + }, + "experience": 0.1, + "cookingtime": 20 +} diff --git a/src/main/resources/data/quickly/recipe/shapeless_stub.json b/src/main/resources/data/quickly/recipe/shapeless_stub.json new file mode 100644 index 0000000..9deabdf --- /dev/null +++ b/src/main/resources/data/quickly/recipe/shapeless_stub.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + "minecraft:stick" + ], + "result": { + "id": "quickly:stub", + "count": 4 + } +} \ No newline at end of file