diff --git a/src/main/kotlin/cn/rtast/compressionstick/CompressionStick.kt b/src/main/kotlin/cn/rtast/compressionstick/CompressionStick.kt new file mode 100644 index 0000000..cbd655d --- /dev/null +++ b/src/main/kotlin/cn/rtast/compressionstick/CompressionStick.kt @@ -0,0 +1,15 @@ +package cn.rtast.compressionstick + +import cn.rtast.compressionstick.items.ModItems +import net.fabricmc.api.ModInitializer + +class CompressionStick : ModInitializer { + + companion object { + const val MOD_ID = "compressionstick" + } + + override fun onInitialize() { + ModItems.initialize() + } +} diff --git a/src/main/kotlin/cn/rtast/compressionstick/Compressionstick.kt b/src/main/kotlin/cn/rtast/compressionstick/Compressionstick.kt deleted file mode 100644 index 13d43c4..0000000 --- a/src/main/kotlin/cn/rtast/compressionstick/Compressionstick.kt +++ /dev/null @@ -1,9 +0,0 @@ -package cn.rtast.compressionstick - -import net.fabricmc.api.ModInitializer - -class Compressionstick : ModInitializer { - - override fun onInitialize() { - } -} diff --git a/src/main/kotlin/cn/rtast/compressionstick/items/LevelTopWoodenSword.kt b/src/main/kotlin/cn/rtast/compressionstick/items/LevelTopWoodenSword.kt new file mode 100644 index 0000000..be71205 --- /dev/null +++ b/src/main/kotlin/cn/rtast/compressionstick/items/LevelTopWoodenSword.kt @@ -0,0 +1,30 @@ +/* + * Copyright © 2025 RTAkland + * Author: RTAkland + * Date: 2025/1/5 + */ + + +package cn.rtast.compressionstick.items + +import net.minecraft.entity.Entity +import net.minecraft.entity.LivingEntity +import net.minecraft.entity.damage.DamageSource +import net.minecraft.entity.player.PlayerEntity +import net.minecraft.item.ItemStack +import net.minecraft.item.SwordItem +import net.minecraft.item.ToolMaterial +import net.minecraft.util.ActionResult +import net.minecraft.util.Hand + +class LevelTopWoodenSword(settings: Settings) : SwordItem(ToolMaterial.WOOD, 114514f, 1000000f, settings) { + override fun useOnEntity(stack: ItemStack, user: PlayerEntity, entity: LivingEntity, hand: Hand): ActionResult { + entity.jump() + entity.bodyYaw = 0f + return ActionResult.PASS + } + + override fun getBonusAttackDamage(target: Entity, baseAttackDamage: Float, damageSource: DamageSource): Float { + return 114514f + } +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/compressionstick/items/ModItems.kt b/src/main/kotlin/cn/rtast/compressionstick/items/ModItems.kt new file mode 100644 index 0000000..6ddd35d --- /dev/null +++ b/src/main/kotlin/cn/rtast/compressionstick/items/ModItems.kt @@ -0,0 +1,47 @@ +/* + * Copyright © 2025 RTAkland + * Author: RTAkland + * Date: 2025/1/5 + */ + + +package cn.rtast.compressionstick.items + +import cn.rtast.compressionstick.CompressionStick.Companion.MOD_ID +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents +import net.minecraft.item.Item +import net.minecraft.item.ItemGroups +import net.minecraft.item.Items +import net.minecraft.registry.RegistryKey +import net.minecraft.registry.RegistryKeys +import net.minecraft.util.Identifier + +object ModItems { + val LEVEL_ONE_STICK = register("level_one_stick", ::Item, Item.Settings()) + val LEVEL_TWO_STICK = register("level_two_stick", ::Item, Item.Settings()) + val LEVEL_THREE_STICK = register("level_three_stick", ::Item, Item.Settings()) + val LEVEL_TOP_STICK = register("level_top_stick", ::Item, Item.Settings()) + val LEVEL_TOP_WOODEN_SWORD = register("level_top_wooden_sword", ::LevelTopWoodenSword, Item.Settings()) + + fun register(path: String, factory: (Item.Settings) -> Item, settings: Item.Settings): Item { + val registryKey = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(MOD_ID, path)) + return Items.register(registryKey, factory, settings) + } + + fun customIngredients(entries: FabricItemGroupEntries) { + entries.add(LEVEL_ONE_STICK) + entries.add(LEVEL_TWO_STICK) + entries.add(LEVEL_THREE_STICK) + entries.add(LEVEL_TOP_STICK) + } + + fun customCombat(entries: FabricItemGroupEntries) { + entries.add(LEVEL_TOP_WOODEN_SWORD) + } + + fun initialize() { + ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(::customIngredients) + ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register(::customCombat) + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/items/level_one_stick.json b/src/main/resources/assets/compressionstick/items/level_one_stick.json new file mode 100644 index 0000000..69e70f5 --- /dev/null +++ b/src/main/resources/assets/compressionstick/items/level_one_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "compressionstick:item/level_one_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/items/level_three_stick.json b/src/main/resources/assets/compressionstick/items/level_three_stick.json new file mode 100644 index 0000000..16872aa --- /dev/null +++ b/src/main/resources/assets/compressionstick/items/level_three_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "compressionstick:item/level_three_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/items/level_top_stick.json b/src/main/resources/assets/compressionstick/items/level_top_stick.json new file mode 100644 index 0000000..ed97ffa --- /dev/null +++ b/src/main/resources/assets/compressionstick/items/level_top_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "compressionstick:item/level_top_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/items/level_top_wooden_sword.json b/src/main/resources/assets/compressionstick/items/level_top_wooden_sword.json new file mode 100644 index 0000000..9770496 --- /dev/null +++ b/src/main/resources/assets/compressionstick/items/level_top_wooden_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "compressionstick:item/level_top_wooden_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/items/level_two_stick.json b/src/main/resources/assets/compressionstick/items/level_two_stick.json new file mode 100644 index 0000000..09b8049 --- /dev/null +++ b/src/main/resources/assets/compressionstick/items/level_two_stick.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "compressionstick:item/level_two_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/lang/en_us.json b/src/main/resources/assets/compressionstick/lang/en_us.json new file mode 100644 index 0000000..f09cfbc --- /dev/null +++ b/src/main/resources/assets/compressionstick/lang/en_us.json @@ -0,0 +1,7 @@ +{ + "item.compressionstick.level_one_stick": "Level 1 compression stick", + "item.compressionstick.level_two_stick": "Level 2 compression stick", + "item.compressionstick.level_three_stick": "Level 3 compression stick", + "item.compressionstick.level_top_stick": "Level top compression stick", + "item.compressionstick.level_top_wooden_sword": "Level top compression wooden sword" +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/lang/zh_cn.json b/src/main/resources/assets/compressionstick/lang/zh_cn.json new file mode 100644 index 0000000..3e636ef --- /dev/null +++ b/src/main/resources/assets/compressionstick/lang/zh_cn.json @@ -0,0 +1,7 @@ +{ + "item.compressionstick.level_one_stick": "一级压缩木棍", + "item.compressionstick.level_two_stick": "二级压缩木棍", + "item.compressionstick.level_three_stick": "三级压缩木棍", + "item.compressionstick.level_top_stick": "顶级压缩木棍", + "item.compressionstick.level_top_wooden_sword": "顶级压缩木剑" +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/models/item/level_one_stick.json b/src/main/resources/assets/compressionstick/models/item/level_one_stick.json new file mode 100644 index 0000000..8566402 --- /dev/null +++ b/src/main/resources/assets/compressionstick/models/item/level_one_stick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "compressionstick:item/level_one_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/models/item/level_three_stick.json b/src/main/resources/assets/compressionstick/models/item/level_three_stick.json new file mode 100644 index 0000000..4f93752 --- /dev/null +++ b/src/main/resources/assets/compressionstick/models/item/level_three_stick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "compressionstick:item/level_three_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/models/item/level_top_stick.json b/src/main/resources/assets/compressionstick/models/item/level_top_stick.json new file mode 100644 index 0000000..54d5632 --- /dev/null +++ b/src/main/resources/assets/compressionstick/models/item/level_top_stick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "compressionstick:item/level_top_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/models/item/level_top_wooden_sword.json b/src/main/resources/assets/compressionstick/models/item/level_top_wooden_sword.json new file mode 100644 index 0000000..93ed7dc --- /dev/null +++ b/src/main/resources/assets/compressionstick/models/item/level_top_wooden_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "compressionstick:item/level_top_wooden_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/models/item/level_two_stick.json b/src/main/resources/assets/compressionstick/models/item/level_two_stick.json new file mode 100644 index 0000000..cbcfffb --- /dev/null +++ b/src/main/resources/assets/compressionstick/models/item/level_two_stick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "compressionstick:item/level_two_stick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/compressionstick/textures/item/level_one_stick.png b/src/main/resources/assets/compressionstick/textures/item/level_one_stick.png new file mode 100644 index 0000000..ca2ad76 Binary files /dev/null and b/src/main/resources/assets/compressionstick/textures/item/level_one_stick.png differ diff --git a/src/main/resources/assets/compressionstick/textures/item/level_three_stick.png b/src/main/resources/assets/compressionstick/textures/item/level_three_stick.png new file mode 100644 index 0000000..5709334 Binary files /dev/null and b/src/main/resources/assets/compressionstick/textures/item/level_three_stick.png differ diff --git a/src/main/resources/assets/compressionstick/textures/item/level_top_stick.png b/src/main/resources/assets/compressionstick/textures/item/level_top_stick.png new file mode 100644 index 0000000..f4b3e58 Binary files /dev/null and b/src/main/resources/assets/compressionstick/textures/item/level_top_stick.png differ diff --git a/src/main/resources/assets/compressionstick/textures/item/level_top_wooden_sword.png b/src/main/resources/assets/compressionstick/textures/item/level_top_wooden_sword.png new file mode 100644 index 0000000..38e09ca Binary files /dev/null and b/src/main/resources/assets/compressionstick/textures/item/level_top_wooden_sword.png differ diff --git a/src/main/resources/assets/compressionstick/textures/item/level_two_stick.png b/src/main/resources/assets/compressionstick/textures/item/level_two_stick.png new file mode 100644 index 0000000..95ee661 Binary files /dev/null and b/src/main/resources/assets/compressionstick/textures/item/level_two_stick.png differ diff --git a/src/main/resources/data/compressionstick/recipe/level_one_stick.json b/src/main/resources/data/compressionstick/recipe/level_one_stick.json new file mode 100644 index 0000000..1077809 --- /dev/null +++ b/src/main/resources/data/compressionstick/recipe/level_one_stick.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "XXX", + "XXX" + ], + "key": { + "X": [ + "minecraft:stick" + ] + }, + "result": { + "id": "compressionstick:level_one_stick", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/compressionstick/recipe/level_three_stick.json b/src/main/resources/data/compressionstick/recipe/level_three_stick.json new file mode 100644 index 0000000..f98347f --- /dev/null +++ b/src/main/resources/data/compressionstick/recipe/level_three_stick.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "XXX", + "XXX" + ], + "key": { + "X": [ + "compressionstick:level_two_stick" + ] + }, + "result": { + "id": "compressionstick:level_three_stick", + "count": 1 + } +} diff --git a/src/main/resources/data/compressionstick/recipe/level_top_stick.json b/src/main/resources/data/compressionstick/recipe/level_top_stick.json new file mode 100644 index 0000000..eba5667 --- /dev/null +++ b/src/main/resources/data/compressionstick/recipe/level_top_stick.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "XXX", + "XXX" + ], + "key": { + "X": [ + "compressionstick:level_three_stick" + ] + }, + "result": { + "id": "compressionstick:level_top_stick", + "count": 1 + } +} diff --git a/src/main/resources/data/compressionstick/recipe/level_top_wooden_sword.json b/src/main/resources/data/compressionstick/recipe/level_top_wooden_sword.json new file mode 100644 index 0000000..8e1037b --- /dev/null +++ b/src/main/resources/data/compressionstick/recipe/level_top_wooden_sword.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X ", + " X ", + " O " + ], + "key": { + "X": [ + "compressionstick:level_top_stick" + ], + "O": [ + "minecraft:stick" + ] + }, + "result": { + "id": "compressionstick:level_top_wooden_sword", + "count": 1 + } +} diff --git a/src/main/resources/data/compressionstick/recipe/level_two_stick.json b/src/main/resources/data/compressionstick/recipe/level_two_stick.json new file mode 100644 index 0000000..32fae65 --- /dev/null +++ b/src/main/resources/data/compressionstick/recipe/level_two_stick.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "XXX", + "XXX" + ], + "key": { + "X": [ + "compressionstick:level_one_stick" + ] + }, + "result": { + "id": "compressionstick:level_two_stick", + "count": 1 + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index feb8cec..1fd865d 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -4,14 +4,19 @@ "version": "${version}", "name": "CompressionStick", "description": "压缩木棍", - "authors": [], + "authors": [ + "RTAkland" + ], "contact": {}, "license": "Apache-2.0", "icon": "assets/compressionstick/icon.png", - "environment": "server", + "environment": "*", "entrypoints": { "main": [ - "cn.rtast.compressionstick.Compressionstick" + { + "adapter": "kotlin", + "value": "cn.rtast.compressionstick.CompressionStick" + } ] }, "mixins": [