Merge pull request #53 from c0508383/master

NPC Skin Changes
This commit is contained in:
Luis C.M authored and GitHub committed 2022-05-28 14:18:51 -05:00
commit 3b6668ea15
13 files changed
+106 -64

No files matched your search

+1 -1
View File
@@ -46,6 +46,7 @@ public class DataDisplay {
public int showName = 0;
public int modelType = 0;
public boolean x64texture = false;
public boolean disableLivingAnimation = false;
@@ -184,7 +185,6 @@ public class DataDisplay {
if(prevSkinType != skinType || !texture.equals(prevTexture))
npc.textureLocation = null;
npc.textureGlowLocation = null;
npc.textureCloakLocation = null;
npc.updateHitbox();
}
@@ -90,7 +90,6 @@ public class EntityUtil {
EntityNPCInterface target = (EntityNPCInterface) entity;
target.textureLocation = npc.textureLocation;
target.textureGlowLocation = npc.textureGlowLocation;
target.textureCloakLocation = npc.textureCloakLocation;
target.display = npc.display;
target.inventory = npc.inventory;
@@ -77,7 +77,7 @@ public class GuiNpcTextureOverlays extends GuiNpcSelectionInterface{
public void elementClicked(){
if(dataTextures.contains(slot.selected) && slot.selected != null){
//npc.display.glowTexture = assets.getAsset(slot.selected);
npc.textureGlowLocation = null;
//npc.textureGlowLocation = null;
npc.display.skinOverlayData.overlayList.put(0,new SkinOverlay(
assets.getAsset(slot.selected), true, 1.0F, 1.0F, 0.0F, 0.0F,
@@ -129,12 +129,14 @@ public class GuiNpcDisplay extends GuiNPCInterface2 implements ITextfieldListene
display.cloakTexture = textfield.getText();
}
else if(textfield.id == 9){
npc.textureGlowLocation = null;
//npc.textureGlowLocation = null;
//display.glowTexture = textfield.getText();
npc.display.skinOverlayData.overlayList.put(0,new SkinOverlay(
textfield.getText(), true, 1.0F, 1.0F, 0.0F, 0.0F,
1.0F, 1.0F, 0.0F, 0.0F, 0.0F
));
if (!textfield.getText().isEmpty()) {
npc.display.skinOverlayData.overlayList.put(0, new SkinOverlay(
textfield.getText(), true, 1.0F, 1.0F, 0.0F, 0.0F,
1.0F, 1.0F, 0.0F, 0.0F, 0.0F
));
}
}
else if(textfield.id == 11){
display.title = textfield.getText();
@@ -110,25 +110,25 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
addButton(new GuiNpcButton(7, guiLeft + 50, y += 22, 50, 20, "selectServer.edit"));
addLabel(new GuiNpcLabel(4, "Legs", guiLeft, y + 5, 0xFFFFFF));
addButton(new GuiNpcButton(250, guiLeft + 50, y += 22, 50, 20, new String[]{"Default","Steve64","Alex"}, this.npc.display.modelType));
addButton(new GuiNpcButton(250, guiLeft + 50, y += 22, 50, 20, new String[]{"Steve","Alex"}, this.npc.display.modelType/2));
addLabel(new GuiNpcLabel(250, "Model", guiLeft, y + 5, 0xFFFFFF));
addButton(new GuiNpcButton(44, guiLeft + 310, guiTop + 14, 80, 20, "Save Model"));
addButton(new GuiNpcButton(45, guiLeft + 310, guiTop + 36, 80, 20, "Load Model"));
}
private void showPixelmonMenu(EntityLivingBase entity) {
GuiCustomScroll scroll = new GuiCustomScroll(this, 0);
scroll.setSize(120, 200);
scroll.guiLeft = guiLeft;
scroll.guiTop = guiTop + 20;
addScroll(scroll);
scroll.setList(PixelmonHelper.getPixelmonList());
scroll.setSelected(PixelmonHelper.getName(entity));
Minecraft.getMinecraft().thePlayer.sendChatMessage(PixelmonHelper.getName(entity));
}
@@ -137,7 +137,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
if(entity instanceof EntityNPCInterface)
return;
int y = guiTop + 20;
NBTTagCompound compound = getExtras(entity);
Set<String> keys = compound.func_150296_c();
int i = 0;
@@ -159,7 +159,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
i++;
addLabel(new GuiNpcLabel(100 + i, name, guiLeft, y + 5 + i * 22, 0xFFFFFF));
addButton(new GuiNpcButton(100 + i, guiLeft + 80, y + i * 22, 50, 20, new String[]{"gui.no","gui.yes"}, b));
mapped.put(i, name);
}
}
@@ -169,7 +169,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
Method method = entity.getClass().getMethod("getBreedID");
breed = (Integer) method.invoke(entity);
} catch (Exception e) {
}
i++;
addLabel(new GuiNpcLabel(201, "Breed", guiLeft, y + 5 + i * 22, 0xFFFFFF));
@@ -186,18 +186,18 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
private NBTTagCompound getExtras(EntityLivingBase entity) {
NBTTagCompound fake = new NBTTagCompound();
new EntityFakeLiving(entity.worldObj).writeEntityToNBT(fake);
NBTTagCompound compound = new NBTTagCompound();
try{
entity.writeEntityToNBT(compound);
}
catch(Exception e){
}
Set<String> keys = fake.func_150296_c();
for(String name : keys)
compound.removeTag(name);
return compound;
}
@@ -221,7 +221,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
}
else{
playerdata.setEntityClass(data.get(list.get(index)));
EntityLivingBase entity = playerdata.getEntity(npc);
if(entity != null){
RendererLivingEntity render = (RendererLivingEntity) RenderManager.instance.getEntityRenderObject(entity);
@@ -231,7 +231,6 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
//npc.display.glowTexture = "";
npc.display.skinOverlayData.overlayList.remove(0);
npc.textureLocation = null;
npc.textureGlowLocation = null;
npc.updateHitbox();
}
catch(Exception ex){
@@ -247,10 +246,10 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
playerdata.setEntityClass(data.get(list.get(index)));
updateTexture();
initGui();
}
if(button.id == 1){
this.mc.displayGuiScreen(new GuiEntitySelection(this, playerdata, npc));
}
@@ -271,21 +270,18 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
// New Button for Changing Models
// URL Swapper
if(button.id == 250){
if(npc.display.modelType == 0){
npc.display.modelType = button.displayString.equals("Alex") ? 2 : 1;
if(npc.display.modelType == 1){
if (npc.display.skinType == 2){
npc.display.skinType = 3;
}
npc.display.modelType = 1;
}
else if(npc.display.modelType == 1){
npc.display.modelType = 2;
}
else {
} else {
if (npc.display.skinType == 3){
npc.display.skinType = 2;
}
npc.display.modelType = 0;
}
npc.textureLocation = null;
}
if(button.id == 8){
@@ -339,7 +335,6 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol
//npc.display.glowTexture = "";
npc.display.skinOverlayData.overlayList.remove(0);
npc.textureLocation = null;
npc.textureGlowLocation = null;
npc.updateHitbox();
}
catch(Exception ex){
@@ -129,7 +129,6 @@ public class GuiEntitySelection extends GuiNPCInterface
//npc.display.glowTexture = "";
npc.display.skinOverlayData.overlayList.remove(0);
npc.textureLocation = null;
npc.textureGlowLocation = null;
npc.updateHitbox();
}
catch(Exception ex){
@@ -194,7 +194,7 @@ public class ModelMPM extends ModelNPCMale{
}
// Steve 64x32
public ModelMPM(float par1) {
public ModelMPM(float par1, int alexArms) {
super(par1);
isArmor = par1 > 0;
@@ -219,14 +219,24 @@ public class ModelMPM extends ModelNPCMale{
this.bipedBody.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, par1);
this.bipedBody.setRotationPoint(0.0F, 0.0F + par2, 0.0F);
this.bipedRightArm = new ModelScaleRenderer(this, 40, 16);
this.bipedRightArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, par1);
this.bipedRightArm.setRotationPoint(-5.0F, 2.0F + par2, 0.0F);
if (alexArms == 0) {
this.bipedRightArm = new ModelScaleRenderer(this, 40, 16);
this.bipedRightArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, par1);
this.bipedRightArm.setRotationPoint(-5.0F, 2.0F + par2, 0.0F);
this.bipedLeftArm = new ModelScaleRenderer(this, 40, 16);
this.bipedLeftArm.mirror = true;
this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, par1);
this.bipedLeftArm.setRotationPoint(5.0F, 2.0F + par2, 0.0F);
this.bipedLeftArm = new ModelScaleRenderer(this, 40, 16);
this.bipedLeftArm.mirror = true;
this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, par1);
this.bipedLeftArm.setRotationPoint(5.0F, 2.0F + par2, 0.0F);
} else {
this.bipedRightArm = (new ModelScaleRenderer(this, 40, 16));
this.bipedRightArm.addBox(-2.0F, -2.0F, -2.0F, 3, 12, 4, par1);
this.bipedLeftArm = new ModelScaleRenderer(this, 40, 16);
this.bipedLeftArm.mirror = true;
this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 3, 12, 4, par1);
this.bipedLeftArm.setRotationPoint(5.0F, 2.5F + par2, 0.0F);
}
this.bipedRightLeg = new ModelScaleRenderer(this, 0, 16);
this.bipedRightLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, par1);
@@ -48,6 +48,9 @@ public class RenderCNPCPlayer extends RenderPlayer {
private boolean preRenderOverlay(EntityPlayer player, ResourceLocation overlayLocation, boolean glow,
float alpha, float size, float speedX, float speedY, float scaleX, float scaleY,
float offsetX, float offsetY, float offsetZ) {
if (overlayLocation.getResourcePath().isEmpty())
return false;
try {
this.bindTexture(overlayLocation);
} catch (Exception exception) {
@@ -112,6 +115,9 @@ public class RenderCNPCPlayer extends RenderPlayer {
{
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
if (overlayData.texture.isEmpty())
continue;
if (overlayData.location == null) {
overlayData.location = new ResourceLocation(overlayData.texture);
} else {
@@ -312,6 +318,9 @@ public class RenderCNPCPlayer extends RenderPlayer {
if (Client.skinOverlays.containsKey(player.getUniqueID())) {
for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) {
if (overlayData.texture.isEmpty())
continue;
if (overlayData.location == null) {
overlayData.location = new ResourceLocation(overlayData.texture);
} else {
@@ -29,7 +29,7 @@ public class RenderCustomNpc extends RenderNPCHumanMale{
// Default Renderer
public RenderCustomNpc() {
super(new ModelMPM(0), new ModelMPM(1), new ModelMPM(0.5f));
super(new ModelMPM(0,0), new ModelMPM(1,0), new ModelMPM(0.5f,0));
}
@Override
@@ -37,6 +37,10 @@ public class RenderNPCHumanMale extends RenderNPCInterface
protected final static ModelMPM steve64 = new ModelMPM(0, false);
protected final static ModelMPM alex = new ModelMPM(0, true);
protected final static ModelMPM alex32mainmodel = new ModelMPM(0,1);
protected final static ModelMPM alex32armorChest = new ModelMPM(1,1);
protected final static ModelMPM alex32armor = new ModelMPM(0.5F,1);
public RenderNPCHumanMale(ModelNPCMale mainmodel, ModelNPCMale armorChest, ModelNPCMale armor)
{
super(mainmodel, 0.5F);
@@ -115,13 +119,28 @@ public class RenderNPCHumanMale extends RenderNPCInterface
EntityCustomNpc test = (EntityCustomNpc) npc;
if(test.modelData.entityClass == null){
int modelVal = npc.display.modelType;
if(modelVal == 1){
if(modelVal == 1 && npc.display.x64texture){
this.mainModel = steve64;
this.modelBipedMain = steve64;
}
else if(modelVal == 2){
this.mainModel = alex;
this.modelBipedMain = alex;
if (npc.display.x64texture) {
this.mainModel = alex;
this.modelBipedMain = alex;
} else {
((EntityCustomNpc) npc).modelData.bodywear = 0;
((EntityCustomNpc) npc).modelData.armwear = 0;
((EntityCustomNpc) npc).modelData.legwear = 0;
this.mainModel = alex32mainmodel;
this.modelBipedMain = alex32mainmodel;
}
}
else if(modelVal == 3){
((EntityCustomNpc) npc).modelData.bodywear = 0;
((EntityCustomNpc) npc).modelData.armwear = 0;
((EntityCustomNpc) npc).modelData.legwear = 0;
this.mainModel = alex32mainmodel;
this.modelBipedMain = alex32mainmodel;
}
else{
((EntityCustomNpc) npc).modelData.bodywear = 0;
@@ -22,6 +22,7 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.boss.BossStatus;
import net.minecraft.util.ReportedException;
import net.minecraft.util.ResourceLocation;
import noppes.npcs.client.ImageDownloadAlt;
import noppes.npcs.client.model.ModelMPM;
@@ -221,6 +222,9 @@ public class RenderNPCInterface extends RenderLiving{
if (!npc.display.skinOverlayData.overlayList.isEmpty()) {
for (ISkinOverlay overlayData : npc.display.skinOverlayData.overlayList.values()) {
try {
if (overlayData.getTexture().isEmpty())
continue;
if (overlayData.getLocation() == null) {
overlayData.setLocation(new ResourceLocation(overlayData.getTexture()));
} else {
@@ -230,7 +234,12 @@ public class RenderNPCInterface extends RenderLiving{
}
}
this.bindTexture(overlayData.getLocation());
if (overlayData.getLocation().getResourcePath().isEmpty())
continue;
try {
this.bindTexture(overlayData.getLocation());
} catch (Exception e) { continue; }
// Overlay & Glow
GL11.glEnable(GL11.GL_BLEND);
@@ -340,13 +349,12 @@ public class RenderNPCInterface extends RenderLiving{
}
private ResourceLocation adjustLocalTexture(EntityNPCInterface npc, ResourceLocation location) throws IOException {
if (npc.display.modelType != 0) {
return location;
}
InputStream inputstream = null;
try {
TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager();
texturemanager.deleteTexture(location);
IResource iresource = Minecraft.getMinecraft().getResourceManager().getResource(location);
inputstream = iresource.getInputStream();
@@ -355,15 +363,17 @@ public class RenderNPCInterface extends RenderLiving{
int totalWidth = bufferedimage.getWidth();
int totalHeight = bufferedimage.getHeight();
if (totalHeight > 32) {
bufferedimage = bufferedimage.getSubimage(0, 0, totalWidth, 32);
TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager();
ImageDownloadAlt object = new ImageDownloadAlt(null, npc.display.texture, SkinManager.field_152793_a, new ImageBufferDownloadAlt(false));
object.setBufferedImage(bufferedimage);
texturemanager.loadTexture(location, object);
npc.display.x64texture = totalHeight > 32;
if (npc.display.x64texture) {
if (npc.display.modelType == 0 || npc.display.modelType == 3) {
bufferedimage = bufferedimage.getSubimage(0, 0, totalWidth, 32);
}
}
ImageDownloadAlt object = new ImageDownloadAlt(null, npc.display.texture, SkinManager.field_152793_a, new ImageBufferDownloadAlt(false));
object.setBufferedImage(bufferedimage);
texturemanager.loadTexture(location, object);
return location;
} finally {
if (inputstream != null) {
@@ -128,7 +128,6 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti
public List<EntityLivingBase> interactingEntities = new ArrayList<EntityLivingBase>();
public ResourceLocation textureLocation = null;
public ResourceLocation textureGlowLocation = null;
public ResourceLocation textureCloakLocation = null;
public EnumAnimation currentAnimation = EnumAnimation.NONE;
@@ -73,14 +73,14 @@ public class ScriptNpc<T extends EntityNPCInterface> extends ScriptLiving<T> imp
}
/**
* @param modelType The modelType of the NPC. 0: Steve, 1: Steve64, 2: Alex
* @param modelType The modelType of the NPC. 0: Steve, 1: Alex
*/
public void setModelType(int modelType){
if(modelType > 2)
modelType = 2;
if(modelType > 1)
modelType = 1;
else if(modelType < 0)
modelType = 0;
npc.display.modelType = modelType;
npc.display.modelType = modelType + 1;
npc.script.clientNeedsUpdate = true;
}