Androids no longer get hunger from "eating" raw food
This commit is contained in:
parent
7869d686f7
commit
faf43657fc
@ -12,7 +12,10 @@ import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.tags.TagKey
|
||||
import net.minecraft.world.Difficulty
|
||||
import net.minecraft.world.effect.MobEffect
|
||||
import net.minecraft.world.effect.MobEffectInstance
|
||||
import net.minecraft.world.effect.MobEffects
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.MobSpawnType
|
||||
import net.minecraft.world.entity.boss.wither.WitherBoss
|
||||
import net.minecraft.world.entity.monster.Phantom
|
||||
@ -1259,6 +1262,26 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* hooked into LivingEntity through coremod script
|
||||
*/
|
||||
@JvmStatic
|
||||
fun addEatEffectHook(iterator: Iterator<com.mojang.datafixers.util.Pair<MobEffectInstance, Float>>, entity: LivingEntity): Iterator<com.mojang.datafixers.util.Pair<MobEffectInstance, Float>> {
|
||||
if (entity !is Player) {
|
||||
return iterator
|
||||
}
|
||||
|
||||
val mattery = entity.matteryPlayer ?: return iterator
|
||||
|
||||
if (mattery.isAndroid) {
|
||||
return iterator.filter {
|
||||
it.first.effect != MobEffects.HUNGER
|
||||
}
|
||||
}
|
||||
|
||||
return iterator
|
||||
}
|
||||
|
||||
/**
|
||||
* this method is hooked through coremod transformer
|
||||
*/
|
||||
|
@ -599,6 +599,28 @@ function initializeCoreMod() {
|
||||
return node
|
||||
}),
|
||||
|
||||
'LivingEntity#addEatEffect patch for androids': method('net.minecraft.world.entity.LivingEntity.m_21063_(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/LivingEntity;)V', function(node) {
|
||||
for (var i = 0; i < node.instructions.size(); i++) {
|
||||
var instr = node.instructions.get(i)
|
||||
|
||||
if (instr.getOpcode() == opcodesRemapped.invokeinterface && instr.name == "iterator") {
|
||||
putInstructions(node, node.instructions.get(i), [
|
||||
new VarInsnNode(opcodesRemapped.aload, 0),
|
||||
new MethodInsnNode(
|
||||
opcodesRemapped.invokestatic,
|
||||
'ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability',
|
||||
'addEatEffectHook',
|
||||
'(Ljava/util/Iterator;Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/Iterator;'
|
||||
),
|
||||
])
|
||||
|
||||
return node
|
||||
}
|
||||
}
|
||||
|
||||
return node
|
||||
}),
|
||||
|
||||
'Inventory#dropAll': injectAtTail(
|
||||
'net.minecraft.world.entity.player.Inventory.m_36071_()V',
|
||||
[
|
||||
|
Loading…
Reference in New Issue
Block a user