Skip to content

Commit

Permalink
fix #175
Browse files Browse the repository at this point in the history
  • Loading branch information
MoriyaShiine committed Apr 19, 2024
1 parent ef800f2 commit 4971ed1
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package moriyashiine.enchancement.mixin.bury;

import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import moriyashiine.enchancement.common.init.ModEntityComponents;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.mob.ShulkerEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;

@Mixin({ShulkerEntity.ShootBulletGoal.class, ShulkerEntity.PeekGoal.class})
public class ShulkerEntityGoalMixin {
@Unique
private ShulkerEntity cachedEntity = null;

@WrapOperation(method = "canStart", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/mob/ShulkerEntity;getTarget()Lnet/minecraft/entity/LivingEntity;"))
private LivingEntity enchancement$bury(ShulkerEntity instance, Operation<LivingEntity> original) {
cachedEntity = instance;
return original.call(instance);
}

@ModifyReturnValue(method = "canStart", at = @At("RETURN"))
private boolean enchancement$bury(boolean original) {
if (original && cachedEntity != null && ModEntityComponents.BURY.get(cachedEntity).getBuryPos() != null) {
cachedEntity = null;
return false;
}
return original;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* All Rights Reserved (c) MoriyaShiine
*/

package moriyashiine.enchancement.mixin.bury;

import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import moriyashiine.enchancement.common.init.ModEntityComponents;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.ShulkerEntity;
import net.minecraft.util.math.Box;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(ShulkerEntity.class)
public abstract class ShulkerEntityMixin extends Entity {
public ShulkerEntityMixin(EntityType<?> type, World world) {
super(type, world);
}

@ModifyReturnValue(method = "calculateBoundingBox()Lnet/minecraft/util/math/Box;", at = @At("RETURN"))
private Box enchancement$bury(Box original) {
if (age > 0 && ModEntityComponents.BURY.get(this).getBuryPos() != null) {
return original.shrink(0, 0.5, 0);
}
return original;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package moriyashiine.enchancement.mixin.bury.client;

import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import moriyashiine.enchancement.common.init.ModEntityComponents;
import net.minecraft.client.render.entity.ShulkerEntityRenderer;
import net.minecraft.entity.mob.ShulkerEntity;
import net.minecraft.util.math.Vec3d;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(ShulkerEntityRenderer.class)
public class ShulkerEntityRendererMixin {
@ModifyReturnValue(method = "getPositionOffset(Lnet/minecraft/entity/mob/ShulkerEntity;F)Lnet/minecraft/util/math/Vec3d;", at = @At("RETURN"))
private Vec3d enchancement$bury(Vec3d original, ShulkerEntity shulkerEntity) {
if (ModEntityComponents.BURY.get(shulkerEntity).getBuryPos() != null) {
return original.add(0, -0.5, 0);
}
return original;
}
}
2 changes: 2 additions & 0 deletions src/main/resources/enchancement.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ accessible class net/minecraft/enchantment/EnchantmentHelper$Consumer
accessible class net/minecraft/item/ItemGroup$EntriesImpl
accessible class net/minecraft/village/TradeOffers$EnchantBookFactory
accessible class net/minecraft/client/texture/ResourceTexture$TextureData
accessible class net/minecraft/entity/mob/ShulkerEntity$ShootBulletGoal
accessible class net/minecraft/entity/mob/ShulkerEntity$PeekGoal
accessible field net/minecraft/entity/projectile/FishingBobberEntity luckOfTheSeaLevel I
mutable field net/minecraft/entity/projectile/FishingBobberEntity luckOfTheSeaLevel I
accessible field net/minecraft/entity/projectile/FishingBobberEntity lureLevel I
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/enchancement.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
"buoy.PowderSnowBlockMixin",
"bury.AbstractBlockMixin",
"bury.EntityMixin",
"bury.ShulkerEntityGoalMixin",
"bury.ShulkerEntityMixin",
"chaos.ArrowEntityMixin",
"chaos.ArrowItemMixin",
"chaos.SpectralArrowEntityMixin",
Expand Down Expand Up @@ -160,6 +162,7 @@
"brimstone.client.InGameHudMixin",
"brimstone.client.ModelLoaderMixin",
"bury.client.KeyboardInputMixin",
"bury.client.ShulkerEntityRendererMixin",
"dash.client.TranslatableTextContentMixin",
"disarm.client.MinecraftClientMixin",
"frostbite.client.LivingEntityRendererMixin",
Expand Down

0 comments on commit 4971ed1

Please sign in to comment.