Add Elytra render for Elytra Upgrade
Temporarily stole a texture for it from https://www.reddit.com/user/lemoncake__ (http://imgur.com/a/sI5cv) until @Yulife can make a real one.
This commit is contained in:
parent
027787e3cd
commit
5d96b9d2bd
|
@ -0,0 +1,53 @@
|
|||
package WayofTime.bloodmagic.client.render;
|
||||
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
||||
import net.minecraft.client.entity.AbstractClientPlayer;
|
||||
import net.minecraft.client.model.ModelElytra;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||
import net.minecraft.client.renderer.entity.layers.LayerArmorBase;
|
||||
import net.minecraft.client.renderer.entity.layers.LayerRenderer;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class LayerBloodElytra implements LayerRenderer<AbstractClientPlayer> {
|
||||
|
||||
private static final ResourceLocation TEXTURE_BLOOD_ELYTRA = new ResourceLocation("bloodmagic", "textures/entities/bloodElytra.png");
|
||||
private final RenderPlayer renderPlayer;
|
||||
private final ModelElytra modelElytra = new ModelElytra();
|
||||
|
||||
public LayerBloodElytra(RenderPlayer renderPlayer) {
|
||||
this.renderPlayer = renderPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doRenderLayer(AbstractClientPlayer clientPlayer, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) {
|
||||
if (LivingArmour.hasFullSet(clientPlayer)) {
|
||||
ItemStack chestStack = clientPlayer.getItemStackFromSlot(EntityEquipmentSlot.CHEST);
|
||||
if (ItemLivingArmour.hasUpgrade(Constants.Mod.MODID + ".upgrade.elytra", chestStack)) {
|
||||
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.enableBlend();
|
||||
|
||||
renderPlayer.bindTexture(TEXTURE_BLOOD_ELYTRA);
|
||||
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translate(0.0F, 0.0F, 0.125F);
|
||||
modelElytra.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, clientPlayer);
|
||||
modelElytra.render(clientPlayer, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale);
|
||||
|
||||
if (chestStack.isItemEnchanted())
|
||||
LayerArmorBase.renderEnchantedGlint(this.renderPlayer, clientPlayer, this.modelElytra, limbSwing, limbSwingAmount, partialTicks, ageInTicks, netHeadYaw, headPitch, scale);
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldCombineTextures() {
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -477,6 +477,15 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP
|
|||
return null;
|
||||
}
|
||||
|
||||
public static boolean hasUpgrade(String id, ItemStack stack) {
|
||||
if (!armourMap.containsKey(stack))
|
||||
armourMap.put(stack, getLivingArmour(stack));
|
||||
|
||||
LivingArmour armour = armourMap.get(stack);
|
||||
|
||||
return armour.upgradeMap.containsKey(id);
|
||||
}
|
||||
|
||||
public void setIsEnabled(ItemStack stack, boolean bool)
|
||||
{
|
||||
NBTHelper.checkNBT(stack);
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package WayofTime.bloodmagic.proxy;
|
||||
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||
import WayofTime.bloodmagic.client.helper.ShaderHelper;
|
||||
import WayofTime.bloodmagic.client.render.RenderAlchemyArray;
|
||||
import WayofTime.bloodmagic.client.render.RenderAltar;
|
||||
import WayofTime.bloodmagic.client.render.RenderDemonCrucible;
|
||||
import WayofTime.bloodmagic.client.render.RenderItemRoutingNode;
|
||||
import WayofTime.bloodmagic.client.render.*;
|
||||
import WayofTime.bloodmagic.client.render.entity.BloodLightRenderFactory;
|
||||
import WayofTime.bloodmagic.client.render.entity.SentientArrowRenderFactory;
|
||||
import WayofTime.bloodmagic.client.render.entity.SoulSnareRenderFactory;
|
||||
|
@ -27,6 +25,8 @@ import net.minecraft.block.Block;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.client.renderer.color.IItemColor;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -36,9 +36,11 @@ import net.minecraftforge.client.model.obj.OBJLoader;
|
|||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
import net.minecraftforge.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.awt.*;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class ClientProxy extends CommonProxy
|
||||
{
|
||||
|
@ -98,6 +100,8 @@ public class ClientProxy extends CommonProxy
|
|||
return stack.hasTagCompound() && stack.getTagCompound().hasKey("bloody") ? new Color(0x8B191B).getRGB() : 16777215;
|
||||
}
|
||||
}, Items.BREAD);
|
||||
|
||||
addElytraLayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -136,4 +140,20 @@ public class ClientProxy extends CommonProxy
|
|||
ModelLoader.setCustomModelResourceLocation(item, variant.getLeft(), new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, "item/" + name), variant.getRight()));
|
||||
}
|
||||
}
|
||||
|
||||
private void addElytraLayer() {
|
||||
RenderManager renderManager = Minecraft.getMinecraft().getRenderManager();
|
||||
try {
|
||||
Field renderPlayerField = RenderManager.class.getDeclaredField("playerRenderer");
|
||||
renderPlayerField.setAccessible(true);
|
||||
Object renderPlayerObj = renderPlayerField.get(renderManager);
|
||||
if (renderPlayerObj instanceof RenderPlayer) {
|
||||
RenderPlayer renderPlayer = (RenderPlayer) renderPlayerObj;
|
||||
renderPlayer.addLayer(new LayerBloodElytra(renderPlayer));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
BloodMagic.instance.getLogger().error("Failed to set custom Elytra Layer for Elytra Living Armour Upgrade.");
|
||||
BloodMagic.instance.getLogger().error(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
Loading…
Reference in a new issue