BlockSkinRenderHelper represents colors as colors
This commit is contained in:
parent
cc15bc7578
commit
5bf2eac646
@ -37,7 +37,7 @@ import cpw.mods.fml.common.registry.VillagerRegistry;
|
|||||||
* @dependencies: IC2 API
|
* @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)
|
@NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = mods.tinker.tconstruct.util.network.TPacketHandler.class)
|
||||||
public class TConstruct
|
public class TConstruct
|
||||||
{
|
{
|
||||||
@ -105,6 +105,7 @@ public class TConstruct
|
|||||||
MinecraftForge.EVENT_BUS.register(playerTracker);
|
MinecraftForge.EVENT_BUS.register(playerTracker);
|
||||||
|
|
||||||
content.modIntegration();
|
content.modIntegration();
|
||||||
|
content.createEntities();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LiquidCasting getTableCasting()
|
public static LiquidCasting getTableCasting()
|
||||||
|
@ -1,44 +1,84 @@
|
|||||||
package mods.tinker.tconstruct.client;
|
package mods.tinker.tconstruct.client;
|
||||||
|
|
||||||
import mods.tinker.tconstruct.TConstruct;
|
import mods.tinker.tconstruct.TConstruct;
|
||||||
|
import mods.tinker.tconstruct.client.armor.WingModel;
|
||||||
import mods.tinker.tconstruct.common.TContent;
|
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.TextureStitchEvent;
|
||||||
import net.minecraftforge.client.event.sound.SoundLoadEvent;
|
import net.minecraftforge.client.event.sound.SoundLoadEvent;
|
||||||
import net.minecraftforge.event.ForgeSubscribe;
|
import net.minecraftforge.event.ForgeSubscribe;
|
||||||
import net.minecraftforge.liquids.LiquidStack;
|
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.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
public class TClientEvents
|
public class TClientEvents
|
||||||
{
|
{
|
||||||
/* Sounds */
|
/* Sounds */
|
||||||
@ForgeSubscribe
|
@ForgeSubscribe
|
||||||
@SideOnly(Side.CLIENT)
|
public void onSound (SoundLoadEvent event)
|
||||||
public void onSound (SoundLoadEvent event)
|
{
|
||||||
{
|
try
|
||||||
try
|
{
|
||||||
{
|
event.manager.soundPoolSounds.addSound("sounds/frypan_hit.ogg", TConstruct.class.getResource("/sounds/frypan_hit.ogg"));
|
||||||
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("sounds/little_saw.ogg", TConstruct.class.getResource("/sounds/little_saw.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.");
|
||||||
System.out.println("[TConstruct] Successfully loaded sounds.");
|
}
|
||||||
}
|
catch (Exception e)
|
||||||
catch (Exception e)
|
{
|
||||||
{
|
System.err.println("[TConstruct] Failed to register one or more sounds");
|
||||||
System.err.println("[TConstruct] Failed to register one or more sounds");
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Liquids */
|
/* Liquids */
|
||||||
@ForgeSubscribe
|
@ForgeSubscribe
|
||||||
@SideOnly(Side.CLIENT)
|
public void postStitch (TextureStitchEvent.Post event)
|
||||||
public void postStitch (TextureStitchEvent.Post event)
|
{
|
||||||
{
|
for (int i = 0; i < TContent.liquidIcons.length; i++)
|
||||||
for (int i = 0; i < TContent.liquidIcons.length; i++)
|
{
|
||||||
{
|
TContent.liquidIcons[i].setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
|
||||||
TContent.liquidIcons[i].setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
|
LiquidStack canon = TContent.liquidIcons[i].canonical();
|
||||||
LiquidStack canon = TContent.liquidIcons[i].canonical();
|
if (canon != null)
|
||||||
if (canon != null)
|
canon.setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,26 +10,67 @@ import javax.xml.parsers.DocumentBuilder;
|
|||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
|
||||||
import mods.tinker.tconstruct.TConstruct;
|
import mods.tinker.tconstruct.TConstruct;
|
||||||
import mods.tinker.tconstruct.blocks.logic.*;
|
import mods.tinker.tconstruct.blocks.logic.CastingBasinLogic;
|
||||||
import mods.tinker.tconstruct.client.block.*;
|
import mods.tinker.tconstruct.blocks.logic.CastingTableLogic;
|
||||||
import mods.tinker.tconstruct.client.entity.*;
|
import mods.tinker.tconstruct.blocks.logic.FrypanLogic;
|
||||||
import mods.tinker.tconstruct.client.entity.projectile.*;
|
import mods.tinker.tconstruct.blocks.logic.GolemCoreLogic;
|
||||||
import mods.tinker.tconstruct.client.gui.*;
|
import mods.tinker.tconstruct.blocks.logic.PartCrafterLogic;
|
||||||
import mods.tinker.tconstruct.common.*;
|
import mods.tinker.tconstruct.blocks.logic.PatternChestLogic;
|
||||||
import mods.tinker.tconstruct.entity.*;
|
import mods.tinker.tconstruct.blocks.logic.PatternShaperLogic;
|
||||||
import mods.tinker.tconstruct.entity.projectile.*;
|
import mods.tinker.tconstruct.blocks.logic.SmelteryLogic;
|
||||||
import mods.tinker.tconstruct.items.tools.*;
|
import mods.tinker.tconstruct.blocks.logic.ToolStationLogic;
|
||||||
import mods.tinker.tconstruct.library.*;
|
import mods.tinker.tconstruct.client.block.CastingBasinSpecialRender;
|
||||||
import mods.tinker.tconstruct.library.client.*;
|
import mods.tinker.tconstruct.client.block.CastingTableSpecialRenderer;
|
||||||
import mods.tinker.tconstruct.library.crafting.*;
|
import mods.tinker.tconstruct.client.block.FluidRender;
|
||||||
import mods.tinker.tconstruct.library.tools.*;
|
import mods.tinker.tconstruct.client.block.FrypanRender;
|
||||||
import mods.tinker.tconstruct.util.PHConstruct;
|
import mods.tinker.tconstruct.client.block.GolemCoreRender;
|
||||||
import mods.tinker.tconstruct.util.player.*;
|
import mods.tinker.tconstruct.client.block.GolemCoreSpecialRender;
|
||||||
import mods.tinker.tconstruct.worldgen.OverworldProvider;
|
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.Block;
|
||||||
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.gui.inventory.GuiInventory;
|
|
||||||
import net.minecraft.client.model.ModelSlime;
|
import net.minecraft.client.model.ModelSlime;
|
||||||
import net.minecraft.client.particle.EntityAuraFX;
|
import net.minecraft.client.particle.EntityAuraFX;
|
||||||
import net.minecraft.client.particle.EntityBreakingFX;
|
import net.minecraft.client.particle.EntityBreakingFX;
|
||||||
@ -67,8 +108,6 @@ import net.minecraft.item.Item;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.Icon;
|
import net.minecraft.util.Icon;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.MinecraftForgeClient;
|
|
||||||
import net.minecraftforge.common.DimensionManager;
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
@ -199,15 +238,6 @@ public class TProxyClient extends TProxyCommon
|
|||||||
//RenderingRegistry.registerBlockHandler(new BrickRender());
|
//RenderingRegistry.registerBlockHandler(new BrickRender());
|
||||||
//RenderingRegistry.registerBlockHandler(new BallRepeaterRender());
|
//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
|
//Special Renderers
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(CastingTableLogic.class, new CastingTableSpecialRenderer());
|
ClientRegistry.bindTileEntitySpecialRenderer(CastingTableLogic.class, new CastingTableSpecialRenderer());
|
||||||
ClientRegistry.bindTileEntitySpecialRenderer(GolemCoreLogic.class, new GolemCoreSpecialRender());
|
ClientRegistry.bindTileEntitySpecialRenderer(GolemCoreLogic.class, new GolemCoreSpecialRender());
|
||||||
@ -217,6 +247,7 @@ public class TProxyClient extends TProxyCommon
|
|||||||
RenderingRegistry.registerEntityRenderingHandler(FancyEntityItem.class, new FancyItemRender());
|
RenderingRegistry.registerEntityRenderingHandler(FancyEntityItem.class, new FancyItemRender());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(NitroCreeper.class, new RenderCreeper());
|
RenderingRegistry.registerEntityRenderingHandler(NitroCreeper.class, new RenderCreeper());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(BlueSlime.class, new SlimeRender(new ModelSlime(16), new ModelSlime(0), 0.25F));
|
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(GolemBase.class, new GolemRender(0));
|
||||||
|
|
||||||
RenderingRegistry.registerEntityRenderingHandler(CartEntity.class, new CartRender());
|
RenderingRegistry.registerEntityRenderingHandler(CartEntity.class, new CartRender());
|
||||||
|
123
mods/tinker/tconstruct/client/armor/WingModel.java
Normal file
123
mods/tinker/tconstruct/client/armor/WingModel.java
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
33
mods/tinker/tconstruct/client/entity/CloneHeadModel.java
Normal file
33
mods/tinker/tconstruct/client/entity/CloneHeadModel.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
91
mods/tinker/tconstruct/client/entity/SlimeCloneRender.java
Normal file
91
mods/tinker/tconstruct/client/entity/SlimeCloneRender.java
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
@ -56,7 +56,7 @@ public class SlimeRender extends RenderLiving
|
|||||||
protected void scaleSlime(BlueSlime par1EdibleSlime, float par2)
|
protected void scaleSlime(BlueSlime par1EdibleSlime, float par2)
|
||||||
{
|
{
|
||||||
float f1 = (float)par1EdibleSlime.getSlimeSize();
|
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);
|
float f3 = 1.0F / (f2 + 1.0F);
|
||||||
GL11.glScalef(f3 * f1, 1.0F / f3 * f1, f3 * f1);
|
GL11.glScalef(f3 * f1, 1.0F / f3 * f1, f3 * f1);
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.world.biome.BiomeGenBase;
|
import net.minecraft.world.biome.BiomeGenBase;
|
||||||
|
import net.minecraftforge.common.BiomeDictionary;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.liquids.LiquidContainerData;
|
import net.minecraftforge.liquids.LiquidContainerData;
|
||||||
import net.minecraftforge.liquids.LiquidContainerRegistry;
|
import net.minecraftforge.liquids.LiquidContainerRegistry;
|
||||||
@ -159,7 +160,6 @@ public class TContent implements IFuelHandler
|
|||||||
|
|
||||||
public TContent()
|
public TContent()
|
||||||
{
|
{
|
||||||
createEntities();
|
|
||||||
registerBlocks();
|
registerBlocks();
|
||||||
registerItems();
|
registerItems();
|
||||||
registerMaterials();
|
registerMaterials();
|
||||||
@ -167,12 +167,12 @@ public class TContent implements IFuelHandler
|
|||||||
setupToolTabs();
|
setupToolTabs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void createEntities ()
|
public void createEntities ()
|
||||||
{
|
{
|
||||||
EntityRegistry.registerModEntity(FancyEntityItem.class, "Fancy Item", 0, TConstruct.instance, 32, 5, true);
|
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(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(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(CartEntity.class, "Small Wagon", 1, TConstruct.instance, 32, 5, true);
|
||||||
//EntityRegistry.registerModEntity(Crystal.class, "Crystal", 2, 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(BlueSlime.class, "EdibleSlime", 12, TConstruct.instance, 64, 5, true);
|
||||||
//EntityRegistry.registerModEntity(MetalSlime.class, "MetalSlime", 13, TConstruct.instance, 64, 5, true);
|
//EntityRegistry.registerModEntity(MetalSlime.class, "MetalSlime", 13, TConstruct.instance, 64, 5, true);
|
||||||
|
|
||||||
/*EntityList.IDtoClassMapping.put(7789011, NitroCreeper.class);
|
BiomeGenBase[] plains = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.PLAINS);
|
||||||
EntityList.entityEggs.put(Integer.valueOf(7789011), new EntityEggInfo(7789011, 0xff7050, 0x555555));
|
BiomeGenBase[] mountain = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.MOUNTAIN);
|
||||||
EntityList.IDtoClassMapping.put(7789012, BlueSlime.class);
|
BiomeGenBase[] hills = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.HILLS);
|
||||||
EntityList.entityEggs.put(Integer.valueOf(7789012), new EntityEggInfo(7789012, 0x3399ff, 0x004499));*/
|
BiomeGenBase[] swamp = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.SWAMP);
|
||||||
|
BiomeGenBase[] desert = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.DESERT);
|
||||||
BiomeGenBase[] overworldBiomes = new BiomeGenBase[] { BiomeGenBase.ocean, BiomeGenBase.plains, BiomeGenBase.desert, BiomeGenBase.extremeHills, BiomeGenBase.forest, BiomeGenBase.taiga,
|
BiomeGenBase[] frozen = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.FROZEN);
|
||||||
BiomeGenBase.swampland, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.beach,
|
BiomeGenBase[] jungle = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.JUNGLE);
|
||||||
BiomeGenBase.desertHills, BiomeGenBase.forestHills, BiomeGenBase.taigaHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.jungle, BiomeGenBase.jungleHills };
|
BiomeGenBase[] wasteland = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.WASTELAND);
|
||||||
|
|
||||||
|
BiomeGenBase[] nether = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.NETHER);
|
||||||
|
|
||||||
if (PHConstruct.redCreeper)
|
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)
|
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);
|
//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");
|
//lumberHead = new ToolPart(PHConstruct.lumberHead, 0, broadheads).setUnlocalizedName("tconstruct.LumberHead");
|
||||||
|
|
||||||
//Wearables
|
//Wearables
|
||||||
heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet");
|
//heavyHelmet = new TArmorBase(PHConstruct.heavyHelmet, 0).setUnlocalizedName("tconstruct.HeavyHelmet");
|
||||||
heartContainer = new HeartContainer(PHConstruct.heartContainer).setUnlocalizedName("tconstruct.canister");
|
//heartContainer = new HeartContainer(PHConstruct.heartContainer).setUnlocalizedName("tconstruct.canister");
|
||||||
|
|
||||||
//Vanilla stack sizes
|
//Vanilla stack sizes
|
||||||
Item.doorWood.setMaxStackSize(16);
|
Item.doorWood.setMaxStackSize(16);
|
||||||
|
@ -17,9 +17,9 @@ import net.minecraftforge.common.ForgeHooks;
|
|||||||
public class BlueSlime extends EntityLiving implements IMob
|
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 };
|
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 sizeOffset;
|
||||||
public float field_70811_b;
|
public float sizeFactor;
|
||||||
public float field_70812_c;
|
public float sizeHeight;
|
||||||
|
|
||||||
/** the time between each jump of the slime */
|
/** the time between each jump of the slime */
|
||||||
protected int slimeJumpDelay = 0;
|
protected int slimeJumpDelay = 0;
|
||||||
@ -220,8 +220,8 @@ public class BlueSlime extends EntityLiving implements IMob
|
|||||||
this.isDead = true;
|
this.isDead = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.field_70811_b += (this.field_70813_a - this.field_70811_b) * 0.5F;
|
this.sizeFactor += (this.sizeOffset - this.sizeFactor) * 0.5F;
|
||||||
this.field_70812_c = this.field_70811_b;
|
this.sizeHeight = this.sizeFactor;
|
||||||
boolean flag = this.onGround;
|
boolean flag = this.onGround;
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
int i;
|
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.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)
|
else if (!this.onGround && flag)
|
||||||
{
|
{
|
||||||
this.field_70813_a = 1.0F;
|
this.sizeOffset = 1.0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.func_70808_l();
|
this.func_70808_l();
|
||||||
@ -311,7 +311,7 @@ public class BlueSlime extends EntityLiving implements IMob
|
|||||||
|
|
||||||
protected void func_70808_l ()
|
protected void func_70808_l ()
|
||||||
{
|
{
|
||||||
this.field_70813_a *= 0.6F;
|
this.sizeOffset *= 0.6F;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,22 +62,22 @@ public class GolemBase extends EntityCreature
|
|||||||
super.updateWanderPath();
|
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 ()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
165
mods/tinker/tconstruct/entity/SlimeClone.java
Normal file
165
mods/tinker/tconstruct/entity/SlimeClone.java
Normal 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";
|
||||||
|
}
|
||||||
|
}
|
@ -60,7 +60,7 @@ public class SlotTool extends Slot
|
|||||||
for (int i = 1; i <= 3; i++)
|
for (int i = 1; i <= 3; i++)
|
||||||
inventory.decrStackSize(i, 1);
|
inventory.decrStackSize(i, 1);
|
||||||
if (!player.worldObj.isRemote && full )
|
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);
|
//player.worldObj.playAuxSFX(1021, (int)player.posX, (int)player.posY, (int)player.posZ, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,8 @@ public class TArmorBase extends ItemArmor
|
|||||||
{
|
{
|
||||||
Icon[] icons;
|
Icon[] icons;
|
||||||
String[] iconNames = { "wood_helmet" };
|
String[] iconNames = { "wood_helmet" };
|
||||||
static Minecraft mc = Minecraft.getMinecraft();
|
//static Minecraft mc = Minecraft.getMinecraft();
|
||||||
private ModelBiped modelArmor;
|
//private ModelBiped modelArmor;
|
||||||
|
|
||||||
public TArmorBase(int id, int armorSlot)
|
public TArmorBase(int id, int armorSlot)
|
||||||
{
|
{
|
||||||
@ -34,7 +34,7 @@ public class TArmorBase extends ItemArmor
|
|||||||
setNoRepair();
|
setNoRepair();
|
||||||
canRepair = false;
|
canRepair = false;
|
||||||
this.setCreativeTab(CreativeTabs.tabMisc);
|
this.setCreativeTab(CreativeTabs.tabMisc);
|
||||||
this.modelArmor = new ModelBiped(0.75F);
|
//this.modelArmor = new ModelBiped(0.75F);
|
||||||
//this.setCreativeTab(TConstructRegistry.toolTab);
|
//this.setCreativeTab(TConstructRegistry.toolTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class FryingPan extends Weapon
|
|||||||
|
|
||||||
public void onEntityDamaged(World world, EntityPlayer player, Entity entity)
|
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 ()
|
public String getToolName ()
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 246 B After Width: | Height: | Size: 482 B |
@ -1,11 +1,10 @@
|
|||||||
package test;
|
package test;
|
||||||
|
|
||||||
|
import mods.tinker.tconstruct.entity.SlimeClone;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLiving;
|
import net.minecraft.entity.EntityLiving;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
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.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@ -33,11 +32,12 @@ public class XinStick extends Item
|
|||||||
@Override
|
@Override
|
||||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
|
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
|
||||||
{
|
{
|
||||||
EntityCreeper creeper = new EntityCreeper(world);
|
/*EntityCreeper creeper = new EntityCreeper(world);
|
||||||
EntityPig pig = new EntityPig(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, creeper, world, player);
|
||||||
spawnEntity(player.posX, player.posY+1, player.posZ, pig, 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());
|
//System.out.println("Health! "+player.getHealth());
|
||||||
//healPlayer(player);
|
//healPlayer(player);
|
||||||
//removeChunk(world, player.posX, player.posZ);
|
//removeChunk(world, player.posX, player.posZ);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user