Skip to content

Commit

Permalink
Add StuckArrowDisplay
Browse files Browse the repository at this point in the history
  • Loading branch information
FirstMegaGame4 committed Sep 23, 2023
1 parent 634de8d commit 5b06910
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.mmodding.mmodding_lib.library.entities.projectiles;

import net.minecraft.entity.projectile.ArrowEntity;
import net.minecraft.world.World;

public interface StuckArrowDisplay<T extends ArrowEntity> {


T getArrowInstance(World world, double x, double y, double z);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.mmodding.mmodding_lib.mixin.injectors;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.mmodding.mmodding_lib.library.items.CustomBowItem;
import com.mmodding.mmodding_lib.library.items.settings.AdvancedItemSettings;
import com.mmodding.mmodding_lib.library.items.settings.ItemDropped;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -19,4 +23,9 @@ private void dropItem(ItemStack stack, boolean throwRandomly, boolean retainOwne
ItemDropped itemDropped = AdvancedItemSettings.ITEM_DROPPED.get(stack.getItem());
if (itemDropped != null) itemDropped.apply(stack, this.getWorld(), (PlayerEntity) (Object) this, itemEntity);
}

@ModifyExpressionValue(method = "getArrowType", at = @At(value = "FIELD", target = "Lnet/minecraft/item/Items;ARROW:Lnet/minecraft/item/Item;", opcode = Opcodes.GETSTATIC))
private Item getArrowType(Item original, ItemStack stack) {
return stack.getItem() instanceof CustomBowItem customBowItem ? customBowItem.getDefaultArrowItem() : original;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.mmodding.mmodding_lib.mixin.injectors.client;

import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.mmodding.mmodding_lib.library.entities.projectiles.StuckArrowDisplay;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.feature.StuckArrowsFeatureRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.entity.projectile.ArrowEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(StuckArrowsFeatureRenderer.class)
public class StuckArrowsFeatureRendererMixin {

@ModifyExpressionValue(method = "renderObject", at = @At(value = "NEW", target = "(Lnet/minecraft/world/World;DDD)Lnet/minecraft/entity/projectile/ArrowEntity;"))
private ArrowEntity renderObject(ArrowEntity original, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, Entity entity, float directionX, float directionY, float directionZ, float tickDelta) {
return entity instanceof StuckArrowDisplay<?> display ? display.getArrowInstance(entity.world, entity.getX(), entity.getY(), entity.getZ()) : original;
}
}
1 change: 1 addition & 0 deletions src/main/resources/mmodding_lib.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
"injectors.client.InGameHudMixin",
"injectors.client.ItemRenderContextMixin",
"injectors.client.ItemRendererMixin",
"injectors.client.StuckArrowsFeatureRendererMixin",
"injectors.client.TridentEntityRendererMixin",
"injectors.client.WorldRendererMixin"
],
Expand Down

0 comments on commit 5b06910

Please sign in to comment.