diff --git a/src/main/java/com/learning/block/CustomBlocks.java b/src/main/java/com/learning/block/CustomBlocks.java new file mode 100644 index 0000000..0115c44 --- /dev/null +++ b/src/main/java/com/learning/block/CustomBlocks.java @@ -0,0 +1,36 @@ +package com.learning.block; + +import com.learning.Learning; + +import java.util.function.Function; + +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.util.Identifier; + +public class CustomBlocks { + public static void registerBlocks() { + Learning.LOGGER.info("Registering blocks..."); + } + + public static final Block test_block = register("test_block"); + public static final Block damageBlock = register("damage_block", DamageBlock::new, AbstractBlock.Settings.create()); + + public static final Block register(String blockId) { + return register(blockId, Block::new, AbstractBlock.Settings.create()); + } + + public static Block register(String blockId, Function factory, AbstractBlock.Settings settings) { + RegistryKey key = keyOf(blockId); + return Registry.register(Registries.BLOCK, key, factory.apply(settings.registryKey(key))); + + } + + private static final RegistryKey keyOf(String blockId) { + return RegistryKey.of(RegistryKeys.BLOCK, Identifier.of(Learning.MOD_ID, blockId)); + } +} diff --git a/src/main/java/com/learning/block/DamageBlock.java b/src/main/java/com/learning/block/DamageBlock.java new file mode 100644 index 0000000..bd380f9 --- /dev/null +++ b/src/main/java/com/learning/block/DamageBlock.java @@ -0,0 +1,21 @@ +package com.learning.block; + + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.entity.Entity; + +public class DamageBlock extends Block { + public DamageBlock(AbstractBlock.Settings settings) { + super(settings); + } + public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) { + if (!world.isClient()) { + entity.damage((ServerWorld)world, world.getDamageSources().generic(), 6f); + } + } +} diff --git a/src/main/java/com/learning/component/Foods.java b/src/main/java/com/learning/component/Foods.java index 82ef344..00a1e23 100644 --- a/src/main/java/com/learning/component/Foods.java +++ b/src/main/java/com/learning/component/Foods.java @@ -3,5 +3,6 @@ package com.learning.component; import net.minecraft.component.type.FoodComponent; public class Foods { - public static FoodComponent toastFood = new FoodComponent.Builder().nutrition(4).build(); + public static FoodComponent toastFood = new FoodComponent.Builder().nutrition(2).build(); + public static FoodComponent bakedToastFood = new FoodComponent.Builder().nutrition(6).build(); } diff --git a/src/main/java/com/learning/item/BakedToast.java b/src/main/java/com/learning/item/BakedToast.java new file mode 100644 index 0000000..738da11 --- /dev/null +++ b/src/main/java/com/learning/item/BakedToast.java @@ -0,0 +1,21 @@ +package com.learning.item; + +import java.util.List; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class BakedToast extends Item { + public BakedToast(Item.Settings settings) { + super(settings); + } + + @Override + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + super.appendTooltip(stack, context, tooltip, type); + tooltip.add(Text.translatable("toolTip.learning.baked_toast").formatted(Formatting.GOLD)); + } +} diff --git a/src/main/java/com/learning/item/CustomItem.java b/src/main/java/com/learning/item/CustomItem.java index 88bbde1..c4abfbd 100644 --- a/src/main/java/com/learning/item/CustomItem.java +++ b/src/main/java/com/learning/item/CustomItem.java @@ -4,37 +4,61 @@ package com.learning.item; import java.util.function.Function; import com.learning.Learning; -import com.learning.component.Foods; -import com.learning.item.Toast; +import com.learning.block.CustomBlocks; +import com.learning.component.Foods; +import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; +import net.minecraft.block.Block; import net.minecraft.component.type.ConsumableComponents; public class CustomItem { - public static void registerItems() { - Learning.LOGGER.info("Registering Items..."); - } + public static void registerItems() { + Learning.LOGGER.info("Registering Items..."); + } - public static Item toast = register("toast", Toast::new, new Item.Settings().food(Foods.toastFood, ConsumableComponents.food().consumeSeconds(0.5f).build())); + public static Item toast = register("toast", Toast::new, new Item.Settings().food(Foods.toastFood)); + public static Item bakedToast = register("baked_toast", BakedToast::new, new Item.Settings().food(Foods.bakedToastFood, ConsumableComponents.food().consumeSeconds(0.8f).build())); + public static Item damageBlock = register(CustomBlocks.damageBlock); - private static Item register(String itemId) { - return register(itemId, new Item.Settings()); - } + private static Item register(Block block) { + RegistryKey key = keyOf(Registries.BLOCK.getKey(block).get()); + return Registry.register(Registries.ITEM, key, new BlockItem(block, new Item.Settings().useItemPrefixedTranslationKey().registryKey(key))); + + } - private static Item register(String itemId, Item.Settings settings) { - return register(itemId, Item::new, settings); - } + private static Item register(String itemId) { + return register(itemId, new Item.Settings()); + } + + private static Item register(String itemId, Item.Settings settings) { + return register(itemId, Item::new, settings); + } - private static Item register(String itemId, Function factory, Item.Settings settings) { - RegistryKey key = keyOf(itemId); - return Registry.register(Registries.ITEM, key, factory.apply(settings.registryKey(key))); - } - private static RegistryKey keyOf(String itemId) { - return RegistryKey.of(RegistryKeys.ITEM, Identifier.of(Learning.MOD_ID, itemId)); - } + private static Item register(String itemId, Function factory, Item.Settings settings) { + RegistryKey key = keyOf(itemId); + return register(key, factory, settings); + } + + private static Item register(RegistryKey key, Function factory, Item.Settings settings) { + return register(key, factory.apply(settings.registryKey(key))); + } + + private static Item register(RegistryKey key, Item item) { + return Registry.register(Registries.ITEM, key, item); + + } + + private static RegistryKey keyOf(String itemId) { + return RegistryKey.of(RegistryKeys.ITEM, Identifier.of(Learning.MOD_ID, itemId)); + } + + private static RegistryKey keyOf(RegistryKey blockKey) { + return RegistryKey.of(RegistryKeys.ITEM, blockKey.getValue()); + } } diff --git a/src/main/java/com/learning/item/Toast.java b/src/main/java/com/learning/item/Toast.java index 6255754..f2a1832 100644 --- a/src/main/java/com/learning/item/Toast.java +++ b/src/main/java/com/learning/item/Toast.java @@ -12,17 +12,17 @@ import java.util.List; public class Toast extends Item { public Toast(Item.Settings settings) { - super(settings); + super(settings); } @Override public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { super.appendTooltip(stack, context, tooltip, type); tooltip.add(Text.translatable("toolTip.learning.toast0").formatted(Formatting.GRAY)); - if (Screen.hasControlDown()) { + if (Screen.hasShiftDown()) { tooltip.add(Text.translatable("toolTip.learning.toast1")); } else { - tooltip.add(Text.translatable("toolTip.learning.hold_control")); + tooltip.add(Text.translatable("toolTip.learning.hold_shift")); } } } diff --git a/src/main/java/com/learning/itemgroup/CustomItemGroup.java b/src/main/java/com/learning/itemgroup/CustomItemGroup.java index 0b2d353..a4a78cc 100644 --- a/src/main/java/com/learning/itemgroup/CustomItemGroup.java +++ b/src/main/java/com/learning/itemgroup/CustomItemGroup.java @@ -14,26 +14,28 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class CustomItemGroup { - public static void registerItemGroup() { + public static void registerItemGroup() { Learning.LOGGER.info("Registering ItemGroup..."); Learning.LOGGER.info("Registering item into ItemGroups..."); ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register( - register -> register.add(CustomItem.toast) - ); - } + register -> register.add(CustomItem.toast) + ); + } - public static ItemGroup customItemGroup = register("custom_itemgroup", ItemGroup.create(null, -1) - .icon(() -> new ItemStack(CustomItem.toast)) - .displayName(Text.translatable("itemGroup.learning.custom_itemgroup")) - .entries((displayContext, entries) -> { - entries.add(CustomItem.toast); - }) - .build()); + public static ItemGroup customItemGroup = register("custom_itemgroup", ItemGroup.create(null, -1) + .icon(() -> new ItemStack(CustomItem.toast)) + .displayName(Text.translatable("itemGroup.learning.custom_itemgroup")) + .entries((displayContext, entries) -> { + entries.add(CustomItem.toast); + entries.add(CustomItem.bakedToast); + entries.add(CustomItem.damageBlock); + }) + .build()); private static ItemGroup register(String groupId, ItemGroup itemGroup) { - return Registry.register( - Registries.ITEM_GROUP, - Identifier.of(Learning.MOD_ID, groupId), - itemGroup); - } + return Registry.register( + Registries.ITEM_GROUP, + Identifier.of(Learning.MOD_ID, groupId), + itemGroup); + } } diff --git a/src/main/resources/assets/learning/blockstates/damage_block.json b/src/main/resources/assets/learning/blockstates/damage_block.json new file mode 100644 index 0000000..8de72cd --- /dev/null +++ b/src/main/resources/assets/learning/blockstates/damage_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "learning:block/damage_block" + } + } +} diff --git a/src/main/resources/assets/learning/items/baked_toast.json b/src/main/resources/assets/learning/items/baked_toast.json new file mode 100644 index 0000000..576c906 --- /dev/null +++ b/src/main/resources/assets/learning/items/baked_toast.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "learning:item/baked_toast" + } +} diff --git a/src/main/resources/assets/learning/items/damage_block.json b/src/main/resources/assets/learning/items/damage_block.json new file mode 100644 index 0000000..026a2aa --- /dev/null +++ b/src/main/resources/assets/learning/items/damage_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "learning:block/damage_block" + } +} diff --git a/src/main/resources/assets/learning/lang/en_us.json b/src/main/resources/assets/learning/lang/en_us.json index 3ee41e1..88a3e3f 100644 --- a/src/main/resources/assets/learning/lang/en_us.json +++ b/src/main/resources/assets/learning/lang/en_us.json @@ -5,5 +5,6 @@ "toolTip.learning.toast0": "A simple fastfood.", "toolTip.learning.toast1": "Will be tastier after baking in the furnace!", - "toolTip.learning.hold_control": "Hold §6Control §rto show more information." + "toolTip.learning.hold_control": "Hold §6Control §rto show more information.", + "toolTip.learning.hold_shift": "Hold §6Shift §rto show more information." } diff --git a/src/main/resources/assets/learning/models/block/damage_block.json b/src/main/resources/assets/learning/models/block/damage_block.json new file mode 100644 index 0000000..bd93bda --- /dev/null +++ b/src/main/resources/assets/learning/models/block/damage_block.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "learning:block/damage_block_bottom", + "top": "learning:block/damage_block_top", + "side": "learning:block/damage_block_side" + } +} diff --git a/src/main/resources/assets/learning/models/item/baked_toast.json b/src/main/resources/assets/learning/models/item/baked_toast.json new file mode 100644 index 0000000..fbeac1c --- /dev/null +++ b/src/main/resources/assets/learning/models/item/baked_toast.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "learning:item/baked_toast" + } +} diff --git a/src/main/resources/assets/learning/textures/block/damage_block_bottom.png b/src/main/resources/assets/learning/textures/block/damage_block_bottom.png new file mode 100644 index 0000000..f133955 Binary files /dev/null and b/src/main/resources/assets/learning/textures/block/damage_block_bottom.png differ diff --git a/src/main/resources/assets/learning/textures/block/damage_block_side.png b/src/main/resources/assets/learning/textures/block/damage_block_side.png new file mode 100644 index 0000000..fa5e01c Binary files /dev/null and b/src/main/resources/assets/learning/textures/block/damage_block_side.png differ diff --git a/src/main/resources/assets/learning/textures/block/damage_block_top.png b/src/main/resources/assets/learning/textures/block/damage_block_top.png new file mode 100644 index 0000000..48fd224 Binary files /dev/null and b/src/main/resources/assets/learning/textures/block/damage_block_top.png differ diff --git a/src/main/resources/assets/learning/textures/item/baked_toast.png b/src/main/resources/assets/learning/textures/item/baked_toast.png new file mode 100644 index 0000000..af72a90 Binary files /dev/null and b/src/main/resources/assets/learning/textures/item/baked_toast.png differ