Skip to content

Commit

Permalink
Fixed a item render issue and when throwing the trident from the offhand
Browse files Browse the repository at this point in the history
  • Loading branch information
OroArmor committed Aug 14, 2020
1 parent 403c3b6 commit b36a037
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 7 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx2G
loader_version=0.9.1+build.205

# Mod Properties
mod_version = beta-1.9
mod_version = beta-1.9.1
maven_group = com.oroarmor
archives_base_name = netherite-plus-mod

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.oroarmor.netherite_plus.mixin;

import java.util.Iterator;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -17,6 +19,7 @@
import net.minecraft.entity.EntityType;
import net.minecraft.entity.projectile.PersistentProjectileEntity;
import net.minecraft.entity.projectile.TridentEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.network.NetworkThreadUtils;
import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket;
import net.minecraft.util.thread.ThreadExecutor;
Expand Down Expand Up @@ -46,8 +49,13 @@ public void onEntitySpawnMixin(EntitySpawnS2CPacket packet, CallbackInfo info) {
entity16 = world.getEntityById(packet.getEntityData());

if (entity16 instanceof ClientPlayerEntity) {
if (((ClientPlayerEntity) entity16).getItemsHand().iterator().next()
.getItem() == NetheritePlusItems.NETHERITE_TRIDENT) {

boolean hasNetheriteTrident = false;
Iterator<ItemStack> items = ((ClientPlayerEntity) entity16).getItemsHand().iterator();
while (items.hasNext()) {
hasNetheriteTrident |= items.next().getItem() == NetheritePlusItems.NETHERITE_TRIDENT;
}
if (hasNetheriteTrident) {
entity15 = new NetheriteTridentEntity(world, d, e, f);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,71 @@
package com.oroarmor.netherite_plus.mixin.render;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import com.oroarmor.netherite_plus.item.NetheritePlusItems;
import com.oroarmor.util.item.UniqueItemRegistry;

import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.RenderLayers;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.item.BuiltinModelItemRenderer;
import net.minecraft.client.render.item.ItemModels;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.ModelIdentifier;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

@Mixin(ItemRenderer.class)
public class ItemRendererMixin {
public abstract class ItemRendererMixin {

@Shadow
private ItemModels models;

@Inject(method = "renderItem", at = @At(value = "HEAD"), cancellable = true)
public void renderItem(ItemStack stack, ModelTransformation.Mode renderMode, boolean leftHanded,
MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, BakedModel model,
CallbackInfo info) {
if (!stack.isEmpty() && stack.getItem() == NetheritePlusItems.NETHERITE_TRIDENT) {
matrices.push();
boolean bl = renderMode == ModelTransformation.Mode.GUI || renderMode == ModelTransformation.Mode.GROUND
|| renderMode == ModelTransformation.Mode.FIXED;
if (stack.getItem() == NetheritePlusItems.NETHERITE_TRIDENT && bl) {
model = this.models.getModelManager()
.getModel(new ModelIdentifier("netherite_plus:netherite_trident#inventory"));
}

model.getTransformation().getTransformation(renderMode).apply(leftHanded, matrices);
matrices.translate(-0.5D, -0.5D, -0.5D);
if (model.isBuiltin() || stack.getItem() == NetheritePlusItems.NETHERITE_TRIDENT && !bl) {
BuiltinModelItemRenderer.INSTANCE.render(stack, renderMode, matrices, vertexConsumers, light, overlay);
} else {
RenderLayer renderLayer = RenderLayers.getItemLayer(stack, true);
VertexConsumer vertexConsumer4;
vertexConsumer4 = ItemRenderer.getDirectGlintVertexConsumer(vertexConsumers, renderLayer, true,
stack.hasGlint());

this.renderBakedItemModel(model, stack, light, overlay, matrices, vertexConsumer4);
}

matrices.pop();
info.cancel();
}

@Redirect(method = "renderItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;"))
public Item renderItem(ItemStack stack) {
return UniqueItemRegistry.TRIDENT.getDefaultItem(stack.getItem());
}

@Shadow
protected abstract void renderBakedItemModel(BakedModel model, ItemStack stack, int light, int overlay,
MatrixStack matrices, VertexConsumer vertexConsumer4);

@Redirect(method = "getHeldItemModel", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getItem()Lnet/minecraft/item/Item;"))
public Item getHeldItemModel(ItemStack stack) {
return UniqueItemRegistry.TRIDENT.getDefaultItem(stack.getItem());
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.

0 comments on commit b36a037

Please sign in to comment.