Compare commits

..

No commits in common. "df7465a59f260f80840107759bc40e66a3a7f107" and "67ea3b977b35fdbd3330f487459c3af9a08fd68b" have entirely different histories.

4 changed files with 21 additions and 33 deletions

View File

@ -34,12 +34,7 @@ fun addEquipmentTags(tagsProvider: TagsProvider) {
.add(MItems.TRITANIUM_BOOTS) .add(MItems.TRITANIUM_BOOTS)
.add(MItems.SIMPLE_TRITANIUM_BOOTS) .add(MItems.SIMPLE_TRITANIUM_BOOTS)
tagsProvider.items.Appender(ItemTags.SWORDS) tagsProvider.items.Appender(ItemTags.SWORDS).add(MItems.TRITANIUM_SWORD).add(MItems.ENERGY_SWORD)
.add(MItems.TRITANIUM_SWORD)
.add(MItems.ENERGY_SWORD)
.add(MItems.FALLING_SUN)
.add(MItems.WITHERED_STEEL_SWORD)
tagsProvider.items.Appender(ItemTags.AXES).add(MItems.TRITANIUM_AXE) tagsProvider.items.Appender(ItemTags.AXES).add(MItems.TRITANIUM_AXE)
tagsProvider.items.Appender(ItemTags.PICKAXES).add(MItems.TRITANIUM_PICKAXE) tagsProvider.items.Appender(ItemTags.PICKAXES).add(MItems.TRITANIUM_PICKAXE)
tagsProvider.items.Appender(ItemTags.SHOVELS).add(MItems.TRITANIUM_SHOVEL) tagsProvider.items.Appender(ItemTags.SHOVELS).add(MItems.TRITANIUM_SHOVEL)

View File

@ -76,12 +76,4 @@ object ServerConfig : AbstractConfig("misc") {
builder.pop() builder.pop()
} }
} }
val WITHER_SKELETON_HELMET_CHANCE: Double by builder
.comment("Chance of Wither Skeleton spawning with Netherite Helmet AND Withered Steel sword")
.defineInRange("WITHER_SKELETON_HELMET_CHANCE", 0.1, 0.0, 1.0)
val WITHER_SKELETON_SWORD_CHANCE: Double by builder
.comment("Chance of Wither Skeleton spawning with Withered Steel sword")
.defineInRange("WITHER_SKELETON_HELMET_CHANCE", 0.24, 0.0, 1.0)
} }

View File

@ -6,28 +6,24 @@ import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items import net.minecraft.world.item.Items
import net.neoforged.bus.api.SubscribeEvent import net.neoforged.bus.api.SubscribeEvent
import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent
import ru.dbotthepony.mc.otm.config.ServerConfig
import ru.dbotthepony.mc.otm.core.otmRandom
import ru.dbotthepony.mc.otm.registry.game.MItems import ru.dbotthepony.mc.otm.registry.game.MItems
object WitheredSkeletonSpawnHandler { object WitheredSkeletonSpawnHandler {
@SubscribeEvent @SubscribeEvent
fun onEntityJoin(event: EntityJoinLevelEvent) { fun onEntityJoin(event: EntityJoinLevelEvent) {
val entity = event.entity val entity = event.entity
if (entity is WitherSkeleton){
if (entity is WitherSkeleton) { val giveHelmet = entity.random.nextFloat() < 0.1f
val giveHelmet = event.level.otmRandom.nextFloat() < ServerConfig.WITHER_SKELETON_HELMET_CHANCE val giveSword = entity.random.nextFloat() < 0.24f
val giveSword = event.level.otmRandom.nextFloat() < ServerConfig.WITHER_SKELETON_SWORD_CHANCE
if (giveHelmet) { if (giveHelmet) {
if (!entity.hasItemInSlot(EquipmentSlot.HEAD)) entity.setItemSlot(EquipmentSlot.HEAD, ItemStack(Items.NETHERITE_HELMET))
entity.setItemSlot(EquipmentSlot.HEAD, ItemStack(Items.NETHERITE_HELMET)) entity.setItemSlot(EquipmentSlot.MAINHAND, ItemStack(MItems.WITHERED_STEEL_SWORD))
} } else if (giveSword) {
entity.setItemSlot(EquipmentSlot.MAINHAND, ItemStack(MItems.WITHERED_STEEL_SWORD))
if (giveSword || giveHelmet) {
if (!entity.hasItemInSlot(EquipmentSlot.MAINHAND) || entity.getItemBySlot(EquipmentSlot.MAINHAND).item == Items.STONE_SWORD)
entity.setItemSlot(EquipmentSlot.MAINHAND, ItemStack(MItems.WITHERED_STEEL_SWORD))
} }
} }
} }

View File

@ -13,19 +13,23 @@ import net.minecraft.world.item.Tiers
import net.minecraft.world.item.component.ItemAttributeModifiers import net.minecraft.world.item.component.ItemAttributeModifiers
import ru.dbotthepony.mc.otm.registry.game.MItems import ru.dbotthepony.mc.otm.registry.game.MItems
class WitheredSteelSwordItem(properties: Properties) : SwordItem(Tiers.IRON, properties) { class WitheredSteelSwordItem(properties: Item.Properties) : SwordItem(Tiers.IRON, properties){
private val attributes: ItemAttributeModifiers private val attributes: ItemAttributeModifiers
init { init {
val builder = ItemAttributeModifiers.builder() 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_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) builder.add(Attributes.ATTACK_SPEED, AttributeModifier(BASE_ATTACK_SPEED_ID, -2.4, AttributeModifier.Operation.ADD_VALUE), EquipmentSlotGroup.MAINHAND)
attributes = builder.build() attributes = builder.build()
} }
override fun isEnchantable(stack: ItemStack): Boolean { override fun getMaxDamage(stack: ItemStack): Int {
return stack.count == 1 return 420
}
override fun isEnchantable(p_41456_: ItemStack): Boolean {
return p_41456_.count == 1
} }
override fun getEnchantmentValue(stack: ItemStack): Int { override fun getEnchantmentValue(stack: ItemStack): Int {
@ -37,12 +41,13 @@ class WitheredSteelSwordItem(properties: Properties) : SwordItem(Tiers.IRON, pro
} }
override fun hurtEnemy(stack: ItemStack, target: LivingEntity, attacker: LivingEntity): Boolean { override fun hurtEnemy(stack: ItemStack, target: LivingEntity, attacker: LivingEntity): Boolean {
val status = super.hurtEnemy(stack, target, attacker) target.addEffect(MobEffectInstance(MobEffects.WITHER, 100, 0))
if (status) target.addEffect(MobEffectInstance(MobEffects.WITHER, 100, 0)) return super.hurtEnemy(stack, target, attacker)
return status
} }
override fun getDefaultAttributeModifiers(stack: ItemStack): ItemAttributeModifiers { override fun getDefaultAttributeModifiers(stack: ItemStack): ItemAttributeModifiers {
return attributes return attributes
} }
} }