@@ -1,12 +1,16 @@
|
|||||||
package dev.zxq5
|
package dev.zxq5
|
||||||
|
|
||||||
import dev.zxq5.items.ModItems
|
import dev.zxq5.items.ModItems
|
||||||
import dev.zxq5.items.ModItems.CUSTOM_CREATIVE_TAB
|
import dev.zxq5.items.Witherite
|
||||||
import dev.zxq5.items.ModItems.CUSTOM_CREATIVE_TAB_KEY
|
import dev.zxq5.items.isWearingFullSet
|
||||||
import net.fabricmc.api.ModInitializer
|
import net.fabricmc.api.ModInitializer
|
||||||
import net.minecraft.core.Registry
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents
|
||||||
import net.minecraft.core.registries.BuiltInRegistries
|
import net.fabricmc.fabric.api.event.player.AttackEntityCallback
|
||||||
import net.minecraft.world.item.Item
|
import net.minecraft.world.InteractionHand
|
||||||
|
import net.minecraft.world.InteractionResult
|
||||||
|
import net.minecraft.world.effect.MobEffectInstance
|
||||||
|
import net.minecraft.world.effect.MobEffects
|
||||||
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
|
|
||||||
object Fantasysmp : ModInitializer {
|
object Fantasysmp : ModInitializer {
|
||||||
@@ -22,5 +26,38 @@ object Fantasysmp : ModInitializer {
|
|||||||
logger.info("Hello Fabric world!")
|
logger.info("Hello Fabric world!")
|
||||||
ModItems.init();
|
ModItems.init();
|
||||||
// Register the group.
|
// Register the group.
|
||||||
|
registerItemEffects()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun registerItemEffects() {
|
||||||
|
ServerTickEvents.END_SERVER_TICK.register { server ->
|
||||||
|
for (player in server.playerList.players) {
|
||||||
|
if (player.isWearingFullSet(Witherite.ARMOUR_SET)) {
|
||||||
|
player.removeEffect(MobEffects.WITHER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AttackEntityCallback.EVENT.register { player, world, hand, entity, _ ->
|
||||||
|
if (world.isClientSide) return@register InteractionResult.PASS
|
||||||
|
if (hand != InteractionHand.MAIN_HAND) return@register InteractionResult.PASS
|
||||||
|
if (player.getItemInHand(hand).item != Witherite.SWORD) return@register InteractionResult.PASS
|
||||||
|
if (entity is LivingEntity) {
|
||||||
|
entity.addEffect(MobEffectInstance(MobEffects.WITHER, 60, 1), player)
|
||||||
|
}
|
||||||
|
|
||||||
|
InteractionResult.PASS
|
||||||
|
}
|
||||||
|
|
||||||
|
AttackEntityCallback.EVENT.register { player, world, hand, entity, _ ->
|
||||||
|
if (world.isClientSide) return@register InteractionResult.PASS
|
||||||
|
if (hand != InteractionHand.MAIN_HAND) return@register InteractionResult.PASS
|
||||||
|
if (player.getItemInHand(hand).item != Witherite.AXE) return@register InteractionResult.PASS
|
||||||
|
if (entity is LivingEntity) {
|
||||||
|
entity.addEffect(MobEffectInstance(MobEffects.WITHER, 60, 1), player)
|
||||||
|
}
|
||||||
|
|
||||||
|
InteractionResult.PASS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
package dev.zxq5.items
|
||||||
|
|
||||||
|
import dev.zxq5.Fantasysmp
|
||||||
|
import dev.zxq5.items.ModItems.register
|
||||||
|
import net.minecraft.core.component.DataComponents
|
||||||
|
import net.minecraft.core.particles.ParticleOptions
|
||||||
|
import net.minecraft.core.particles.ParticleTypes
|
||||||
|
import net.minecraft.resources.Identifier
|
||||||
|
import net.minecraft.resources.ResourceKey
|
||||||
|
import net.minecraft.server.level.ServerLevel
|
||||||
|
import net.minecraft.sounds.SoundEvents
|
||||||
|
import net.minecraft.sounds.SoundSource
|
||||||
|
import net.minecraft.tags.ItemTags
|
||||||
|
import net.minecraft.util.Unit
|
||||||
|
import net.minecraft.world.InteractionHand
|
||||||
|
import net.minecraft.world.InteractionResult
|
||||||
|
import net.minecraft.world.entity.player.Player
|
||||||
|
import net.minecraft.world.item.Item
|
||||||
|
import net.minecraft.world.item.ToolMaterial
|
||||||
|
import net.minecraft.world.item.component.BlocksAttacks
|
||||||
|
import net.minecraft.world.item.equipment.*
|
||||||
|
import net.minecraft.world.level.Level
|
||||||
|
import java.util.Optional
|
||||||
|
|
||||||
|
|
||||||
|
object Dragonite {
|
||||||
|
const val BASE_DURABILITY = 40;
|
||||||
|
val witherite_material_key: ResourceKey<EquipmentAsset> = ResourceKey.create<EquipmentAsset>(
|
||||||
|
EquipmentAssets.ROOT_ID,
|
||||||
|
Identifier.fromNamespaceAndPath(Fantasysmp.MOD_ID, "dragon")
|
||||||
|
)
|
||||||
|
|
||||||
|
val armorMaterial = ArmorMaterial(
|
||||||
|
BASE_DURABILITY,
|
||||||
|
mapOf(
|
||||||
|
ArmorType.HELMET to 3,
|
||||||
|
ArmorType.CHESTPLATE to 8,
|
||||||
|
ArmorType.LEGGINGS to 6,
|
||||||
|
ArmorType.BOOTS to 3,
|
||||||
|
ArmorType.BODY to 19,
|
||||||
|
),
|
||||||
|
5,
|
||||||
|
SoundEvents.ARMOR_EQUIP_NETHERITE,
|
||||||
|
3.0f,
|
||||||
|
0.1f,
|
||||||
|
ItemTags.REPAIRS_NETHERITE_ARMOR,
|
||||||
|
witherite_material_key,
|
||||||
|
)
|
||||||
|
|
||||||
|
val SWORD = register("dragon_sword", ::DragoniteSword,
|
||||||
|
Item.Properties()
|
||||||
|
.sword(ToolMaterial.NETHERITE, 3.0F, -2.4F)
|
||||||
|
.component(DataComponents.BLOCKS_ATTACKS, BlocksAttacks(
|
||||||
|
0.25f, // 5 tick warmup
|
||||||
|
1.0f, // standard disable cooldown
|
||||||
|
listOf(
|
||||||
|
BlocksAttacks.DamageReduction(
|
||||||
|
90.0f, // horizontalBlockingAngle — 90° arc each side (180° total, same as vanilla)
|
||||||
|
Optional.empty(), // type — empty = blocks all damage types
|
||||||
|
0.0f, // base — flat damage reduction
|
||||||
|
1.0f // factor — multiplier (1.0 = block 100% of damage)
|
||||||
|
)
|
||||||
|
), // full block — check if this constant exists, else build the list manually
|
||||||
|
BlocksAttacks.ItemDamageFunction.DEFAULT, // check for this constant too
|
||||||
|
Optional.empty(), // no bypass
|
||||||
|
Optional.empty(), // default block sound
|
||||||
|
Optional.empty() // default disable sound
|
||||||
|
))
|
||||||
|
)
|
||||||
|
val HELMET = register(
|
||||||
|
"dragon_helmet",
|
||||||
|
::Item,
|
||||||
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.HELMET)
|
||||||
|
.durability(ArmorType.HELMET.getDurability(armorMaterial.durability))
|
||||||
|
)
|
||||||
|
|
||||||
|
val CHESTPLATE = register(
|
||||||
|
"dragon_chestplate",
|
||||||
|
::Item,
|
||||||
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.CHESTPLATE)
|
||||||
|
.component(DataComponents.GLIDER, Unit.INSTANCE)
|
||||||
|
.durability(ArmorType.CHESTPLATE.getDurability(armorMaterial.durability))
|
||||||
|
)
|
||||||
|
|
||||||
|
val LEGGINGS = register(
|
||||||
|
"dragon_leggings",
|
||||||
|
::Item,
|
||||||
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.LEGGINGS)
|
||||||
|
.durability(ArmorType.LEGGINGS.getDurability(armorMaterial.durability))
|
||||||
|
)
|
||||||
|
|
||||||
|
val BOOTS = register(
|
||||||
|
"dragon_boots",
|
||||||
|
::Item,
|
||||||
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.BOOTS)
|
||||||
|
.durability(ArmorType.BOOTS.getDurability(armorMaterial.durability))
|
||||||
|
)
|
||||||
|
|
||||||
|
val INGOT = register(
|
||||||
|
"dragonite_ingot",
|
||||||
|
::Item,
|
||||||
|
Item.Properties()
|
||||||
|
)
|
||||||
|
|
||||||
|
val SCALE = register(
|
||||||
|
"dragon_scale",
|
||||||
|
::Item,
|
||||||
|
Item.Properties()
|
||||||
|
)
|
||||||
|
|
||||||
|
val ITEMS = listOf(SWORD, HELMET, CHESTPLATE, LEGGINGS, BOOTS, INGOT, SCALE)
|
||||||
|
val ARMOUR_SET = ArmorSet(HELMET, CHESTPLATE, LEGGINGS, BOOTS)
|
||||||
|
|
||||||
|
fun init() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DragoniteSword(properties: Properties) : Item(properties) {
|
||||||
|
override fun use(level: Level, user: Player, hand: InteractionHand): InteractionResult {
|
||||||
|
if (level.isClientSide) return InteractionResult.PASS
|
||||||
|
if (!user.isWearingFullSet(Dragonite.ARMOUR_SET)) return InteractionResult.PASS
|
||||||
|
|
||||||
|
val stack = user.getItemInHand(hand)
|
||||||
|
if (user.cooldowns.isOnCooldown(stack)) return InteractionResult.PASS
|
||||||
|
|
||||||
|
val dir = user.lookAngle
|
||||||
|
user.deltaMovement = dir.scale(2.0)
|
||||||
|
user.hurtMarked = true
|
||||||
|
|
||||||
|
level.playSound(null, user.x, user.y, user.z,
|
||||||
|
SoundEvents.ENDER_DRAGON_FLAP, SoundSource.PLAYERS, 1.0f, 1.0f)
|
||||||
|
|
||||||
|
(level as? ServerLevel)?.sendParticles(
|
||||||
|
ParticleTypes.DRAGON_BREATH as ParticleOptions,
|
||||||
|
user.x, user.y, user.z,
|
||||||
|
100, 0.5, 0.5, 0.5, 0.5
|
||||||
|
)
|
||||||
|
|
||||||
|
user.cooldowns.addCooldown(stack, 25)
|
||||||
|
|
||||||
|
return InteractionResult.SUCCESS
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +1,19 @@
|
|||||||
package dev.zxq5.items
|
package dev.zxq5.items
|
||||||
|
|
||||||
import dev.zxq5.Fantasysmp
|
import dev.zxq5.Fantasysmp
|
||||||
import dev.zxq5.items.Witherite.WITHERITE_HELMET
|
import dev.zxq5.items.Witherite.SWORD
|
||||||
import dev.zxq5.items.Witherite.WITHERITE_SWORD
|
|
||||||
import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab
|
import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab
|
||||||
import net.minecraft.core.Registry
|
import net.minecraft.core.Registry
|
||||||
import net.minecraft.core.component.DataComponents
|
|
||||||
import net.minecraft.core.registries.BuiltInRegistries
|
import net.minecraft.core.registries.BuiltInRegistries
|
||||||
import net.minecraft.core.registries.Registries
|
import net.minecraft.core.registries.Registries
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.resources.Identifier
|
import net.minecraft.resources.Identifier
|
||||||
import net.minecraft.resources.ResourceKey
|
import net.minecraft.resources.ResourceKey
|
||||||
|
import net.minecraft.world.entity.EquipmentSlot
|
||||||
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.item.*
|
import net.minecraft.world.item.*
|
||||||
import net.minecraft.world.item.CreativeModeTab.DisplayItemsGenerator
|
import net.minecraft.world.item.CreativeModeTab.DisplayItemsGenerator
|
||||||
import net.minecraft.world.item.CreativeModeTab.ItemDisplayParameters
|
import net.minecraft.world.item.CreativeModeTab.ItemDisplayParameters
|
||||||
import net.minecraft.world.item.component.ItemLore
|
|
||||||
import net.minecraft.world.item.equipment.ArmorMaterials
|
|
||||||
import net.minecraft.world.item.equipment.ArmorType
|
|
||||||
import java.util.List
|
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
|
|
||||||
@@ -38,16 +34,31 @@ object ModItems {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val CUSTOM_CREATIVE_TAB: CreativeModeTab = FabricCreativeModeTab.builder()
|
val CUSTOM_CREATIVE_TAB: CreativeModeTab = FabricCreativeModeTab.builder()
|
||||||
.icon(Supplier { ItemStack(WITHERITE_SWORD) })
|
.icon(Supplier { ItemStack(SWORD) })
|
||||||
.title(Component.translatable("Fantasysmp"))
|
.title(Component.translatable("Fantasysmp"))
|
||||||
.displayItems(DisplayItemsGenerator { params: ItemDisplayParameters, output: CreativeModeTab.Output ->
|
.displayItems(DisplayItemsGenerator { params: ItemDisplayParameters, output: CreativeModeTab.Output ->
|
||||||
Witherite.ITEMS.forEach { output.accept(it) }
|
Witherite.ITEMS.forEach { output.accept(it) }
|
||||||
|
Dragonite.ITEMS.forEach { output.accept(it) }
|
||||||
})
|
})
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
fun init() {
|
fun init() {
|
||||||
Witherite.init();
|
Witherite.init();
|
||||||
|
Dragonite.init();
|
||||||
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, CUSTOM_CREATIVE_TAB_KEY, CUSTOM_CREATIVE_TAB);
|
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, CUSTOM_CREATIVE_TAB_KEY, CUSTOM_CREATIVE_TAB);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class ArmorSet(
|
||||||
|
val helmet: Item,
|
||||||
|
val chestplate: Item,
|
||||||
|
val leggings: Item,
|
||||||
|
val boots: Item,
|
||||||
|
)
|
||||||
|
|
||||||
|
fun Player.isWearingFullSet(set: ArmorSet): Boolean {
|
||||||
|
return getItemBySlot(EquipmentSlot.HEAD).item == set.helmet &&
|
||||||
|
getItemBySlot(EquipmentSlot.CHEST).item == set.chestplate &&
|
||||||
|
getItemBySlot(EquipmentSlot.LEGS).item == set.leggings &&
|
||||||
|
getItemBySlot(EquipmentSlot.FEET).item == set.boots
|
||||||
|
}
|
||||||
@@ -2,22 +2,23 @@ package dev.zxq5.items
|
|||||||
|
|
||||||
import dev.zxq5.Fantasysmp
|
import dev.zxq5.Fantasysmp
|
||||||
import dev.zxq5.items.ModItems.register
|
import dev.zxq5.items.ModItems.register
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.core.component.DataComponents
|
||||||
import net.minecraft.resources.Identifier
|
import net.minecraft.resources.Identifier
|
||||||
import net.minecraft.resources.ResourceKey
|
import net.minecraft.resources.ResourceKey
|
||||||
import net.minecraft.sounds.SoundEvents
|
import net.minecraft.sounds.SoundEvents
|
||||||
import net.minecraft.sounds.SoundSource
|
|
||||||
import net.minecraft.tags.ItemTags
|
import net.minecraft.tags.ItemTags
|
||||||
|
import net.minecraft.util.Unit
|
||||||
import net.minecraft.world.InteractionHand
|
import net.minecraft.world.InteractionHand
|
||||||
import net.minecraft.world.InteractionResult
|
import net.minecraft.world.InteractionResult
|
||||||
import net.minecraft.world.entity.Entity
|
|
||||||
import net.minecraft.world.entity.EntityType
|
import net.minecraft.world.entity.EntityType
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull
|
import net.minecraft.world.entity.projectile.hurtingprojectile.WitherSkull
|
||||||
import net.minecraft.world.item.Item
|
import net.minecraft.world.item.Item
|
||||||
import net.minecraft.world.item.ToolMaterial
|
import net.minecraft.world.item.ToolMaterial
|
||||||
|
import net.minecraft.world.item.component.BlocksAttacks
|
||||||
import net.minecraft.world.item.equipment.*
|
import net.minecraft.world.item.equipment.*
|
||||||
import net.minecraft.world.level.Level
|
import net.minecraft.world.level.Level
|
||||||
|
import java.util.Optional
|
||||||
|
|
||||||
|
|
||||||
object Witherite {
|
object Witherite {
|
||||||
@@ -44,38 +45,62 @@ object Witherite {
|
|||||||
witherite_material_key,
|
witherite_material_key,
|
||||||
)
|
)
|
||||||
|
|
||||||
val WITHERITE_SWORD = register("witherite_sword", ::WitheriteSword,
|
val SHIELD = register("witherite_shield", ::Item,
|
||||||
Item.Properties().sword(ToolMaterial.NETHERITE, 3.0F, -2.4F)
|
Item.Properties().component(DataComponents.BLOCKS_ATTACKS, BlocksAttacks(
|
||||||
|
0.25f, // 5 tick warmup
|
||||||
|
1.0f, // standard disable cooldown
|
||||||
|
listOf(
|
||||||
|
BlocksAttacks.DamageReduction(
|
||||||
|
90.0f, // horizontalBlockingAngle — 90° arc each side (180° total, same as vanilla)
|
||||||
|
Optional.empty(), // type — empty = blocks all damage types
|
||||||
|
0.0f, // base — flat damage reduction
|
||||||
|
1.0f // factor — multiplier (1.0 = block 100% of damage)
|
||||||
)
|
)
|
||||||
val WITHERITE_HELMET = register(
|
), // full block — check if this constant exists, else build the list manually
|
||||||
|
BlocksAttacks.ItemDamageFunction.DEFAULT, // check for this constant too
|
||||||
|
Optional.empty(), // no bypass
|
||||||
|
Optional.empty(), // default block sound
|
||||||
|
Optional.empty() // default disable sound
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
val SWORD = register("witherite_sword", ::WitheriteSword,
|
||||||
|
Item.Properties().sword(ToolMaterial.NETHERITE, 3F, -2.4F)
|
||||||
|
)
|
||||||
|
|
||||||
|
val AXE = register("witherite_axe", ::Item,
|
||||||
|
Item.Properties().axe(ToolMaterial.NETHERITE, 5F, -3F))
|
||||||
|
|
||||||
|
val HELMET = register(
|
||||||
"witherite_helmet",
|
"witherite_helmet",
|
||||||
::Item,
|
::Item,
|
||||||
Item.Properties().humanoidArmor(armorMaterial , ArmorType.HELMET)
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.HELMET)
|
||||||
.durability(ArmorType.HELMET.getDurability(armorMaterial.durability))
|
.durability(ArmorType.HELMET.getDurability(armorMaterial.durability))
|
||||||
)
|
)
|
||||||
|
|
||||||
val WITHERITE_CHESTPLATE = register(
|
val CHESTPLATE = register(
|
||||||
"witherite_chestplate",
|
"witherite_chestplate",
|
||||||
::Item,
|
::Item,
|
||||||
Item.Properties().humanoidArmor(armorMaterial , ArmorType.CHESTPLATE)
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.CHESTPLATE)
|
||||||
.durability(ArmorType.CHESTPLATE.getDurability(armorMaterial.durability))
|
.durability(ArmorType.CHESTPLATE.getDurability(armorMaterial.durability))
|
||||||
)
|
)
|
||||||
|
|
||||||
val WITHERITE_LEGGINGS = register(
|
val LEGGINGS = register(
|
||||||
"witherite_leggings",
|
"witherite_leggings",
|
||||||
::Item,
|
::Item,
|
||||||
Item.Properties().humanoidArmor(armorMaterial , ArmorType.LEGGINGS)
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.LEGGINGS)
|
||||||
.durability(ArmorType.LEGGINGS.getDurability(armorMaterial.durability))
|
.durability(ArmorType.LEGGINGS.getDurability(armorMaterial.durability))
|
||||||
)
|
)
|
||||||
|
|
||||||
val WITHERITE_BOOTS = register(
|
val BOOTS = register(
|
||||||
"witherite_boots",
|
"witherite_boots",
|
||||||
::Item,
|
::Item,
|
||||||
Item.Properties().humanoidArmor(armorMaterial , ArmorType.BOOTS)
|
Item.Properties().humanoidArmor(armorMaterial , ArmorType.BOOTS)
|
||||||
.durability(ArmorType.BOOTS.getDurability(armorMaterial.durability))
|
.durability(ArmorType.BOOTS.getDurability(armorMaterial.durability))
|
||||||
)
|
)
|
||||||
|
|
||||||
val ITEMS = listOf(WITHERITE_SWORD, WITHERITE_HELMET, WITHERITE_CHESTPLATE, WITHERITE_LEGGINGS, WITHERITE_BOOTS)
|
val ITEMS = listOf(SWORD, AXE, SHIELD, HELMET, CHESTPLATE, LEGGINGS, BOOTS)
|
||||||
|
val ARMOUR_SET = ArmorSet(HELMET, CHESTPLATE, LEGGINGS, BOOTS)
|
||||||
|
|
||||||
fun init() {}
|
fun init() {}
|
||||||
}
|
}
|
||||||
@@ -86,6 +111,8 @@ class WitheriteSword(properties: Properties) : Item(properties) {
|
|||||||
return InteractionResult.PASS;
|
return InteractionResult.PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!user.isCrouching) return InteractionResult.PASS
|
||||||
|
|
||||||
val skull = WitherSkull(EntityType.WITHER_SKULL, level)
|
val skull = WitherSkull(EntityType.WITHER_SKULL, level)
|
||||||
skull.setPos(user.eyePosition)
|
skull.setPos(user.eyePosition)
|
||||||
skull.deltaMovement = user.lookAngle
|
skull.deltaMovement = user.lookAngle
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "fantasysmp:item/dragon_scale"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "fantasysmp:item/dragonite_ingot"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:model",
|
||||||
|
"model": "fantasysmp:item/witherite_axe"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"model": {
|
||||||
|
"type": "minecraft:condition",
|
||||||
|
"on_false": {
|
||||||
|
"type": "minecraft:special",
|
||||||
|
"base": "minecraft:item/shield",
|
||||||
|
"model": {
|
||||||
|
"type": "fantasysmp:witherite_shield"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"on_true": {
|
||||||
|
"type": "minecraft:special",
|
||||||
|
"base": "minecraft:item/shield_blocking",
|
||||||
|
"model": {
|
||||||
|
"type": "fantasysmp:witherite_shield"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"property": "minecraft:using_item",
|
||||||
|
"transformation": {
|
||||||
|
"left_rotation": [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"right_rotation": [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
-1.0,
|
||||||
|
-1.0
|
||||||
|
],
|
||||||
|
"translation": [
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,5 +3,12 @@
|
|||||||
"item.fantasysmp.witherite_helmet": "Witherite Helmet",
|
"item.fantasysmp.witherite_helmet": "Witherite Helmet",
|
||||||
"item.fantasysmp.witherite_chestplate": "Witherite Chestplate",
|
"item.fantasysmp.witherite_chestplate": "Witherite Chestplate",
|
||||||
"item.fantasysmp.witherite_leggings": "Witherite Leggings",
|
"item.fantasysmp.witherite_leggings": "Witherite Leggings",
|
||||||
"item.fantasysmp.witherite_boots": "Witherite Boots"
|
"item.fantasysmp.witherite_boots": "Witherite Boots",
|
||||||
|
"item.fantasysmp.witherite_axe": "Witherite Axe",
|
||||||
|
"item.fantasysmp.witherite_shield": "Witherite Shield",
|
||||||
|
"item.fantasysmp.dragon_sword": "Dragon Sword",
|
||||||
|
"item.fantasysmp.dragon_helmet": "Dragon Helmet",
|
||||||
|
"item.fantasysmp.dragon_chestplate": "Dragon Chestplate",
|
||||||
|
"item.fantasysmp.dragon_leggings": "Dragon Leggings",
|
||||||
|
"item.fantasysmp.dragon_boots": "Dragon Boots"
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/netherite_ingot",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "fantasysmp:item/dragon_scale"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/netherite_ingot",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "fantasysmp:item/dragonite_ingot"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"parent": "item/netherite_axe",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "fantasysmp:item/witherite_axe"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"gui_light": "front",
|
||||||
|
"textures": {
|
||||||
|
"particle": "block/dark_oak_planks"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 0, 90, 0 ],
|
||||||
|
"translation": [ 10, 6, -4 ],
|
||||||
|
"scale": [ 1, 1, 1 ]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [ 0, 90, 0 ],
|
||||||
|
"translation": [ 10, 6, 12 ],
|
||||||
|
"scale": [ 1, 1, 1 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 180, 5 ],
|
||||||
|
"translation": [ -10, 1.75, -10 ],
|
||||||
|
"scale": [ 1.25, 1.25, 1.25 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 180, 5 ],
|
||||||
|
"translation": [ 10, 0, -10 ],
|
||||||
|
"scale": [ 1.25, 1.25, 1.25 ]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 15, -25, -5 ],
|
||||||
|
"translation": [ 2, 3, 0 ],
|
||||||
|
"scale": [ 0.65, 0.65, 0.65 ]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [ 0, 180, 0 ],
|
||||||
|
"translation": [ -4.5, 4.5, -5],
|
||||||
|
"scale":[ 0.55, 0.55, 0.55]
|
||||||
|
},
|
||||||
|
"on_shelf": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 11, 18.5, 8.7 ],
|
||||||
|
"scale": [ 1.4, 1.4, 1.4 ]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"rotation": [ 0, 0, 0 ],
|
||||||
|
"translation": [ 2, 4, 2],
|
||||||
|
"scale":[ 0.25, 0.25, 0.25]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"gui_light": "front",
|
||||||
|
"textures": {
|
||||||
|
"particle": "block/dark_oak_planks"
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [ 45, 155, 0 ],
|
||||||
|
"translation": [ -3.49, 11, -2 ],
|
||||||
|
"scale": [ 1, 1, 1 ]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [ 45, 155, 0 ],
|
||||||
|
"translation": [ 11.51, 7, 2.5 ],
|
||||||
|
"scale": [ 1, 1, 1 ]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [ 0, 180, -5 ],
|
||||||
|
"translation": [ -15, 3.25, -11 ],
|
||||||
|
"scale": [ 1.25, 1.25, 1.25 ]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [ 0, 180, -5 ],
|
||||||
|
"translation": [ 5, 5, -11 ],
|
||||||
|
"scale": [ 1.25, 1.25, 1.25 ]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [ 15, -25, -5 ],
|
||||||
|
"translation": [ 2, 3, 0 ],
|
||||||
|
"scale": [ 0.65, 0.65, 0.65 ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 411 B |
Binary file not shown.
|
After Width: | Height: | Size: 589 B |
Binary file not shown.
|
After Width: | Height: | Size: 451 B |
Binary file not shown.
|
After Width: | Height: | Size: 167 B |
Binary file not shown.
|
After Width: | Height: | Size: 208 B |
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:crying_obsidian",
|
||||||
|
"base": "minecraft:netherite_boots",
|
||||||
|
"addition": "fantasysmp:dragonite_ingot",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:dragon_boots"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:elytra",
|
||||||
|
"base": "minecraft:netherite_chestplate",
|
||||||
|
"addition": "fantasysmp:dragonite_ingot",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:dragon_chestplate"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:dragon_head",
|
||||||
|
"base": "minecraft:netherite_helmet",
|
||||||
|
"addition": "fantasysmp:dragonite_ingot",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:dragon_helmet"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:crying_obsidian",
|
||||||
|
"base": "minecraft:netherite_leggings",
|
||||||
|
"addition": "fantasysmp:dragonite_ingot",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:dragon_leggings"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:end_crystal",
|
||||||
|
"base": "minecraft:netherite_sword",
|
||||||
|
"addition": "fantasysmp:dragonite_ingot",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:dragon_sword"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:crafting_shaped",
|
||||||
|
"ingredients": [
|
||||||
|
"minecraft:dragon_breath",
|
||||||
|
"fantasysmp:dragon_scale"
|
||||||
|
],
|
||||||
|
"pattern": [
|
||||||
|
"SBS",
|
||||||
|
"CXC",
|
||||||
|
"SBS"
|
||||||
|
],
|
||||||
|
"key": {
|
||||||
|
"S": [
|
||||||
|
"minecraft:shulker_shell"
|
||||||
|
],
|
||||||
|
"B": [
|
||||||
|
"minecraft:dragon_breath"
|
||||||
|
],
|
||||||
|
"C": [
|
||||||
|
"minecraft:chorus_fruit"
|
||||||
|
],
|
||||||
|
"X": [
|
||||||
|
"fantasysmp:dragon_scale"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result": "fantasysmp:dragonite_ingot"
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:netherite_upgrade_smithing_template",
|
||||||
|
"base": "minecraft:netherite_axe",
|
||||||
|
"addition": "minecraft:wither_skeleton_skull",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:witherite_axe"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:smithing_transform",
|
||||||
|
"template": "minecraft:netherite_upgrade_smithing_template",
|
||||||
|
"base": "minecraft:shield",
|
||||||
|
"addition": "minecraft:wither_skeleton_skull",
|
||||||
|
"result": {
|
||||||
|
"id": "fantasysmp:witherite_shield"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"type": "minecraft:entity",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "fantasysmp:dragon_scale",
|
||||||
|
"functions": [
|
||||||
|
{
|
||||||
|
"function": "minecraft:set_count",
|
||||||
|
"count": {
|
||||||
|
"type": "minecraft:uniform",
|
||||||
|
"min": 1,
|
||||||
|
"max": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user