diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt index 089bcda2c..452c25f6c 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt @@ -99,6 +99,7 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.resource(MItems.TRITANIUM_ORE_CLUMP) provider.resource(MItems.DILITHIUM_CRYSTAL) + provider.resource(MItems.WITHERED_STEEL) provider.generated(MItems.EXOPACK_PROBE) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt index 822fefc35..ee8818b27 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/English.kt @@ -772,6 +772,8 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.TRITANIUM_SHEARS, "Tritanium Shears") add(MItems.TRITANIUM_SHIELD, "Tritanium Shield") + add(MItems.WITHERED_STEEL_SWORD, "Withered Steel Sword") + add(MItems.TRITANIUM_HELMET, "Tritanium Helmet") add(MItems.TRITANIUM_CHESTPLATE, "Tritanium Chestplate") add(MItems.TRITANIUM_PANTS, "Tritanium Leggings") @@ -785,6 +787,7 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.TRITANIUM_DUST, "Tritanium Dust") add(MItems.TRITANIUM_INGOT, "Tritanium Ingot") add(MItems.DILITHIUM_CRYSTAL, "Dilithium Crystal") + add(MItems.WITHERED_STEEL, "Withered Steel Ingot") add(MItems.TRITANIUM_NUGGET, "Tritanium Nugget") add(MItems.MATTER_IO_PORT, "Matter IO Port") add(MItems.MATTER_TRANSFORM_MATRIX, "Matter Transformation Matrix") @@ -911,6 +914,7 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.CHEST_UPGRADER, "desc2", "Hold desired crates in the opposite hand") add(MItems.BREAD_MONSTER_SPAWN_EGG, "Bread Monster Spawn Egg") + add(MEntityTypes.BREAD_MONSTER, "Bread Monster") } } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt index d4867917a..229c311d1 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/Russian.kt @@ -765,6 +765,8 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.TRITANIUM_SHEARS, "Тритановые ножницы") add(MItems.TRITANIUM_SHIELD, "Тритановый щит") + add(MItems.WITHERED_STEEL_SWORD, "Меч из иссушенной стали") + add(MItems.TRITANIUM_HELMET, "Тритановый шлем") add(MItems.TRITANIUM_CHESTPLATE, "Тритановый нагрудник") add(MItems.TRITANIUM_PANTS, "Тритановые поножи") @@ -778,6 +780,7 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.TRITANIUM_DUST, "Тритановая пыль") add(MItems.TRITANIUM_INGOT, "Тритановый слиток") add(MItems.DILITHIUM_CRYSTAL, "Дилитевый кристалл") + add(MItems.WITHERED_STEEL, "Слиток иссушенной стали") add(MItems.TRITANIUM_NUGGET, "Тритановый самородок") add(MItems.MATTER_IO_PORT, "Порт ввода/вывода материи") add(MItems.MATTER_TRANSFORM_MATRIX, "Матрица преобразования материи") @@ -902,6 +905,9 @@ private fun items(provider: MatteryLanguageProvider) { add(MItems.CHEST_UPGRADER, "Ящикатор") add(MItems.CHEST_UPGRADER, "desc", "Заменяет установленные сундуки и бочки грузовыми ящиками с сохранением содержимого") add(MItems.CHEST_UPGRADER, "desc2", "Удерживайте необходимые ящики в противоположной руке") + + add(MItems.BREAD_MONSTER_SPAWN_EGG, "Яйцо призыва хлебного монстра") + add(MEntityTypes.BREAD_MONSTER, "Хлебный монстр") } } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt index 527b0ac61..3a74146bc 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/loot/LootModifiersData.kt @@ -204,6 +204,16 @@ fun addLootModifiers(it: LootModifiers) { ItemStack(MItems.EXOPACK_PROBE) )) + it.add("withered_skeleton_steel_drop", PlainLootAppender( + arrayOf( + LootTableIdCondition(EntityType.WITHER_SKELETON.defaultLootTable), + KilledByRealPlayerOrIndirectly + ), + + ItemStack(MItems.WITHERED_STEEL, 1) to 0.24, + ItemStack(MItems.WITHERED_STEEL, 2) to 0.11 + )) + it.add("wither_exosuit_upgrades", BasicLootAppender( arrayOf( LootTableIdCondition(EntityType.WITHER.defaultLootTable), diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MultiblockRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MultiblockRecipes.kt index d1eff86fa..501c13621 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MultiblockRecipes.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/MultiblockRecipes.kt @@ -120,12 +120,14 @@ fun addMultiblockRecipes(consumer: RecipeOutput) { .row(MItemTags.IRON_PLATES, Tags.Items.INGOTS_IRON, MItemTags.IRON_PLATES) .rowAC(Tags.Items.INGOTS_IRON, Tags.Items.INGOTS_IRON) .row(MItemTags.IRON_PLATES, Tags.Items.INGOTS_IRON, MItemTags.IRON_PLATES) + .unlockedBy(MItemTags.IRON_PLATES) .build(consumer) MatteryRecipe(MItems.HEAVY_MODULAR_FRAME, count = 2, category = machinesCategory) - .rowB(MItems.REINFORCED_IRON_PLATE) + .row(MItems.WITHERED_STEEL, MItems.REINFORCED_IRON_PLATE, MItems.WITHERED_STEEL,) .row(MItems.REINFORCED_IRON_PLATE, MItems.MODULAR_FRAME, MItems.REINFORCED_IRON_PLATE) - .rowB(MItems.REINFORCED_IRON_PLATE) + .row(MItems.WITHERED_STEEL, MItems.REINFORCED_IRON_PLATE, MItems.WITHERED_STEEL,) + .unlockedBy(MItems.MODULAR_FRAME) .build(consumer) // blackhole generator diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ToolsRecipes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ToolsRecipes.kt index 2d2749e32..78c63bd92 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ToolsRecipes.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/recipes/ToolsRecipes.kt @@ -58,4 +58,11 @@ fun addToolsRecipes(consumer: RecipeOutput) { .rowB(Tags.Items.RODS_WOODEN) .unlockedBy(MItemTags.TRITANIUM_INGOTS) .build(consumer) + + MatteryRecipe(MItems.WITHERED_STEEL_SWORD, category = RecipeCategory.COMBAT) + .rowB(MItems.WITHERED_STEEL) + .rowB(MItems.WITHERED_STEEL) + .rowB(Tags.Items.RODS_WOODEN) + .unlockedBy(MItems.WITHERED_STEEL) + .build(consumer) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/WitheredSteelSwordItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/WitheredSteelSwordItem.kt new file mode 100644 index 000000000..4c78415e1 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/WitheredSteelSwordItem.kt @@ -0,0 +1,53 @@ +package ru.dbotthepony.mc.otm.item.weapon + +import net.minecraft.world.effect.MobEffectInstance +import net.minecraft.world.effect.MobEffects +import net.minecraft.world.entity.EquipmentSlotGroup +import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.ai.attributes.AttributeModifier +import net.minecraft.world.entity.ai.attributes.Attributes +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.SwordItem +import net.minecraft.world.item.Tiers +import net.minecraft.world.item.component.ItemAttributeModifiers +import ru.dbotthepony.mc.otm.registry.game.MItems + +class WitheredSteelSwordItem(properties: Item.Properties) : SwordItem(Tiers.IRON, properties){ + private val attributes: ItemAttributeModifiers + + init { + var builder = ItemAttributeModifiers.builder() + builder.add(Attributes.ATTACK_DAMAGE, AttributeModifier(BASE_ATTACK_DAMAGE_ID, 4.5, AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND) + builder.add(Attributes.ATTACK_SPEED, AttributeModifier(BASE_ATTACK_SPEED_ID, -2.4, AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND) + + attributes = builder.build() + } + + override fun getMaxDamage(stack: ItemStack): Int { + return 420 + } + + override fun isEnchantable(p_41456_: ItemStack): Boolean { + return p_41456_.count == 1 + } + + override fun getEnchantmentValue(stack: ItemStack): Int { + return 10 + } + + override fun isValidRepairItem(stack: ItemStack, ingredient: ItemStack): Boolean { + return ingredient.`is`(MItems.WITHERED_STEEL) + } + + override fun hurtEnemy(stack: ItemStack, target: LivingEntity, attacker: LivingEntity): Boolean { + target.addEffect(MobEffectInstance(MobEffects.WITHER, 100, 0)) // 5s Wither II + return super.hurtEnemy(stack, target, attacker) + } + + override fun getDefaultAttributeModifiers(stack: ItemStack): ItemAttributeModifiers { + return attributes + } + + +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt index c873ba1a5..c803ef655 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MNames.kt @@ -115,6 +115,9 @@ object MNames { const val VENT = "vent" const val VENT_ALTERNATIVE = "vent_alternative" + const val TRITANIUM_BARS = "tritanium_bars" + const val METAL_RAILING = "metal_railing" + // items const val GRAVITATIONAL_DISRUPTOR = "gravitational_disruptor" const val MATTER_DUST = "matter_dust" @@ -191,6 +194,8 @@ object MNames { const val CHEST_UPGRADER = "chest_upgrader" + const val WITHERED_STEEL_SWORD = "withered_steel_sword" + // eg const val BREAD_MONSTER_SPAWN_EGG = "bead_monster_spawn_egg" @@ -199,8 +204,8 @@ object MNames { const val TRITANIUM_NUGGET = "tritanium_nugget" const val TRITANIUM_INGOT = "tritanium_ingot" const val TRITANIUM_INGOT_BLOCK = "tritanium_ingot_block" - const val TRITANIUM_BARS = "tritanium_bars" - const val METAL_RAILING = "metal_railing" + + const val WITHERED_STEEL = "withered_steel" const val MATTER_IO_PORT = "matter_io_port" diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MCreativeTabs.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MCreativeTabs.kt index 0b762632e..5b4d243b5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MCreativeTabs.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MCreativeTabs.kt @@ -236,11 +236,15 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) { accept(MItems.DILITHIUM_CRYSTAL) accept(MItems.DILITHIUM_CRYSTAL_BLOCK) + accept(MItems.WITHERED_STEEL) + accept(MItems.TRITANIUM_TOOLS) accept(MItems.TRITANIUM_SHIELD) accept(MItems.SIMPLE_TRITANIUM_ARMOR) accept(MItems.TRITANIUM_ARMOR) + accept(MItems.WITHERED_STEEL_SWORD) + energized(MItems.ENERGY_SWORD) accept(MItems.REDSTONE_INTERACTOR) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MItems.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MItems.kt index 8dc77c623..89194c834 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MItems.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/game/MItems.kt @@ -75,6 +75,7 @@ import ru.dbotthepony.mc.otm.item.tool.ExplosiveHammerItem import ru.dbotthepony.mc.otm.item.tool.MatteryAxeItem import ru.dbotthepony.mc.otm.item.tool.RedstoneInteractorItem import ru.dbotthepony.mc.otm.item.weapon.EnergySwordItem +import ru.dbotthepony.mc.otm.item.weapon.WitheredSteelSwordItem import ru.dbotthepony.mc.otm.registry.MDeferredRegister import ru.dbotthepony.mc.otm.registry.MItemTags import ru.dbotthepony.mc.otm.registry.MNames @@ -303,6 +304,8 @@ object MItems { val TRITANIUM_BARS: BlockItem by registry.register(MNames.TRITANIUM_BARS) { BlockItem(MBlocks.TRITANIUM_BARS, DEFAULT_PROPERTIES) } val METAL_RAILING: BlockItem by registry.register(MNames.METAL_RAILING) { BlockItem(MBlocks.METAL_RAILING, DEFAULT_PROPERTIES) } + val WITHERED_STEEL: Item by registry.register(MNames.WITHERED_STEEL) { Item(DEFAULT_PROPERTIES) } + val DILITHIUM_CRYSTAL by registry.register("dilithium_crystal") { MatteryItem(DEFAULT_PROPERTIES) } val DILITHIUM_ORE by registry.register("dilithium_ore") { BlockItem(MBlocks.DILITHIUM_ORE, DEFAULT_PROPERTIES) } val DEEPSLATE_DILITHIUM_ORE by registry.register("deepslate_dilithium_ore") { BlockItem(MBlocks.DEEPSLATE_DILITHIUM_ORE, DEFAULT_PROPERTIES) } @@ -405,6 +408,8 @@ object MItems { val ENERGY_SWORD: Item by registry.register(MNames.ENERGY_SWORD) { EnergySwordItem() } + val WITHERED_STEEL_SWORD: Item by registry.register(MNames.WITHERED_STEEL_SWORD) { WitheredSteelSwordItem(Item.Properties().durability(420)) } + val BLACK_HOLE_SCANNER: Item by registry.register(MNames.BLACK_HOLE_SCANNER) { MatteryItem(DEFAULT_PROPERTIES).addSimpleDescription().addSimpleDescription("2") } val GRAVITATION_FIELD_LIMITER: Item by registry.register(MNames.GRAVITATION_FIELD_LIMITER) { Item(DEFAULT_PROPERTIES) } diff --git a/src/main/resources/assets/overdrive_that_matters/models/block/frame_block.json b/src/main/resources/assets/overdrive_that_matters/models/block/frame_block.json index 5aea3aa89..46650d35f 100644 --- a/src/main/resources/assets/overdrive_that_matters/models/block/frame_block.json +++ b/src/main/resources/assets/overdrive_that_matters/models/block/frame_block.json @@ -17,8 +17,8 @@ } }, { - "from": [15.99995, 15.99995, 15.99995], - "to": [0.00005, 0.00005, 0.00005], + "from": [15.9999, 15.9999, 15.9999], + "to": [0.0001, 0.0001, 0.0001], "rotation": {"angle": 0, "axis": "y", "origin": [16, 16, 16]}, "faces": { "north": {"uv": [0, 0, 16, 16], "texture": "#texture", "cullface": "south"}, diff --git a/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword.json b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword.json new file mode 100644 index 000000000..3d8815653 --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword.json @@ -0,0 +1,19 @@ +{ + "loader": "neoforge:separate_transforms", + "gui_light": "front", + "base": + { + "parent": "overdrive_that_matters:item/withered_steel_sword_handheld" + }, + "perspectives": { + "gui": { + "parent": "overdrive_that_matters:item/withered_steel_sword_inventory" + }, + "fixed": { + "parent": "overdrive_that_matters:item/withered_steel_sword_inventory" + }, + "ground": { + "parent": "overdrive_that_matters:item/withered_steel_sword_inventory" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_handheld.json b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_handheld.json new file mode 100644 index 000000000..75344b0cb --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_handheld.json @@ -0,0 +1,29 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "overdrive_that_matters:item/withered_steel_sword_handheld" + }, + "display": { + "thirdperson_righthand": { + "rotation": [0, -90, 55], + "translation": [0, 4, 0.5], + "scale": [0.85, 0.85, 0.85] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, -55], + "translation": [0, 4, 0.5], + "scale": [0.85, 0.85, 0.85] + }, + "firstperson_righthand": { + "rotation": [0, -90, 25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + }, + "firstperson_lefthand": { + "rotation": [0, 90, -25], + "translation": [1.13, 3.2, 1.13], + "scale": [0.68, 0.68, 0.68] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_inventory.json b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_inventory.json new file mode 100644 index 000000000..1749d2995 --- /dev/null +++ b/src/main/resources/assets/overdrive_that_matters/models/item/withered_steel_sword_inventory.json @@ -0,0 +1,7 @@ +{ + "credit": "Made with Blockbench", + "parent": "minecraft:item/generated", + "textures": { + "layer0": "overdrive_that_matters:item/withered_steel_sword" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/overdrive_that_matters/textures/block/heavy_modular_frame.png b/src/main/resources/assets/overdrive_that_matters/textures/block/heavy_modular_frame.png index 1f5295b47..d0657c812 100644 Binary files a/src/main/resources/assets/overdrive_that_matters/textures/block/heavy_modular_frame.png and b/src/main/resources/assets/overdrive_that_matters/textures/block/heavy_modular_frame.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/item/component/roflite_alloy_ingot.png b/src/main/resources/assets/overdrive_that_matters/textures/item/resources/roflite_alloy_ingot.png similarity index 100% rename from src/main/resources/assets/overdrive_that_matters/textures/item/component/roflite_alloy_ingot.png rename to src/main/resources/assets/overdrive_that_matters/textures/item/resources/roflite_alloy_ingot.png diff --git a/src/main/resources/assets/overdrive_that_matters/textures/item/resources/withered_steel.png b/src/main/resources/assets/overdrive_that_matters/textures/item/resources/withered_steel.png new file mode 100644 index 000000000..c9572dd57 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/item/resources/withered_steel.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword.png b/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword.png new file mode 100644 index 000000000..781a54551 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword.png differ diff --git a/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword_handheld.png b/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword_handheld.png new file mode 100644 index 000000000..acd6f9833 Binary files /dev/null and b/src/main/resources/assets/overdrive_that_matters/textures/item/withered_steel_sword_handheld.png differ diff --git a/src/main/resources/data/overdrive_that_matters/weapon_attributes/withered_steel_sword.json b/src/main/resources/data/overdrive_that_matters/weapon_attributes/withered_steel_sword.json new file mode 100644 index 000000000..1271e3f2e --- /dev/null +++ b/src/main/resources/data/overdrive_that_matters/weapon_attributes/withered_steel_sword.json @@ -0,0 +1,6 @@ +{ + "parent": "bettercombat:sword", + "attributes": { + "attack_range": 2 + } +} \ No newline at end of file