BlockSkinRenderHelper represents colors as colors

master
mDiyo 2013-05-15 19:13:19 -07:00
parent cc15bc7578
commit 5bf2eac646
19 changed files with 1023 additions and 525 deletions

View File

@ -37,7 +37,7 @@ import cpw.mods.fml.common.registry.VillagerRegistry;
* @dependencies: IC2 API
*/
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.3.12", dependencies = "required-after:Forge@[7.7.1.675,)")
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.3.14", dependencies = "required-after:Forge@[7.7.1.675,)")
@NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = mods.tinker.tconstruct.util.network.TPacketHandler.class)
public class TConstruct
{
@ -105,6 +105,7 @@ public class TConstruct
MinecraftForge.EVENT_BUS.register(playerTracker);
content.modIntegration();
content.createEntities();
}
public static LiquidCasting getTableCasting()

View File

@ -1,44 +1,84 @@
package mods.tinker.tconstruct.client;
import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.client.armor.WingModel;
import mods.tinker.tconstruct.common.TContent;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.liquids.LiquidStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class TClientEvents
{
/* Sounds */
@ForgeSubscribe
@SideOnly(Side.CLIENT)
public void onSound (SoundLoadEvent event)
{
try
{
event.manager.soundPoolSounds.addSound("mods/tinker/resources/sounds/frypan_hit.ogg", TConstruct.class.getResource("/mods/tinker/resources/sounds/frypan_hit.ogg"));
event.manager.soundPoolSounds.addSound("mods/tinker/resources/sounds/little_saw.ogg", TConstruct.class.getResource("/mods/tinker/resources/sounds/little_saw.ogg"));
System.out.println("[TConstruct] Successfully loaded sounds.");
}
catch (Exception e)
{
System.err.println("[TConstruct] Failed to register one or more sounds");
}
}
/* Sounds */
@ForgeSubscribe
public void onSound (SoundLoadEvent event)
{
try
{
event.manager.soundPoolSounds.addSound("sounds/frypan_hit.ogg", TConstruct.class.getResource("/sounds/frypan_hit.ogg"));
event.manager.soundPoolSounds.addSound("sounds/little_saw.ogg", TConstruct.class.getResource("/sounds/little_saw.ogg"));
System.out.println("[TConstruct] Successfully loaded sounds.");
}
catch (Exception e)
{
System.err.println("[TConstruct] Failed to register one or more sounds");
}
}
/* Liquids */
@ForgeSubscribe
@SideOnly(Side.CLIENT)
public void postStitch (TextureStitchEvent.Post event)
{
for (int i = 0; i < TContent.liquidIcons.length; i++)
{
TContent.liquidIcons[i].setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
LiquidStack canon = TContent.liquidIcons[i].canonical();
if (canon != null)
canon.setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
}
}
/* Liquids */
@ForgeSubscribe
public void postStitch (TextureStitchEvent.Post event)
{
for (int i = 0; i < TContent.liquidIcons.length; i++)
{
TContent.liquidIcons[i].setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
LiquidStack canon = TContent.liquidIcons[i].canonical();
if (canon != null)
canon.setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
}
}
/* Armor */
ModelBiped model = new ModelBiped(5f);
WingModel wings = new WingModel();
/*static
{
model.bipedHead.showModel = false;
}*/
private float interpolateRotation (float par1, float par2, float par3)
{
float f3;
for (f3 = par2 - par1; f3 < -180.0F; f3 += 360.0F)
{
;
}
while (f3 >= 180.0F)
{
f3 -= 360.0F;
}
return par1 + par3 * f3;
}
protected float handleRotationFloat (EntityLiving par1EntityLiving, float par2)
{
return (float) par1EntityLiving.ticksExisted + par2;
}
}

View File

@ -10,26 +10,67 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import mods.tinker.tconstruct.TConstruct;
import mods.tinker.tconstruct.blocks.logic.*;
import mods.tinker.tconstruct.client.block.*;
import mods.tinker.tconstruct.client.entity.*;
import mods.tinker.tconstruct.client.entity.projectile.*;
import mods.tinker.tconstruct.client.gui.*;
import mods.tinker.tconstruct.common.*;
import mods.tinker.tconstruct.entity.*;
import mods.tinker.tconstruct.entity.projectile.*;
import mods.tinker.tconstruct.items.tools.*;
import mods.tinker.tconstruct.library.*;
import mods.tinker.tconstruct.library.client.*;
import mods.tinker.tconstruct.library.crafting.*;
import mods.tinker.tconstruct.library.tools.*;
import mods.tinker.tconstruct.util.PHConstruct;
import mods.tinker.tconstruct.util.player.*;
import mods.tinker.tconstruct.worldgen.OverworldProvider;
import mods.tinker.tconstruct.blocks.logic.CastingBasinLogic;
import mods.tinker.tconstruct.blocks.logic.CastingTableLogic;
import mods.tinker.tconstruct.blocks.logic.FrypanLogic;
import mods.tinker.tconstruct.blocks.logic.GolemCoreLogic;
import mods.tinker.tconstruct.blocks.logic.PartCrafterLogic;
import mods.tinker.tconstruct.blocks.logic.PatternChestLogic;
import mods.tinker.tconstruct.blocks.logic.PatternShaperLogic;
import mods.tinker.tconstruct.blocks.logic.SmelteryLogic;
import mods.tinker.tconstruct.blocks.logic.ToolStationLogic;
import mods.tinker.tconstruct.client.block.CastingBasinSpecialRender;
import mods.tinker.tconstruct.client.block.CastingTableSpecialRenderer;
import mods.tinker.tconstruct.client.block.FluidRender;
import mods.tinker.tconstruct.client.block.FrypanRender;
import mods.tinker.tconstruct.client.block.GolemCoreRender;
import mods.tinker.tconstruct.client.block.GolemCoreSpecialRender;
import mods.tinker.tconstruct.client.block.OreberryRender;
import mods.tinker.tconstruct.client.block.SearedRender;
import mods.tinker.tconstruct.client.block.SmallFontRenderer;
import mods.tinker.tconstruct.client.block.SmelteryRender;
import mods.tinker.tconstruct.client.block.TableRender;
import mods.tinker.tconstruct.client.block.TankRender;
import mods.tinker.tconstruct.client.entity.CartRender;
import mods.tinker.tconstruct.client.entity.CloneHeadModel;
import mods.tinker.tconstruct.client.entity.CrystalRender;
import mods.tinker.tconstruct.client.entity.FancyItemRender;
import mods.tinker.tconstruct.client.entity.GolemRender;
import mods.tinker.tconstruct.client.entity.SkylaRender;
import mods.tinker.tconstruct.client.entity.SlimeCloneRender;
import mods.tinker.tconstruct.client.entity.SlimeRender;
import mods.tinker.tconstruct.client.entity.projectile.DaggerRender;
import mods.tinker.tconstruct.client.entity.projectile.LaunchedItemRender;
import mods.tinker.tconstruct.client.gui.ArmorExtendedGui;
import mods.tinker.tconstruct.client.gui.FrypanGui;
import mods.tinker.tconstruct.client.gui.GuiManual;
import mods.tinker.tconstruct.client.gui.PartCrafterGui;
import mods.tinker.tconstruct.client.gui.PatternChestGui;
import mods.tinker.tconstruct.client.gui.PatternShaperGui;
import mods.tinker.tconstruct.client.gui.SmelteryGui;
import mods.tinker.tconstruct.client.gui.ToolStationGui;
import mods.tinker.tconstruct.common.TContent;
import mods.tinker.tconstruct.common.TProxyCommon;
import mods.tinker.tconstruct.entity.BlueSlime;
import mods.tinker.tconstruct.entity.CartEntity;
import mods.tinker.tconstruct.entity.Crystal;
import mods.tinker.tconstruct.entity.FancyEntityItem;
import mods.tinker.tconstruct.entity.GolemBase;
import mods.tinker.tconstruct.entity.NitroCreeper;
import mods.tinker.tconstruct.entity.Skyla;
import mods.tinker.tconstruct.entity.SlimeClone;
import mods.tinker.tconstruct.entity.projectile.DaggerEntity;
import mods.tinker.tconstruct.entity.projectile.LaunchedPotion;
import mods.tinker.tconstruct.items.tools.Dagger;
import mods.tinker.tconstruct.library.TConstructRegistry;
import mods.tinker.tconstruct.library.client.TConstructClientRegistry;
import mods.tinker.tconstruct.library.client.ToolGuiElement;
import mods.tinker.tconstruct.library.crafting.ToolBuilder;
import mods.tinker.tconstruct.library.tools.ToolCore;
import mods.tinker.tconstruct.util.player.ArmorExtended;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.model.ModelSlime;
import net.minecraft.client.particle.EntityAuraFX;
import net.minecraft.client.particle.EntityBreakingFX;
@ -67,8 +108,6 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
import org.lwjgl.opengl.GL11;
@ -199,15 +238,6 @@ public class TProxyClient extends TProxyCommon
//RenderingRegistry.registerBlockHandler(new BrickRender());
//RenderingRegistry.registerBlockHandler(new BallRepeaterRender());
//Tools
/*IItemRenderer render = new SuperCustomToolRenderer();
for (ToolCore tool : TConstructRegistry.tools)
{
MinecraftForgeClient.registerItemRenderer(tool.itemID, render);
}*/
//MinecraftForgeClient.registerItemRenderer(TContent.chisel.itemID, new ChiselRotator());
//Special Renderers
ClientRegistry.bindTileEntitySpecialRenderer(CastingTableLogic.class, new CastingTableSpecialRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(GolemCoreLogic.class, new GolemCoreSpecialRender());
@ -217,6 +247,7 @@ public class TProxyClient extends TProxyCommon
RenderingRegistry.registerEntityRenderingHandler(FancyEntityItem.class, new FancyItemRender());
RenderingRegistry.registerEntityRenderingHandler(NitroCreeper.class, new RenderCreeper());
RenderingRegistry.registerEntityRenderingHandler(BlueSlime.class, new SlimeRender(new ModelSlime(16), new ModelSlime(0), 0.25F));
RenderingRegistry.registerEntityRenderingHandler(SlimeClone.class, new SlimeCloneRender(new CloneHeadModel(0), new CloneHeadModel(1f), 0.25F));
RenderingRegistry.registerEntityRenderingHandler(GolemBase.class, new GolemRender(0));
RenderingRegistry.registerEntityRenderingHandler(CartEntity.class, new CartRender());

View File

@ -0,0 +1,123 @@
package mods.tinker.tconstruct.client.armor;
import mods.tinker.tconstruct.client.tmt.ModelRendererTurbo;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class WingModel extends ModelBase
{
ModelRenderer WingBaseRight;
ModelRenderer WingEdgeRight;
ModelRenderer WingInsetRight;
ModelRenderer WingCenterRight;
ModelRenderer WingFlangeRight;
ModelRenderer WingAuxRight;
ModelRenderer WingBaseLeft;
ModelRenderer WingEdgeLeft;
ModelRenderer WingInsetLeft;
ModelRenderer WingCenterLeft;
ModelRenderer WingFlangeLeft;
ModelRenderer WingAuxLeft;
public WingModel()
{
textureWidth = 64;
textureHeight = 64;
//Right Wing
WingBaseRight = new ModelRenderer(this, 0, 41);
WingBaseRight.addBox(-0.5F, -1F, 0F, 1, 2, 10);
WingBaseRight.setRotationPoint(-1F, 1F, 0F);
setRotation(WingBaseRight, 0.5235988F, -0.5235988F, 0F);
WingEdgeRight = new ModelRenderer(this, 0, 53); //Texture position
WingEdgeRight.addBox(0F, 0F, -2F, 1, 9, 2); //Offset, Size
WingEdgeRight.setRotationPoint(-0.502F, -1F, 10F); //Negative x, y - 1, Position
setRotation(WingEdgeRight, 0.5235988F, 0F, 0F); //Angle in radians
WingInsetRight = new ModelRenderer(this, 6, 53);
WingInsetRight.addBox(0F, 0F, -1F, 1, 9, 2);
WingInsetRight.setRotationPoint(-0.504F, 0F, 7.8F);
setRotation(WingInsetRight, 0.3490659F, 0F, 0F);
WingCenterRight = new ModelRenderer(this, 12, 53);
WingCenterRight.addBox(0F, 0F, -1F, 1, 9, 2);
WingCenterRight.setRotationPoint(-0.506F, 0.3F, 6.3F);
setRotation(WingCenterRight, 0.1745329F, 0F, 0F);
WingFlangeRight = new ModelRenderer(this, 18, 53);
WingFlangeRight.addBox(0F, 0F, -1F, 1, 8, 2);
WingFlangeRight.setRotationPoint(-0.508F, 0.3F, 5.1F);
setRotation(WingFlangeRight, 0F, 0F, 0F);
WingAuxRight = new ModelRenderer(this, 24, 53);
WingAuxRight.addBox(0F, 0F, -1F, 1, 7, 2);
WingAuxRight.setRotationPoint(-0.51F, 0.1F, 4F);
setRotation(WingAuxRight, -0.1745329F, 0F, 0F);
WingBaseRight.addChild(WingEdgeRight);
WingBaseRight.addChild(WingInsetRight);
WingBaseRight.addChild(WingCenterRight);
WingBaseRight.addChild(WingFlangeRight);
WingBaseRight.addChild(WingAuxRight);
//Left Wing
WingBaseLeft = new ModelRenderer(this, 42, 41);
WingBaseLeft.addBox(-0.5F, -1F, 0F, 1, 2, 10);
WingBaseLeft.setRotationPoint(1F, 1F, 0F);
setRotation(WingBaseLeft, 0.5235988F, 0.5235988F, 0F);
WingEdgeLeft = new ModelRenderer(this, 58, 53);
WingEdgeLeft.addBox(0F, 0F, -2F, 1, 9, 2);
WingEdgeLeft.setRotationPoint(-0.502F, -1F, 10F);
setRotation(WingEdgeLeft, 0.5235988F, 0F, 0F);
WingInsetLeft = new ModelRenderer(this, 52, 53);
WingInsetLeft.addBox(0F, 0F, -1F, 1, 9, 2);
WingInsetLeft.setRotationPoint(-0.504F, 0F, 7.8F);
setRotation(WingInsetLeft, 0.3490659F, 0F, 0F);
WingCenterLeft = new ModelRenderer(this, 46, 53);
WingCenterLeft.addBox(0F, 0F, -1F, 1, 9, 2);
WingCenterLeft.setRotationPoint(-0.506F, 0.3F, 6.3F);
setRotation(WingCenterLeft, 0.1745329F, 0F, 0F);
WingFlangeLeft = new ModelRenderer(this, 40, 53);
WingFlangeLeft.addBox(0F, 0F, -1F, 1, 8, 2);
WingFlangeLeft.setRotationPoint(-0.508F, 0.3F, 5.1F);
setRotation(WingFlangeLeft, 0F, 0F, 0F);
WingAuxLeft = new ModelRenderer(this, 34, 53);
WingAuxLeft.addBox(0F, 0F, -1F, 1, 7, 2);
WingAuxLeft.setRotationPoint(-0.51F, 0.1F, 4F);
setRotation(WingAuxLeft, -0.1745329F, 0F, 0F);
WingBaseLeft.addChild(WingEdgeLeft);
WingBaseLeft.addChild(WingInsetLeft);
WingBaseLeft.addChild(WingCenterLeft);
WingBaseLeft.addChild(WingFlangeLeft);
WingBaseLeft.addChild(WingAuxLeft);
}
public void render (Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
WingBaseRight.render(f5);
WingBaseLeft.render(f5);
}
private void setRotation (ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles (float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}

View File

@ -0,0 +1,33 @@
package mods.tinker.tconstruct.client.entity;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class CloneHeadModel extends ModelBase
{
/** The slime's bodies, both the inside box and the outside box */
ModelRenderer slimeBodies;
ModelRenderer slimeHeadwear;
public CloneHeadModel(float scale)
{
this.slimeBodies = new ModelRenderer(this, 0, 0);
this.slimeBodies.addBox(-4.0F, 16.0F, -4.0F, 8, 8, 8);
this.slimeHeadwear = new ModelRenderer(this, 32, 0);
this.slimeHeadwear.addBox(-4.0F, 16.0F, -4.0F, 8, 8, 8, scale);
}
/**
* Sets the models various rotation angles then renders the model.
*/
public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
{
this.setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
this.slimeBodies.render(par7);
this.slimeHeadwear.render(par7);
}
}

View File

@ -0,0 +1,91 @@
package mods.tinker.tconstruct.client.entity;
import mods.tinker.tconstruct.entity.SlimeClone;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.EntityLiving;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class SlimeCloneRender extends RenderLiving
{
private ModelBase scaleAmount;
public SlimeCloneRender(ModelBase par1ModelBase, ModelBase par2ModelBase, float par3)
{
super(par1ModelBase, par3);
this.scaleAmount = par2ModelBase;
}
/**
* Determines whether Slime Render should pass or not.
*/
protected int shouldSlimeRenderPass(SlimeClone blueSlime, int par2, float par3)
{
if (blueSlime.isInvisible())
{
return 0;
}
else if (par2 == 0)
{
this.setRenderPassModel(this.scaleAmount);
GL11.glEnable(GL11.GL_NORMALIZE);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
return 1;
}
else
{
if (par2 == 1)
{
GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
return -1;
}
}
/**
* sets the scale for the slime based on getSlimeSize in EdibleSlime
*/
protected void scaleSlime(SlimeClone slimeClone, float par2)
{
float f1 = 2;
float f2 = (slimeClone.sizeHeight + (slimeClone.sizeFactor - slimeClone.sizeHeight) * par2) / (f1 * 0.5F + 1.0F);
float f3 = 1.0F / (f2 + 1.0F);
GL11.glScalef(f3 * f1, 1.0F / f3 * f1, f3 * f1);
}
/**
* Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args:
* entityLiving, partialTickTime
*/
protected void preRenderCallback(EntityLiving par1EntityLiving, float par2)
{
this.scaleSlime((SlimeClone)par1EntityLiving, par2);
}
/**
* Queries whether should render the specified pass or not.
*/
protected int shouldRenderPass(EntityLiving par1EntityLiving, int par2, float par3)
{
return this.shouldSlimeRenderPass((SlimeClone)par1EntityLiving, par2, par3);
}
protected void func_98191_a(SlimeClone slime)
{
this.loadDownloadableImageTexture(slime.skinUrl, slime.getTexture());
}
@Override
protected void func_98190_a(EntityLiving par1EntityLiving)
{
this.func_98191_a((SlimeClone)par1EntityLiving);
}
}

View File

@ -56,7 +56,7 @@ public class SlimeRender extends RenderLiving
protected void scaleSlime(BlueSlime par1EdibleSlime, float par2)
{
float f1 = (float)par1EdibleSlime.getSlimeSize();
float f2 = (par1EdibleSlime.field_70812_c + (par1EdibleSlime.field_70811_b - par1EdibleSlime.field_70812_c) * par2) / (f1 * 0.5F + 1.0F);
float f2 = (par1EdibleSlime.sizeHeight + (par1EdibleSlime.sizeFactor - par1EdibleSlime.sizeHeight) * par2) / (f1 * 0.5F + 1.0F);
float f3 = 1.0F / (f2 + 1.0F);
GL11.glScalef(f3 * f1, 1.0F / f3 * f1, f3 * f1);
}

View File

@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeDictionary;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.liquids.LiquidContainerData;
import net.minecraftforge.liquids.LiquidContainerRegistry;
@ -159,7 +160,6 @@ public class TContent implements IFuelHandler
public TContent()
{
createEntities();
registerBlocks();
registerItems();
registerMaterials();
@ -167,12 +167,12 @@ public class TContent implements IFuelHandler
setupToolTabs();
}
void createEntities ()
public void createEntities ()
{
EntityRegistry.registerModEntity(FancyEntityItem.class, "Fancy Item", 0, TConstruct.instance, 32, 5, true);
EntityRegistry.registerModEntity(DaggerEntity.class, "Dagger", 1, TConstruct.instance, 32, 5, true);
EntityRegistry.registerModEntity(SlimeClone.class, "SlimeClone", 2, TConstruct.instance, 32, 5, true);
//EntityRegistry.registerModEntity(LaunchedPotion.class, "Launched Potion", 1, TConstruct.instance, 32, 3, true);
//EntityRegistry.registerModEntity(GolemBase.class, "Golembase", 2, TConstruct.instance, 32, 5, true);
//EntityRegistry.registerModEntity(CartEntity.class, "Small Wagon", 1, TConstruct.instance, 32, 5, true);
//EntityRegistry.registerModEntity(Crystal.class, "Crystal", 2, TConstruct.instance, 32, 5, true);
@ -181,18 +181,32 @@ public class TContent implements IFuelHandler
EntityRegistry.registerModEntity(BlueSlime.class, "EdibleSlime", 12, TConstruct.instance, 64, 5, true);
//EntityRegistry.registerModEntity(MetalSlime.class, "MetalSlime", 13, TConstruct.instance, 64, 5, true);
/*EntityList.IDtoClassMapping.put(7789011, NitroCreeper.class);
EntityList.entityEggs.put(Integer.valueOf(7789011), new EntityEggInfo(7789011, 0xff7050, 0x555555));
EntityList.IDtoClassMapping.put(7789012, BlueSlime.class);
EntityList.entityEggs.put(Integer.valueOf(7789012), new EntityEggInfo(7789012, 0x3399ff, 0x004499));*/
BiomeGenBase[] overworldBiomes = new BiomeGenBase[] { BiomeGenBase.ocean, BiomeGenBase.plains, BiomeGenBase.desert, BiomeGenBase.extremeHills, BiomeGenBase.forest, BiomeGenBase.taiga,
BiomeGenBase.swampland, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.beach,
BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.taigaHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills };
BiomeGenBase[] plains = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.PLAINS);
BiomeGenBase[] mountain = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.MOUNTAIN);
BiomeGenBase[] hills = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.HILLS);
BiomeGenBase[] swamp = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.SWAMP);
BiomeGenBase[] desert = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.DESERT);
BiomeGenBase[] frozen = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.FROZEN);
BiomeGenBase[] jungle = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.JUNGLE);
BiomeGenBase[] wasteland = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.WASTELAND);
BiomeGenBase[] nether = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.NETHER);
if (PHConstruct.redCreeper)
EntityRegistry.addSpawn(NitroCreeper.class, PHConstruct.redCreeperWeight, 4, 6, EnumCreatureType.monster, BiomeGenBase.hell);
{
EntityRegistry.addSpawn(NitroCreeper.class, PHConstruct.redCreeperWeight, 4, 6, EnumCreatureType.monster, nether);
}
if (PHConstruct.blueSlime)
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, overworldBiomes);
{
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, plains);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, mountain);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, hills);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, swamp);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, desert);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, frozen);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, jungle);
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, wasteland);
}
//EntityRegistry.addSpawn(MetalSlime.class, 1, 4, 4, EnumCreatureType.monster, overworldBiomes);
}
@ -358,8 +372,8 @@ public class TContent implements IFuelHandler
//lumberHead = new ToolPart(PHConstruct.lumberHead, 0, broadheads).setUnlocalizedName("tconstruct.LumberHead");
//Wearables
heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet");
heartContainer = new HeartContainer(PHConstruct.heartContainer).setUnlocalizedName("tconstruct.canister");
//heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet");
//heartContainer = new HeartContainer(PHConstruct.heartContainer).setUnlocalizedName("tconstruct.canister");
//Vanilla stack sizes
Item.doorWood.setMaxStackSize(16);

View File

@ -17,9 +17,9 @@ import net.minecraftforge.common.ForgeHooks;
public class BlueSlime extends EntityLiving implements IMob
{
private static final float[] field_100000_e = new float[] { 1.0F, 0.75F, 0.5F, 0.25F, 0.0F, 0.25F, 0.5F, 0.75F };
public float field_70813_a;
public float field_70811_b;
public float field_70812_c;
public float sizeOffset;
public float sizeFactor;
public float sizeHeight;
/** the time between each jump of the slime */
protected int slimeJumpDelay = 0;
@ -220,8 +220,8 @@ public class BlueSlime extends EntityLiving implements IMob
this.isDead = true;
}
this.field_70811_b += (this.field_70813_a - this.field_70811_b) * 0.5F;
this.field_70812_c = this.field_70811_b;
this.sizeFactor += (this.sizeOffset - this.sizeFactor) * 0.5F;
this.sizeHeight = this.sizeFactor;
boolean flag = this.onGround;
super.onUpdate();
int i;
@ -244,11 +244,11 @@ public class BlueSlime extends EntityLiving implements IMob
this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) / 0.8F);
}
this.field_70813_a = -0.5F;
this.sizeOffset = -0.5F;
}
else if (!this.onGround && flag)
{
this.field_70813_a = 1.0F;
this.sizeOffset = 1.0F;
}
this.func_70808_l();
@ -311,7 +311,7 @@ public class BlueSlime extends EntityLiving implements IMob
protected void func_70808_l ()
{
this.field_70813_a *= 0.6F;
this.sizeOffset *= 0.6F;
}
/**

View File

@ -62,22 +62,22 @@ public class GolemBase extends EntityCreature
super.updateWanderPath();
}
protected void coreRoutine ()
protected void coreIdle ()
{
}
protected void guardRoutine ()
protected void coreGuard ()
{
}
protected void followRoutine ()
protected void coreFollow ()
{
}
protected void protectRoutine ()
protected void coreProtect ()
{
}

View File

@ -0,0 +1,165 @@
package mods.tinker.tconstruct.entity;
import mods.tinker.tconstruct.TConstruct;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeHooks;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteArrayDataOutput;
import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData;
public class SlimeClone extends GolemBase
implements IEntityAdditionalSpawnData
{
public float sizeOffset;
public float sizeFactor;
public float sizeHeight;
public String username = "";
public SlimeClone(World world)
{
super(world);
//this.texture = "/mob/char.png";
}
public SlimeClone(World world, String username)
{
this(world);
this.username = username;
}
@Override
public void initCreature ()
{
maxHealth = 100;
health = 100;
baseAttack = 3;
paused = false;
inventory = new ItemStack[2];
}
public void onUpdate ()
{
if (!this.worldObj.isRemote && this.worldObj.difficultySetting == 0 && this.getSlimeSize() > 0)
{
this.isDead = true;
}
this.sizeFactor += (this.sizeOffset - this.sizeFactor) * 0.5F;
this.sizeHeight = this.sizeFactor;
boolean flag = this.onGround;
super.onUpdate();
int i;
if (this.onGround && !flag)
{
i = this.getSlimeSize();
for (int j = 0; j < i * 8; ++j)
{
float f = this.rand.nextFloat() * (float) Math.PI * 2.0F;
float offset = this.rand.nextFloat() * 0.5F + 0.5F;
float xPos = MathHelper.sin(f) * (float) i * 0.5F * offset;
float zPos = MathHelper.cos(f) * (float) i * 0.5F * offset;
TConstruct.proxy.spawnParticle(this.getSlimeParticle(), this.posX + (double) xPos, this.boundingBox.minY, this.posZ + (double) zPos, 0.0D, 0.0D, 0.0D);
}
if (this.makesSoundOnLand())
{
this.playSound(this.getJumpSound(), this.getSoundVolume(), ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F) / 0.8F);
}
this.sizeOffset = -0.5F;
}
else if (!this.onGround && flag)
{
this.sizeOffset = 1.0F;
}
this.func_70808_l();
if (this.worldObj.isRemote)
{
i = this.getSlimeSize();
this.setSize(0.6F * (float) i, 0.6F * (float) i);
}
}
protected void func_70808_l ()
{
this.sizeOffset *= 0.6F;
}
protected String getJumpSound ()
{
return "mob.slime." + (this.getSlimeSize() > 1 ? "big" : "small");
}
protected void jump ()
{
this.motionY = 0.05 * getSlimeSize() + 0.37;
if (this.isPotionActive(Potion.jump))
{
this.motionY += (double) ((float) (this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F);
}
if (this.isSprinting())
{
float f = this.rotationYaw * 0.017453292F;
this.motionX -= (double) (MathHelper.sin(f) * 0.2F);
this.motionZ += (double) (MathHelper.cos(f) * 0.2F);
}
this.isAirBorne = true;
ForgeHooks.onLivingJump(this);
}
protected void fall (float par1)
{
}
protected String getSlimeParticle ()
{
return "blueslime";
}
public int getSlimeSize ()
{
return 2;
}
/**
* Returns true if the slime makes a sound when it jumps (based upon the slime's size)
*/
protected boolean makesSoundOnJump ()
{
return this.getSlimeSize() > 0;
}
/**
* Returns true if the slime makes a sound when it lands after a jump (based upon the slime's size)
*/
protected boolean makesSoundOnLand ()
{
return this.getSlimeSize() > 2;
}
@Override
public void writeSpawnData (ByteArrayDataOutput data)
{
data.writeUTF(username);
}
@Override
public void readSpawnData (ByteArrayDataInput data)
{
username = data.readUTF();
skinUrl = "http://skins.minecraft.net/MinecraftSkins/"+username+".png";
}
}

View File

@ -60,7 +60,7 @@ public class SlotTool extends Slot
for (int i = 1; i <= 3; i++)
inventory.decrStackSize(i, 1);
if (!player.worldObj.isRemote && full )
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "mods.tinker.resources.sounds.little_saw", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "sounds.little_saw", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
//player.worldObj.playAuxSFX(1021, (int)player.posX, (int)player.posY, (int)player.posZ, 0);
}
}

View File

@ -23,8 +23,8 @@ public class TArmorBase extends ItemArmor
{
Icon[] icons;
String[] iconNames = { "wood_helmet" };
static Minecraft mc = Minecraft.getMinecraft();
private ModelBiped modelArmor;
//static Minecraft mc = Minecraft.getMinecraft();
//private ModelBiped modelArmor;
public TArmorBase(int id, int armorSlot)
{
@ -34,7 +34,7 @@ public class TArmorBase extends ItemArmor
setNoRepair();
canRepair = false;
this.setCreativeTab(CreativeTabs.tabMisc);
this.modelArmor = new ModelBiped(0.75F);
//this.modelArmor = new ModelBiped(0.75F);
//this.setCreativeTab(TConstructRegistry.toolTab);
}

View File

@ -41,7 +41,7 @@ public class FryingPan extends Weapon
public void onEntityDamaged(World world, EntityPlayer player, Entity entity)
{
world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mods.tinker.resources.sounds.frypan_hit", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "sounds.frypan_hit", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
}
public String getToolName ()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B

After

Width:  |  Height:  |  Size: 482 B

View File

@ -1,11 +1,10 @@
package test;
import mods.tinker.tconstruct.entity.SlimeClone;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -33,11 +32,12 @@ public class XinStick extends Item
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
EntityCreeper creeper = new EntityCreeper(world);
/*EntityCreeper creeper = new EntityCreeper(world);
EntityPig pig = new EntityPig(world);
spawnEntity(player.posX, player.posY+1, player.posZ, creeper, world, player);
spawnEntity(player.posX, player.posY+1, player.posZ, pig, world, player);
creeper.mountEntity(pig);
creeper.mountEntity(pig);*/
spawnEntity(player.posX, player.posY+1, player.posZ, new SlimeClone(world, player.username), world, player);
//System.out.println("Health! "+player.getHealth());
//healPlayer(player);
//removeChunk(world, player.posX, player.posZ);