mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-13 16:24:23 +01:00
Update mixin code
This commit is contained in:
parent
6d5728bdfa
commit
617cf1c882
7 changed files with 58 additions and 18 deletions
|
@ -64,7 +64,7 @@ public class PonyRenderManager {
|
||||||
private void addPlayerSkin(RenderManager manager, boolean slimArms, PlayerModels playerModel) {
|
private void addPlayerSkin(RenderManager manager, boolean slimArms, PlayerModels playerModel) {
|
||||||
RenderPonyPlayer renderer = playerModel.createRenderer(manager, slimArms);
|
RenderPonyPlayer renderer = playerModel.createRenderer(manager, slimArms);
|
||||||
|
|
||||||
((MixinRenderManager)manager).getSkinMap().put(playerModel.getId(slimArms), renderer);
|
((MixinRenderManager)manager).getMutableSkinMap().put(playerModel.getId(slimArms), renderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.minelittlepony.client.ducks;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.NativeImage;
|
||||||
|
|
||||||
|
public interface IBufferedTexture {
|
||||||
|
NativeImage getBufferedImage();
|
||||||
|
}
|
|
@ -17,18 +17,15 @@ import net.minecraft.item.ItemStack;
|
||||||
@Mixin(FirstPersonRenderer.class)
|
@Mixin(FirstPersonRenderer.class)
|
||||||
public class MixinFirstPersonRenderer {
|
public class MixinFirstPersonRenderer {
|
||||||
|
|
||||||
private static final String AbstractClientPlayer = "Lnet/minecraft/client/entity/AbstractClientPlayer;";
|
@Redirect(method = "renderItemInFirstPerson("
|
||||||
private static final String ItemStack = "Lnet/minecraft/item/ItemStack;";
|
+ "Lnet/minecraft/client/entity/AbstractClientPlayer;FF"
|
||||||
private static final String EnumHand = "Lnet/minecraft/util/EnumHand;";
|
+ "Lnet/minecraft/util/EnumHand;F"
|
||||||
private static final String EntityLivingBase = "Lnet/minecraft/entity/EntityLivingBase;";
|
+ "Lnet/minecraft/item/ItemStack;F)V",
|
||||||
private static final String TransformType = "Lnet/minecraft/client/renderer/block/ItemCameraTransforms$TransformType;";
|
|
||||||
|
|
||||||
// TODO: This has moved to mc.getFirstPersonRenderer()
|
|
||||||
//public void renderItemInFirstPerson(AbstractClientPlayer player, float p_187457_2_, float p_187457_3_, EnumHand hand, float p_187457_5_, ItemStack stack, float p_187457_7_)
|
|
||||||
//public void renderItemSide(EntityLivingBase entitylivingbaseIn, ItemStack heldStack, ItemCameraTransforms.TransformType transform, boolean leftHanded)
|
|
||||||
@Redirect(method = "renderItemInFirstPerson(" + AbstractClientPlayer + "FF" + EnumHand + "F" + ItemStack + "F)V",
|
|
||||||
at = @At(value = "INVOKE",
|
at = @At(value = "INVOKE",
|
||||||
target = "Lnet/minecraft/client/renderer/ItemRenderer;renderItemSide(" + EntityLivingBase + ItemStack + TransformType + "Z)V"))
|
target = "Lnet/minecraft/client/renderer/FirstPersonRenderer;renderItemSide("
|
||||||
|
+ "Lnet/minecraft/entity/EntityLivingBase;"
|
||||||
|
+ "Lnet/minecraft/item/ItemStack;"
|
||||||
|
+ "Lnet/minecraft/client/renderer/model/ItemCameraTransforms$TransformType;Z)V"))
|
||||||
private void redirectRenderItemSide(ItemRenderer self, EntityLivingBase entity, ItemStack stack, TransformType transform, boolean left) {
|
private void redirectRenderItemSide(ItemRenderer self, EntityLivingBase entity, ItemStack stack, TransformType transform, boolean left) {
|
||||||
PonyRenderManager.getInstance().getMagicRenderer().renderItemInFirstPerson(self, (AbstractClientPlayer)entity, stack, transform, left);
|
PonyRenderManager.getInstance().getMagicRenderer().renderItemInFirstPerson(self, (AbstractClientPlayer)entity, stack, transform, left);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||||
|
|
||||||
@Mixin(RenderManager.class)
|
@Mixin(RenderManager.class)
|
||||||
public interface MixinRenderManager {
|
public interface MixinRenderManager {
|
||||||
@Accessor
|
// There is a method to get it, but it's made mutable my Forge.
|
||||||
Map<String, RenderPlayer> getSkinMap();
|
@Accessor("skinMap")
|
||||||
|
Map<String, RenderPlayer> getMutableSkinMap();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.minelittlepony.client.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.ThreadDownloadImageData;
|
||||||
|
import net.minecraft.client.renderer.texture.NativeImage;
|
||||||
|
import net.minecraft.client.renderer.texture.SimpleTexture;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
|
||||||
|
import com.minelittlepony.client.ducks.IBufferedTexture;
|
||||||
|
|
||||||
|
@Mixin(ThreadDownloadImageData.class)
|
||||||
|
public abstract class MixinThreadDownloadImageData extends SimpleTexture implements IBufferedTexture {
|
||||||
|
|
||||||
|
MixinThreadDownloadImageData() {super(null);}
|
||||||
|
|
||||||
|
private NativeImage cachedImage;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NativeImage getBufferedImage() {
|
||||||
|
return cachedImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "setImage(Lnet/minecraft/client/renderer/texture/NativeImage;)V",
|
||||||
|
at = @At("HEAD"))
|
||||||
|
private void onSetImage(NativeImage nativeImageIn) {
|
||||||
|
cachedImage = nativeImageIn;
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,10 +3,9 @@ package com.minelittlepony.client.pony;
|
||||||
import com.google.common.base.MoreObjects;
|
import com.google.common.base.MoreObjects;
|
||||||
import com.minelittlepony.MineLittlePony;
|
import com.minelittlepony.MineLittlePony;
|
||||||
import com.minelittlepony.client.PonyRenderManager;
|
import com.minelittlepony.client.PonyRenderManager;
|
||||||
|
import com.minelittlepony.client.ducks.IBufferedTexture;
|
||||||
import com.minelittlepony.client.ducks.IRenderPony;
|
import com.minelittlepony.client.ducks.IRenderPony;
|
||||||
import com.minelittlepony.client.transform.PonyTransformation;
|
import com.minelittlepony.client.transform.PonyTransformation;
|
||||||
import com.minelittlepony.hdskins.resources.texture.DynamicTextureImage;
|
|
||||||
import com.minelittlepony.hdskins.resources.texture.IBufferedTexture;
|
|
||||||
import com.minelittlepony.hdskins.util.ProfileTextureUtil;
|
import com.minelittlepony.hdskins.util.ProfileTextureUtil;
|
||||||
import com.minelittlepony.pony.IPony;
|
import com.minelittlepony.pony.IPony;
|
||||||
import com.minelittlepony.pony.IPonyData;
|
import com.minelittlepony.pony.IPonyData;
|
||||||
|
@ -16,6 +15,7 @@ import com.minelittlepony.util.chron.Touchable;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||||
import net.minecraft.client.renderer.texture.ITextureObject;
|
import net.minecraft.client.renderer.texture.ITextureObject;
|
||||||
import net.minecraft.client.renderer.texture.MissingTextureSprite;
|
import net.minecraft.client.renderer.texture.MissingTextureSprite;
|
||||||
import net.minecraft.client.renderer.texture.NativeImage;
|
import net.minecraft.client.renderer.texture.NativeImage;
|
||||||
|
@ -65,7 +65,7 @@ public class Pony extends Touchable<Pony> implements IPony {
|
||||||
if (ponyTexture == null) {
|
if (ponyTexture == null) {
|
||||||
ponyTexture = ProfileTextureUtil.getDynamicBufferedImage(16, 16, MissingTextureSprite.getDynamicTexture());
|
ponyTexture = ProfileTextureUtil.getDynamicBufferedImage(16, 16, MissingTextureSprite.getDynamicTexture());
|
||||||
|
|
||||||
Minecraft.getInstance().getTextureManager().loadTexture(resource, new DynamicTextureImage(ponyTexture));
|
Minecraft.getInstance().getTextureManager().loadTexture(resource, new DynamicTexture(ponyTexture));
|
||||||
}
|
}
|
||||||
|
|
||||||
return checkSkin(ponyTexture);
|
return checkSkin(ponyTexture);
|
||||||
|
@ -105,6 +105,10 @@ public class Pony extends Touchable<Pony> implements IPony {
|
||||||
|
|
||||||
ITextureObject texture = Minecraft.getInstance().getTextureManager().getTexture(resource);
|
ITextureObject texture = Minecraft.getInstance().getTextureManager().getTexture(resource);
|
||||||
|
|
||||||
|
if (texture instanceof DynamicTexture) {
|
||||||
|
return ((DynamicTexture)texture).getTextureData();
|
||||||
|
}
|
||||||
|
|
||||||
if (texture instanceof IBufferedTexture) {
|
if (texture instanceof IBufferedTexture) {
|
||||||
return ((IBufferedTexture) texture).getBufferedImage();
|
return ((IBufferedTexture) texture).getBufferedImage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"MixinFirstPersonRenderer",
|
"MixinFirstPersonRenderer",
|
||||||
"MixinGlStateManager",
|
"MixinGlStateManager",
|
||||||
"MixinItemRenderer",
|
"MixinItemRenderer",
|
||||||
"MixinRenderManager"
|
"MixinRenderManager",
|
||||||
|
"MixinThreadDownloadImageData"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue