Skip to content

Commit af85498

Browse files
committed
feat:some raid mixins
1 parent a3e8f83 commit af85498

6 files changed

Lines changed: 78 additions & 85 deletions

File tree

nms-patches/net/minecraft/world/entity/raid/EntityRaider.patch

Lines changed: 0 additions & 58 deletions
This file was deleted.

nms-patches/net/minecraft/world/entity/raid/PersistentRaid.patch

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.teneted.neotenet.mixin.world.entity.raid;
2+
3+
import net.minecraft.world.entity.item.ItemEntity;
4+
import net.minecraft.world.entity.raid.Raider;
5+
import org.bukkit.event.entity.EntityRemoveEvent;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
@Mixin(Raider.class)
12+
public class MixinRaider {
13+
14+
@Inject(method = "pickUpItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/item/ItemEntity;discard()V"))
15+
private void neotenet$discardCause(ItemEntity p_37866_, CallbackInfo ci) {
16+
p_37866_.pushRemoveCause(EntityRemoveEvent.Cause.PICKUP);
17+
}
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.teneted.neotenet.mixin.world.entity.raid;
2+
3+
import com.llamalad7.mixinextras.sugar.Local;
4+
import net.minecraft.world.entity.raid.Raider;
5+
import org.bukkit.event.entity.EntityTargetEvent;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
@Mixin(targets = "net.minecraft.world.entity.raid.Raider.HoldGroundAttackGoal")
12+
public class MixinRaider_HoldGroundAttackGoal {
13+
14+
@Inject(method = "start", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/raid/Raider;setTarget(Lnet/minecraft/world/entity/LivingEntity;)V"))
15+
private void neotenet$pushTargetReason(CallbackInfo ci, @Local Raider raider) {
16+
raider.bridge$pushGoalTargetReason(EntityTargetEvent.TargetReason.FOLLOW_LEADER, true);
17+
}
18+
19+
@Inject(method = "stop", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/raid/Raider;setTarget(Lnet/minecraft/world/entity/LivingEntity;)V"))
20+
private void neotenet$pushTargetReason0(CallbackInfo ci, @Local Raider raider) {
21+
raider.bridge$pushGoalTargetReason(EntityTargetEvent.TargetReason.FOLLOW_LEADER, true);
22+
}
23+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.teneted.neotenet.mixin.world.entity.raid;
2+
3+
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
5+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
6+
import com.llamalad7.mixinextras.sugar.Cancellable;
7+
import com.llamalad7.mixinextras.sugar.Local;
8+
import net.minecraft.server.level.ServerPlayer;
9+
import net.minecraft.world.effect.MobEffects;
10+
import net.minecraft.world.entity.raid.Raid;
11+
import net.minecraft.world.entity.raid.Raids;
12+
import org.bukkit.craftbukkit.event.CraftEventFactory;
13+
import org.spongepowered.asm.mixin.Mixin;
14+
import org.spongepowered.asm.mixin.injection.At;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
16+
17+
import java.util.Map;
18+
19+
@Mixin(Raids.class)
20+
public class MixinRaids {
21+
22+
@WrapOperation(method = "createOrExtendRaid", at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"))
23+
private <K, V> Object neotenet$callRaidTriggerEvent(Map instance, K k, V v, Operation<Object> original, @Local Raid raid, @Local(argsOnly = true) ServerPlayer p_37964_, @Cancellable CallbackInfoReturnable<Raid> cir) {
24+
if (!CraftEventFactory.callRaidTriggerEvent(raid, p_37964_)) {
25+
p_37964_.removeEffect(MobEffects.RAID_OMEN);
26+
cir.setReturnValue(null);
27+
}
28+
if (raid.isStarted() || (raid.isInProgress() && raid.getRaidOmenLevel() < raid.getMaxRaidOmenLevel())) {
29+
return original.call(instance, k, v);
30+
} else {
31+
return null;
32+
}
33+
}
34+
}

src/main/resources/neotenet.mixins.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@
204204
"world.entity.npc.MixinWanderingTraderSpawner",
205205
"world.entity.player.MixinInventory",
206206
"world.entity.player.MixinPlayer",
207+
"world.entity.raid.MixinRaider",
208+
"world.entity.raid.MixinRaider_HoldGroundAttackGoal",
209+
"world.entity.raid.MixinRaids",
207210
"world.entity.vehicle.MixinBoat",
208211
"world.entity.vehicle.MixinChestBoat",
209212
"world.entity.vehicle.MixinMinecartTNT",

0 commit comments

Comments
 (0)