Heart Canisters
This commit is contained in:
parent
5f6990edaf
commit
14edf4c2cf
@ -74,6 +74,8 @@
|
||||
<entry key="item.oreberry.aluminum.name">Aluminum Oreberry</entry>
|
||||
<entry key="item.oreberry.silver.name">Silver Oreberry</entry>
|
||||
|
||||
<entry key="item.tconstruct.titleicon.name">Spawn </entry>
|
||||
|
||||
<entry key="item.tconstruct.Materials.PaperStack.name">Paper Stack</entry>
|
||||
<entry key="item.tconstruct.Materials.SlimeCrystal.name">Slime Crystal</entry>
|
||||
<entry key="item.tconstruct.Materials.SearedBrick.name">Seared Brick</entry>
|
||||
@ -165,15 +167,18 @@
|
||||
<entry key="LiquidMetal.DSteel.name">Liquid Damascus Steel</entry>
|
||||
<entry key="LiquidMetal.Angmallen.name">Liquid Angmallen</entry>
|
||||
|
||||
<entry key="item.food.apple.diamond.name">Jeweled Apple</entry>
|
||||
<entry key="item.tconstruct.strangefood.edibleslime.name">Gelatinous Slime</entry>
|
||||
<entry key="item.tconstruct.canister.empty.name">Empty Canister</entry>
|
||||
<entry key="item.tconstruct.canister.heart.name">Heart Container</entry>
|
||||
<entry key="item.tconstruct.canister.miniheart.red.name">Miniature Red Heart</entry>
|
||||
<entry key="item.tconstruct.canister.heart.name">Heart Canister</entry>
|
||||
|
||||
<entry key="SearedBlock.Table.name">Casting Table</entry>
|
||||
<entry key="SearedBlock.Faucet.name">Seared Faucet</entry>
|
||||
<entry key="SearedBlock.Basin.name">Casting Basin</entry>
|
||||
|
||||
<entry key="entity.TConstruct.EdibleSlime.name">Blue Slime</entry>
|
||||
<entry key="entity.TConstruct.KingSlime.name">King Slime</entry>
|
||||
<entry key="entity.TConstruct.UnstableCreeper.name">Nitro Creeper</entry>
|
||||
<entry key="entity.TConstruct.EdibleSlime">Blue Slime</entry>
|
||||
<entry key="entity.TConstruct.UnstableCreeper">Nitro Creeper</entry>
|
||||
|
@ -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.dev.43", dependencies = "required-after:Forge@[7.7.1.675,)")
|
||||
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.5.1_1.3.dev.48", 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
|
||||
{
|
||||
|
@ -1,9 +1,73 @@
|
||||
package mods.tinker.tconstruct.blocks.logic;
|
||||
|
||||
import mods.tinker.tconstruct.library.util.CoordTuple;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.INetworkManager;
|
||||
import net.minecraft.network.packet.Packet;
|
||||
import net.minecraft.network.packet.Packet132TileEntityData;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RedwireLogic extends TileEntity
|
||||
{
|
||||
byte facesUsed;
|
||||
byte type;
|
||||
byte distanceTravelled;
|
||||
byte maxDistance;
|
||||
|
||||
public void readCustomNBT (NBTTagCompound tags)
|
||||
{
|
||||
/*hasMaster = tags.getBoolean("HasMaster");
|
||||
if (hasMaster)
|
||||
{
|
||||
int xCenter = tags.getInteger("xCenter");
|
||||
int yCenter = tags.getInteger("yCenter");
|
||||
int zCenter = tags.getInteger("zCenter");
|
||||
master = new CoordTuple(xCenter, yCenter, zCenter);
|
||||
masterID = tags.getShort("MasterID");
|
||||
masterMeat = tags.getByte("masterMeat");
|
||||
}*/
|
||||
}
|
||||
|
||||
public void writeCustomNBT (NBTTagCompound tags)
|
||||
{
|
||||
/*tags.setBoolean("HasMaster", hasMaster);
|
||||
if (hasMaster)
|
||||
{
|
||||
tags.setInteger("xCenter", master.x);
|
||||
tags.setInteger("yCenter", master.y);
|
||||
tags.setInteger("zCenter", master.z);
|
||||
tags.setShort("MasterID", masterID);
|
||||
tags.setByte("masterMeat", masterMeat);
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT (NBTTagCompound tags)
|
||||
{
|
||||
super.readFromNBT(tags);
|
||||
readCustomNBT(tags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT (NBTTagCompound tags)
|
||||
{
|
||||
super.writeToNBT(tags);
|
||||
writeCustomNBT(tags);
|
||||
}
|
||||
|
||||
/* Packets */
|
||||
@Override
|
||||
public Packet getDescriptionPacket ()
|
||||
{
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
writeCustomNBT(tag);
|
||||
return new Packet132TileEntityData(xCoord, yCoord, zCoord, 1, tag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket (INetworkManager net, Packet132TileEntityData packet)
|
||||
{
|
||||
readCustomNBT(packet.customParam1);
|
||||
worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord);
|
||||
}
|
||||
}
|
||||
|
22
mods/tinker/tconstruct/blocks/traps/Punji.java
Normal file
22
mods/tinker/tconstruct/blocks/traps/Punji.java
Normal file
@ -0,0 +1,22 @@
|
||||
package mods.tinker.tconstruct.blocks.traps;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class Punji extends Block
|
||||
{
|
||||
|
||||
public Punji(int id)
|
||||
{
|
||||
super(id, Material.circuits);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
|
||||
{
|
||||
entity.fallDistance *= 2.0F;
|
||||
}
|
||||
|
||||
}
|
@ -3,25 +3,25 @@ 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.Minecraft;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
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
|
||||
{
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
EntityPlayer player;
|
||||
/* Sounds */
|
||||
@ForgeSubscribe
|
||||
public void onSound (SoundLoadEvent event)
|
||||
@ -50,6 +50,58 @@ public class TClientEvents
|
||||
canon.setRenderingIcon(TContent.liquidMetalStill.getIcon(0, i));
|
||||
}
|
||||
}
|
||||
|
||||
/* Health */
|
||||
@ForgeSubscribe
|
||||
public void renderHealthbar (RenderGameOverlayEvent.Post event)
|
||||
{
|
||||
if (event.type == RenderGameOverlayEvent.ElementType.HEALTH)
|
||||
{
|
||||
if (player == null)
|
||||
player = mc.thePlayer;
|
||||
|
||||
ScaledResolution scaledresolution = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight);
|
||||
int scaledWidth = scaledresolution.getScaledWidth();
|
||||
int scaledHeight = scaledresolution.getScaledHeight();
|
||||
int xBasePos = scaledWidth / 2 - 91;
|
||||
int yBasePos = scaledHeight - 39;
|
||||
this.mc.renderEngine.bindTexture("/mods/tinker/textures/gui/newhearts.png");
|
||||
|
||||
int hp = player.getHealth();
|
||||
for (int iter = 0; iter < hp / 20; iter++)
|
||||
{
|
||||
int renderHearts = (hp - 20*(iter+1)) / 2;
|
||||
if (renderHearts > 10)
|
||||
renderHearts = 10;
|
||||
for (int i = 0; i < renderHearts; i++)
|
||||
{
|
||||
this.drawTexturedModalRect(xBasePos + 8*i, yBasePos, 0 + 18*iter, 0, 8, 8);
|
||||
}
|
||||
if (hp % 2 == 1 && renderHearts < 10)
|
||||
{
|
||||
this.drawTexturedModalRect(xBasePos + 8*renderHearts, yBasePos, 9 + 18*iter, 0, 8, 8);
|
||||
}
|
||||
}
|
||||
|
||||
this.mc.renderEngine.bindTexture("/gui/icons.png");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6)
|
||||
{
|
||||
float f = 0.00390625F;
|
||||
float f1 = 0.00390625F;
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.addVertexWithUV((double)(par1 + 0), (double)(par2 + par6), (double)this.zLevel, (double)((float)(par3 + 0) * f), (double)((float)(par4 + par6) * f1));
|
||||
tessellator.addVertexWithUV((double)(par1 + par5), (double)(par2 + par6), (double)this.zLevel, (double)((float)(par3 + par5) * f), (double)((float)(par4 + par6) * f1));
|
||||
tessellator.addVertexWithUV((double)(par1 + par5), (double)(par2 + 0), (double)this.zLevel, (double)((float)(par3 + par5) * f), (double)((float)(par4 + 0) * f1));
|
||||
tessellator.addVertexWithUV((double)(par1 + 0), (double)(par2 + 0), (double)this.zLevel, (double)((float)(par3 + 0) * f), (double)((float)(par4 + 0) * f1));
|
||||
tessellator.draw();
|
||||
}
|
||||
double zLevel = 0;
|
||||
|
||||
/* Armor */
|
||||
ModelBiped model = new ModelBiped(5f);
|
||||
|
@ -521,7 +521,7 @@ public class TProxyClient extends TProxyCommon
|
||||
new int[] { 7, 0, 13 }, new int[] { 3, 3, 13 } //Chisel
|
||||
};
|
||||
|
||||
static String[] toolNames = { "Repair and Modification", "Pickaxe", "Shovel", "Axe",
|
||||
static String[] toolNames = { "Repair and Modification", "Pickaxe", "Shovel", "Hatchet",
|
||||
//"Lumber Axe",
|
||||
//"Ice Axe",
|
||||
"Mattock", "Broadsword", "Longsword", "Rapier", "Dagger", "Frying Pan", "Battlesign", "Chisel" };
|
||||
|
@ -21,11 +21,11 @@ public class CrystalModel extends ModelBase
|
||||
body.setRotationPoint(0F, 0F, 0F);
|
||||
setRotation(body, 0, 0.7853982F, 0);
|
||||
top = new ModelRendererTurbo(this, 0, 0, 32, 32);
|
||||
top.addCone(0, 0, 0, 2.8F, 4, 4, 0, ModelRendererTurbo.MR_BOTTOM, 4, 4);
|
||||
top.addCone(0, 0, 0, 2.8F, 4, 4, 0, ModelRendererTurbo.MR_BOTTOM, 4, 8);
|
||||
top.setRotationPoint(0F, -4F, 0F);
|
||||
setRotation(top, 0F, 0F, 0F);
|
||||
bottom = new ModelRendererTurbo(this, 0, 18, 32, 32);
|
||||
top.addCone(0, 10, 0, 2.8F, 4, 4, 0, ModelRendererTurbo.MR_TOP, 4, 4);
|
||||
top.addCone(0, 10, 0, 2.8F, 4, 4, 0, ModelRendererTurbo.MR_TOP, 4, 8);
|
||||
bottom.setRotationPoint(0F, 6F, 0F);
|
||||
//setRotation(bottom, 0F, 0F, 0F);
|
||||
}
|
||||
|
@ -4,6 +4,8 @@ import mods.tinker.tconstruct.entity.BlueSlime;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.renderer.entity.RenderLiving;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.boss.BossStatus;
|
||||
import net.minecraft.entity.boss.IBossDisplayData;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
@ -21,6 +23,18 @@ public class SlimeRender extends RenderLiving
|
||||
this.scaleAmount = par2ModelBase;
|
||||
}
|
||||
|
||||
public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
|
||||
{
|
||||
super.doRenderLiving(par1EntityLiving, par2, par4, par6, par8, par9);
|
||||
renderBossHealth((BlueSlime) par1EntityLiving);
|
||||
}
|
||||
|
||||
public void renderBossHealth(BlueSlime slime)
|
||||
{
|
||||
if (slime.getSlimeSize() >= 8)
|
||||
BossStatus.func_82824_a(slime, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether Slime Render should pass or not.
|
||||
*/
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,19 +2,28 @@ package mods.tinker.tconstruct.entity;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import mods.tinker.tconstruct.library.crafting.ToolBuilder;
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import net.minecraft.entity.EntityList;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.boss.IBossDisplayData;
|
||||
import net.minecraft.entity.monster.EntityCreeper;
|
||||
import net.minecraft.entity.monster.EntitySkeleton;
|
||||
import net.minecraft.entity.monster.IMob;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.EnumSkyBlock;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
|
||||
public class BlueSlime extends EntityLiving implements IMob
|
||||
public class BlueSlime extends EntityLiving implements IMob, IBossDisplayData
|
||||
{
|
||||
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 sizeOffset;
|
||||
@ -28,13 +37,13 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
{
|
||||
super(world);
|
||||
this.texture = "/mods/tinker/textures/mob/slimeedible.png";
|
||||
int offset = this.rand.nextInt(99);
|
||||
if (offset < 49)
|
||||
int offset = this.rand.nextInt(199);
|
||||
if (offset < 99)
|
||||
offset = 1;
|
||||
else if (offset < 98)
|
||||
offset = 2;
|
||||
else if (offset < 198)
|
||||
offset = 2;
|
||||
else
|
||||
offset = 3;
|
||||
offset = 3;
|
||||
int size = 1 << offset;
|
||||
this.yOffset = 0.0F;
|
||||
this.slimeJumpDelay = this.rand.nextInt(120) + 40;
|
||||
@ -50,12 +59,20 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
super.damageEntity(damageSource, damage);
|
||||
}
|
||||
|
||||
/*public boolean attackEntityFrom(DamageSource damageSource, int damage)
|
||||
public String getEntityName ()
|
||||
{
|
||||
if (damageSource.damageType.equals("arrow") && rand.nextInt(5) == 0)
|
||||
return false;
|
||||
return super.attackEntityFrom(damageSource, damage);
|
||||
}*/
|
||||
String s = EntityList.getEntityString(this);
|
||||
|
||||
if (s == null)
|
||||
{
|
||||
s = "generic";
|
||||
}
|
||||
|
||||
if (getSlimeSize() >= 8)
|
||||
s = "TConstruct.KingSlime";
|
||||
|
||||
return StatCollector.translateToLocal("entity." + s + ".name");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initCreature ()
|
||||
@ -68,7 +85,35 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
this.worldObj.spawnEntityInWorld(entityskeleton);
|
||||
entityskeleton.mountEntity(this);
|
||||
}
|
||||
if (getSlimeSize() == 4 && rand.nextInt(12) == 0)
|
||||
{
|
||||
EntityCreeper creeper = new EntityCreeper(this.worldObj);
|
||||
creeper.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, 0.0F);
|
||||
creeper.initCreature();
|
||||
this.worldObj.spawnEntityInWorld(creeper);
|
||||
creeper.mountEntity(this);
|
||||
}
|
||||
if (getSlimeSize() == 8)
|
||||
{
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
BlueSlime slime = new BlueSlime(this.worldObj);
|
||||
slime.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, 0.0F);
|
||||
slime.initCreature();
|
||||
this.worldObj.spawnEntityInWorld(slime);
|
||||
}
|
||||
|
||||
BlueSlime slime = new BlueSlime(this.worldObj);
|
||||
slime.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, 0.0F);
|
||||
slime.setSlimeSize(2);
|
||||
this.worldObj.spawnEntityInWorld(slime);
|
||||
|
||||
EntitySkeleton skelton = new EntitySkeleton(this.worldObj);
|
||||
skelton.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, 0.0F);
|
||||
skelton.initCreature();
|
||||
this.worldObj.spawnEntityInWorld(skelton);
|
||||
skelton.mountEntity(slime);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -92,15 +137,19 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
this.motionX -= (double) (MathHelper.sin(f) * 0.2F);
|
||||
this.motionZ += (double) (MathHelper.cos(f) * 0.2F);
|
||||
}
|
||||
|
||||
if (this.getBrightness(1.0F) > 0.9F && rand.nextInt(5) == 0 && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)))
|
||||
{
|
||||
int size = this.getSlimeSize() - 1;
|
||||
if (size <= 0)
|
||||
this.kill();
|
||||
else
|
||||
this.setSlimeSize(size);
|
||||
}
|
||||
|
||||
if (this.getBrightness(1.0F) > 0.9F && rand.nextInt(5) == 0
|
||||
&& this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)))
|
||||
{
|
||||
int size = this.getSlimeSize() - 1;
|
||||
if (size < 7)
|
||||
{
|
||||
if (size <= 0)
|
||||
this.kill();
|
||||
else
|
||||
this.setSlimeSize(size);
|
||||
}
|
||||
}
|
||||
|
||||
this.isAirBorne = true;
|
||||
ForgeHooks.onLivingJump(this);
|
||||
@ -127,10 +176,10 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
int x = MathHelper.floor_double(this.posX);
|
||||
int y = MathHelper.floor_double(this.boundingBox.minY);
|
||||
int z = MathHelper.floor_double(this.posZ);
|
||||
|
||||
|
||||
if (y < 60 && rand.nextInt(5) != 0)
|
||||
{
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, x, y, z) > this.rand.nextInt(32))
|
||||
@ -157,15 +206,18 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
{
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(16, new Byte((byte) 1));
|
||||
this.dataWatcher.addObject(17, new Integer(100));
|
||||
}
|
||||
|
||||
protected void setSlimeSize (int size)
|
||||
public void setSlimeSize (int size)
|
||||
{
|
||||
this.dataWatcher.updateObject(16, new Byte((byte) size));
|
||||
this.setSize(0.6F * size, 0.6F * size);
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
this.setEntityHealth(this.getMaxHealth());
|
||||
this.experienceValue = size + 2;
|
||||
if (size >= 8)
|
||||
this.experienceValue = 500;
|
||||
}
|
||||
|
||||
public int getMaxHealth ()
|
||||
@ -173,6 +225,8 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
int i = this.getSlimeSize();
|
||||
if (i == 1)
|
||||
return 4;
|
||||
if (i == 8)
|
||||
return 100;
|
||||
return (int) Math.min(i * i + 8, 49);
|
||||
}
|
||||
|
||||
@ -200,6 +254,7 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
{
|
||||
super.readEntityFromNBT(par1NBTTagCompound);
|
||||
this.setSlimeSize(par1NBTTagCompound.getInteger("Size") + 1);
|
||||
this.dataWatcher.updateObject(17, Integer.valueOf(this.health));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -220,6 +275,11 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
this.isDead = true;
|
||||
}
|
||||
|
||||
if (!this.worldObj.isRemote)
|
||||
{
|
||||
this.dataWatcher.updateObject(17, Integer.valueOf(this.health));
|
||||
}
|
||||
|
||||
this.sizeFactor += (this.sizeOffset - this.sizeFactor) * 0.5F;
|
||||
this.sizeHeight = this.sizeFactor;
|
||||
boolean flag = this.onGround;
|
||||
@ -332,14 +392,14 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
*/
|
||||
public void setDead ()
|
||||
{
|
||||
int i = this.getSlimeSize();
|
||||
int size = this.getSlimeSize();
|
||||
|
||||
if (!this.worldObj.isRemote && i > 1 && this.getHealth() <= 0)
|
||||
if (!this.worldObj.isRemote && size > 1 && this.getHealth() <= 0 && size < 8)
|
||||
{
|
||||
float f = (-0.5F) * (float) i / 4.0F;
|
||||
float f1 = (-0.5F) * (float) i / 4.0F;
|
||||
float f = (-0.5F) * (float) size / 4.0F;
|
||||
float f1 = (-0.5F) * (float) size / 4.0F;
|
||||
BlueSlime entityslime = this.createInstance();
|
||||
entityslime.setSlimeSize(i / 2);
|
||||
entityslime.setSlimeSize(size / 2);
|
||||
entityslime.setLocationAndAngles(this.posX + (double) f, this.posY + 0.5D, this.posZ + (double) f1, this.rand.nextFloat() * 360.0F, 0.0F);
|
||||
this.worldObj.spawnEntityInWorld(entityslime);
|
||||
}
|
||||
@ -349,9 +409,10 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
|
||||
protected void dropFewItems (boolean par1, int par2)
|
||||
{
|
||||
int size = this.getSlimeSize();
|
||||
int j = this.getDropItemId();
|
||||
|
||||
if (j > 0 && rand.nextInt(2) == 0)
|
||||
if (j > 0 && (rand.nextInt(2) == 0) || size >= 8)
|
||||
{
|
||||
int k = rand.nextInt(3) + rand.nextInt(this.getSlimeSize());
|
||||
|
||||
@ -365,6 +426,24 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
this.dropItem(j, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (size == 8)
|
||||
{
|
||||
ToolCore tool = TConstructRegistry.tools.get(rand.nextInt(TConstructRegistry.tools.size()));
|
||||
|
||||
Item accessory = tool.getAccessoryItem();
|
||||
ItemStack accessoryStack = accessory != null ? new ItemStack(tool.getAccessoryItem(), 1, 17) : null;
|
||||
ItemStack toolStack = ToolBuilder.instance.buildTool(new ItemStack(tool.getHeadItem(), 1, 17), new ItemStack(tool.getHandleItem(), 1, 17), accessoryStack,
|
||||
"King Slime " + tool.getToolName());
|
||||
|
||||
NBTTagCompound tags = toolStack.getTagCompound().getCompoundTag("InfiTool");
|
||||
tags.setInteger("Attack", 3 + tool.getDamageVsEntity(null));
|
||||
tags.setInteger("TotalDurability", 1500);
|
||||
tags.setInteger("BaseDurability", 1500);
|
||||
tags.setInteger("MiningSpeed", 800);
|
||||
|
||||
this.entityDropItem(toolStack, 0f);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -456,4 +535,10 @@ public class BlueSlime extends EntityLiving implements IMob
|
||||
{
|
||||
return this.getSlimeSize() > 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBossHealth ()
|
||||
{
|
||||
return this.dataWatcher.getWatchableObjectInt(17);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ public class Crystal extends EntityCreeper
|
||||
public Crystal(World par1World)
|
||||
{
|
||||
super(par1World);
|
||||
this.texture = "/tinkertextures/mob/crystalwater.png";
|
||||
this.texture = "/mods/tinker/textures/mob/crystalwater.png";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
77
mods/tinker/tconstruct/items/DiamondApple.java
Normal file
77
mods/tinker/tconstruct/items/DiamondApple.java
Normal file
@ -0,0 +1,77 @@
|
||||
package mods.tinker.tconstruct.items;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemFood;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class DiamondApple extends ItemFood
|
||||
{
|
||||
public Icon[] icons;
|
||||
public String[] textureNames = new String[] { "apple_diamond" };
|
||||
public String[] itemNames = new String[] { "apple.diamond" };
|
||||
|
||||
public DiamondApple(int id)
|
||||
{
|
||||
super(id, 4, 2.0F, false);
|
||||
setHasSubtypes(true);
|
||||
setMaxDamage(0);
|
||||
this.setAlwaysEdible();
|
||||
}
|
||||
|
||||
protected void onFoodEaten(ItemStack stack, World world, EntityPlayer player)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
int duration = 0;
|
||||
PotionEffect potion;
|
||||
|
||||
potion = player.getActivePotionEffect(Potion.resistance);
|
||||
if (potion != null)
|
||||
duration = potion.duration;
|
||||
player.addPotionEffect(new PotionEffect(Potion.resistance.id, duration + 60*20, 0));
|
||||
|
||||
potion = player.getActivePotionEffect(Potion.digSpeed);
|
||||
if (potion != null)
|
||||
duration = potion.duration;
|
||||
player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, duration + 60*20, 0));
|
||||
|
||||
potion = player.getActivePotionEffect(Potion.damageBoost);
|
||||
if (potion != null)
|
||||
duration = potion.duration;
|
||||
player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, duration + 60*20, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public Icon getIconFromDamage(int meta)
|
||||
{
|
||||
return icons[meta];
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void registerIcons(IconRegister iconRegister)
|
||||
{
|
||||
this.icons = new Icon[textureNames.length];
|
||||
|
||||
for (int i = 0; i < this.icons.length; ++i)
|
||||
{
|
||||
this.icons[i] = iconRegister.registerIcon("tinker:"+textureNames[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Name override */
|
||||
@Override
|
||||
public String getUnlocalizedName(ItemStack itemstack)
|
||||
{
|
||||
return (new StringBuilder()).append("item.food.").append(itemNames[itemstack.getItemDamage()]).toString();
|
||||
}
|
||||
}
|
69
mods/tinker/tconstruct/items/HeartCanister.java
Normal file
69
mods/tinker/tconstruct/items/HeartCanister.java
Normal file
@ -0,0 +1,69 @@
|
||||
package mods.tinker.tconstruct.items;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.util.player.ArmorExtended;
|
||||
import mods.tinker.tconstruct.util.player.TPlayerStats;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class HeartCanister extends CraftingItem
|
||||
{
|
||||
|
||||
public HeartCanister(int id)
|
||||
{
|
||||
super(id, new String[] { "empty", "miniheart.red", "heart" }, new String[] { "canister_empty", "miniheart_red", "canister_heart" }, "");
|
||||
this.setMaxStackSize(10);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
|
||||
{
|
||||
if (!world.isRemote && stack.getItemDamage() == 2)
|
||||
{
|
||||
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
|
||||
if (stats != null)
|
||||
{
|
||||
ArmorExtended armor = stats.armor;
|
||||
ItemStack slotStack = armor.getStackInSlot(6);
|
||||
if (slotStack == null)// || slotStack.getItem() == this)
|
||||
{
|
||||
armor.setInventorySlotContents(6, new ItemStack(this, 1, 2));
|
||||
stack.stackSize--;
|
||||
}
|
||||
else if (slotStack.getItem() == this && slotStack.stackSize < this.maxStackSize)
|
||||
{
|
||||
slotStack.stackSize++;
|
||||
stack.stackSize--;
|
||||
}
|
||||
armor.recalculateHealth();
|
||||
}
|
||||
}
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
|
||||
{
|
||||
switch (stack.getItemDamage())
|
||||
{
|
||||
case 0:
|
||||
list.add("Crafting Item");
|
||||
break;
|
||||
case 1:
|
||||
list.add("Crafting Item");
|
||||
list.add("Part of low-level Heart Canisters");
|
||||
break;
|
||||
case 2:
|
||||
list.add("Accessory");
|
||||
list.add("Permanent health increase");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package mods.tinker.tconstruct.items;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
||||
public class HeartContainer extends CraftingItem
|
||||
{
|
||||
|
||||
public HeartContainer(int id)
|
||||
{
|
||||
super(id, new String[] {"empty", "heart"}, new String[] {"canister_empty", "canister_heart"}, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
|
||||
{
|
||||
list.add("Test Item");
|
||||
}
|
||||
|
||||
}
|
@ -1,15 +1,37 @@
|
||||
package mods.tinker.tconstruct.items;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mods.tinker.tconstruct.client.TProxyClient;
|
||||
import mods.tinker.tconstruct.entity.BlueSlime;
|
||||
import mods.tinker.tconstruct.entity.NitroCreeper;
|
||||
import mods.tinker.tconstruct.library.tools.ToolCore;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityList;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Facing;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TitleIcon extends Item
|
||||
{
|
||||
int[] primaryColor = { 0x66BBE8, 0x66BBE8, 0xF73E6C };
|
||||
int[] secondaryColor = { 0x1567BF, 0x1567BF, 0x9B5004 };
|
||||
String[] mobNames = { "TConstruct.EdibleSlime", "TConstruct.KingSlime", "TConstruct.UnstableCreeper" };
|
||||
|
||||
public TitleIcon(int par1)
|
||||
{
|
||||
super(par1);
|
||||
this.setCreativeTab(CreativeTabs.tabMisc);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -19,4 +41,103 @@ public class TitleIcon extends Item
|
||||
TProxyClient.metalBall = iconRegister.registerIcon("tinker:metalball");
|
||||
itemIcon = iconRegister.registerIcon("tinker:tparts");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean requiresMultipleRenderPasses ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Icon getIconFromDamageForRenderPass (int par1, int par2)
|
||||
{
|
||||
return Item.monsterPlacer.getIconFromDamageForRenderPass(par1, par2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemDisplayName (ItemStack par1ItemStack)
|
||||
{
|
||||
String s = ("" + StatCollector.translateToLocal(this.getUnlocalizedName() + ".name")).trim();
|
||||
String s1 = mobNames[par1ItemStack.getItemDamage()];
|
||||
|
||||
if (s1 != null)
|
||||
{
|
||||
s = s + " " + StatCollector.translateToLocal("entity." + s1 + ".name");
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubItems(int id, CreativeTabs tab, List list)
|
||||
{
|
||||
for (int i = 0; i < mobNames.length; i++)
|
||||
list.add(new ItemStack(id, 1, i));
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack (ItemStack stack, int pass)
|
||||
{
|
||||
int damage = stack.getItemDamage();
|
||||
return pass == 0 ? primaryColor[damage] : secondaryColor[damage];
|
||||
}
|
||||
|
||||
public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int posX, int posY, int posZ, int par7, float par8, float par9, float par10)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
int i1 = world.getBlockId(posX, posY, posZ);
|
||||
posX += Facing.offsetsXForSide[par7];
|
||||
posY += Facing.offsetsYForSide[par7];
|
||||
posZ += Facing.offsetsZForSide[par7];
|
||||
double d0 = 0.0D;
|
||||
|
||||
if (par7 == 1 && Block.blocksList[i1] != null && Block.blocksList[i1].getRenderType() == 11)
|
||||
{
|
||||
d0 = 0.5D;
|
||||
}
|
||||
|
||||
int damage = stack.getItemDamage();
|
||||
switch (damage)
|
||||
{
|
||||
case 0:
|
||||
spawnEntity(posX, posY, posZ, new BlueSlime(world), world, player);
|
||||
break;
|
||||
case 1:
|
||||
spawnBossSlime(posX, posY, posZ, new BlueSlime(world), world, player);
|
||||
break;
|
||||
case 2:
|
||||
spawnEntity(posX, posY, posZ, new NitroCreeper(world), world, player);
|
||||
break;
|
||||
}
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
{
|
||||
--stack.stackSize;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void spawnEntity (double x, double y, double z, Entity entity, World world, EntityPlayer player)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
entity.setPosition(x, y, z);
|
||||
entity.setAngles(player.cameraYaw, player.cameraYaw);
|
||||
((EntityLiving) entity).initCreature();
|
||||
world.spawnEntityInWorld(entity);
|
||||
}
|
||||
}
|
||||
|
||||
public static void spawnBossSlime (double x, double y, double z, BlueSlime entity, World world, EntityPlayer player)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
entity.setPosition(x, y, z);
|
||||
entity.setAngles(player.cameraYaw, player.cameraYaw);
|
||||
entity.setSlimeSize(8);
|
||||
entity.initCreature();
|
||||
world.spawnEntityInWorld(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class TArmorBase extends ItemArmor
|
||||
//implements ISpecialArmor
|
||||
{
|
||||
Icon[] icons;
|
||||
String[] iconNames = { "wood_helmet" };
|
||||
String[] iconNames = { "wood_boots" };
|
||||
//static Minecraft mc = Minecraft.getMinecraft();
|
||||
//private ModelBiped modelArmor;
|
||||
|
||||
|
@ -23,7 +23,7 @@ public class BattleSign extends Weapon
|
||||
|
||||
public String getToolName ()
|
||||
{
|
||||
return "Battle Sign";
|
||||
return "Battlesign";
|
||||
}
|
||||
|
||||
/*public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer player, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
|
||||
@ -97,13 +97,13 @@ public class BattleSign extends Weapon
|
||||
}*/
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.signHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -13,13 +13,13 @@ public class Broadsword extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.swordBlade;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.wideGuard;
|
||||
}
|
||||
|
@ -166,13 +166,13 @@ public class Chisel extends ToolCore
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.chiselHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -89,13 +89,13 @@ public class Dagger extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.knifeBlade;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.crossbar;
|
||||
}
|
||||
|
@ -1,14 +1,19 @@
|
||||
package mods.tinker.tconstruct.items.tools;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mods.tinker.tconstruct.blocks.logic.EquipLogic;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.crafting.ToolBuilder;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.library.tools.Weapon;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.world.World;
|
||||
@ -48,6 +53,29 @@ public class FryingPan extends Weapon
|
||||
{
|
||||
return "Frying Pan";
|
||||
}
|
||||
|
||||
public void getSubItems (int id, CreativeTabs tab, List list)
|
||||
{
|
||||
super.getSubItems(id, tab, list);
|
||||
|
||||
Item accessory = getAccessoryItem();
|
||||
ItemStack tool = ToolBuilder.instance.buildTool(new ItemStack(getHeadItem(), 1, 2), new ItemStack(getHandleItem(), 1, 16), null, "Bane of Pigs");
|
||||
|
||||
NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool");
|
||||
tags.setInteger("Modifiers", 0);
|
||||
tags.setInteger("Attack", Integer.MAX_VALUE/100);
|
||||
tags.setInteger("TotalDurability", Integer.MAX_VALUE/100);
|
||||
tags.setInteger("BaseDurability", Integer.MAX_VALUE/100);
|
||||
tags.setInteger("MiningSpeed", Integer.MAX_VALUE/100);
|
||||
|
||||
int[] keyPair = new int[] { Integer.MAX_VALUE/100, 0, 0 };
|
||||
tags.setIntArray("Blaze", keyPair);
|
||||
tags.setInteger("Necrotic", Integer.MAX_VALUE/100);
|
||||
tags.setInteger("Effect1", 7);
|
||||
|
||||
tags.setBoolean("Built", true);
|
||||
list.add(tool);
|
||||
}
|
||||
|
||||
public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
|
||||
{
|
||||
@ -109,13 +137,13 @@ public class FryingPan extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.frypanHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -80,13 +80,13 @@ public class Hammer extends HarvestTool
|
||||
}*/
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -51,13 +51,13 @@ public class Hatchet extends HarvestTool
|
||||
static Material[] materials = { Material.wood, Material.leaves, Material.vine, Material.circuits, Material.cactus, Material.pumpkin };
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.axeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -62,13 +62,13 @@ public class Longsword extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.swordBlade;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.handGuard;
|
||||
}
|
||||
|
@ -168,13 +168,13 @@ public class LumberAxe extends HarvestTool
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.lumberHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -63,13 +63,13 @@ public class Mattock extends DualHarvestTool
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.axeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.shovelHead;
|
||||
}
|
||||
|
@ -34,13 +34,13 @@ public class Pickaxe extends HarvestTool
|
||||
static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits };
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.pickaxeHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.binding;
|
||||
}
|
||||
|
@ -32,13 +32,13 @@ public abstract class RangedWeapon extends ToolCore
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.toolRod;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.toolRod;
|
||||
}
|
||||
|
@ -72,13 +72,13 @@ public class Rapier extends Weapon
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.swordBlade;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return TContent.crossbar;
|
||||
}
|
||||
|
@ -36,13 +36,13 @@ public class Shovel extends HarvestTool
|
||||
static Material[] materials = { Material.grass, Material.ground, Material.sand, Material.snow, Material.craftedSnow, Material.clay };
|
||||
|
||||
@Override
|
||||
protected Item getHeadItem ()
|
||||
public Item getHeadItem ()
|
||||
{
|
||||
return TContent.shovelHead;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item getAccessoryItem ()
|
||||
public Item getAccessoryItem ()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class ActiveToolMod
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean afterBlockBreak()
|
||||
public boolean afterBlockBreak() //Unfinished, not called
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -44,7 +44,7 @@ public class ActiveToolMod
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void lateAttackEntity()
|
||||
public void lateAttackEntity() //Unfinished, not called
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.liquids.LiquidStack;
|
||||
|
@ -288,11 +288,16 @@ public class AbilityHelper
|
||||
|
||||
if (ignoreCharge || !damageElectricTool(stack, tags, entity))
|
||||
{
|
||||
boolean damagedTool = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.damageTool(stack, dam, entity));
|
||||
return;
|
||||
if (mod.damageTool(stack, dam, entity))
|
||||
damagedTool = true;
|
||||
}
|
||||
|
||||
if (damagedTool)
|
||||
return;
|
||||
|
||||
int damage = tags.getCompoundTag("InfiTool").getInteger("Damage");
|
||||
int damageTrue = damage + dam;
|
||||
int maxDamage = tags.getCompoundTag("InfiTool").getInteger("TotalDurability");
|
||||
|
@ -4,13 +4,8 @@ import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
@ -19,125 +14,125 @@ import net.minecraftforge.common.MinecraftForge;
|
||||
|
||||
public abstract class DualHarvestTool extends HarvestTool
|
||||
{
|
||||
public DualHarvestTool(int itemID, int baseDamage)
|
||||
{
|
||||
super(itemID, baseDamage);
|
||||
}
|
||||
public DualHarvestTool(int itemID, int baseDamage)
|
||||
{
|
||||
super(itemID, baseDamage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeadType ()
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
@Override
|
||||
public int getHeadType ()
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
World world = player.worldObj;
|
||||
int bID = player.worldObj.getBlockId(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
Block block = Block.blocksList[bID];
|
||||
if (block == null || bID < 1)
|
||||
return false;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int shlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getSecondHarvestType());
|
||||
@Override
|
||||
public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPlayer player)
|
||||
{
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
World world = player.worldObj;
|
||||
int bID = player.worldObj.getBlockId(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
Block block = Block.blocksList[bID];
|
||||
if (block == null || bID < 1)
|
||||
return false;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int shlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getSecondHarvestType());
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel") && shlvl <= tags.getInteger("HarvestLevel2"))
|
||||
{
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, x, y, z, player));
|
||||
cancelHarvest = true;
|
||||
}
|
||||
if (hlvl <= tags.getInteger("HarvestLevel") && shlvl <= tags.getInteger("HarvestLevel2"))
|
||||
{
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, x, y, z, player))
|
||||
cancelHarvest = true;
|
||||
}
|
||||
|
||||
return cancelHarvest;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
onBlockDestroyed(stack, world, bID, x, y, z, player);
|
||||
world.setBlockToAir(x, y, z);
|
||||
if (!world.isRemote)
|
||||
world.playAuxSFX(2001, x, y, z, bID + (meta << 12));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return cancelHarvest;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!player.capabilities.isCreativeMode)
|
||||
onBlockDestroyed(stack, world, bID, x, y, z, player);
|
||||
world.setBlockToAir(x, y, z);
|
||||
if (!world.isRemote)
|
||||
world.playAuxSFX(2001, x, y, z, bID + (meta << 12));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getStrVsBlock (ItemStack stack, Block block, int meta)
|
||||
{
|
||||
@Override
|
||||
public float getStrVsBlock (ItemStack stack, Block block, int meta)
|
||||
{
|
||||
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (tags.getBoolean("Broken"))
|
||||
return 0.1f;
|
||||
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
||||
if (tags.getBoolean("Broken"))
|
||||
return 0.1f;
|
||||
|
||||
Material[] materials = getEffectiveMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed");
|
||||
speed /= 100f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
Material[] materials = getEffectiveMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed");
|
||||
speed /= 100f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
materials = getEffectiveSecondaryMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed2");
|
||||
speed /= 100f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
if (hlvl <= tags.getInteger("HarvestLevel"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
materials = getEffectiveSecondaryMaterials();
|
||||
for (int i = 0; i < materials.length; i++)
|
||||
{
|
||||
if (materials[i] == block.blockMaterial)
|
||||
{
|
||||
float speed = tags.getInteger("MiningSpeed2");
|
||||
speed /= 100f;
|
||||
int hlvl = MinecraftForge.getBlockHarvestLevel(block, meta, getHarvestType());
|
||||
int durability = tags.getInteger("Damage");
|
||||
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
float shoddy = tags.getFloat("Shoddy");
|
||||
speed += shoddy * durability / 100f;
|
||||
|
||||
if (hlvl <= tags.getInteger("HarvestLevel2"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
return super.getStrVsBlock(stack, block, meta);
|
||||
}
|
||||
if (hlvl <= tags.getInteger("HarvestLevel2"))
|
||||
return speed;
|
||||
return 0.1f;
|
||||
}
|
||||
}
|
||||
return super.getStrVsBlock(stack, block, meta);
|
||||
}
|
||||
|
||||
public boolean canHarvestBlock (Block block)
|
||||
{
|
||||
if (block.blockMaterial.isToolNotRequired())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
for (Material m : getEffectiveMaterials())
|
||||
{
|
||||
if (m == block.blockMaterial)
|
||||
return true;
|
||||
}
|
||||
for (Material m : getEffectiveSecondaryMaterials())
|
||||
{
|
||||
if (m == block.blockMaterial)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public boolean canHarvestBlock (Block block)
|
||||
{
|
||||
if (block.blockMaterial.isToolNotRequired())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
for (Material m : getEffectiveMaterials())
|
||||
{
|
||||
if (m == block.blockMaterial)
|
||||
return true;
|
||||
}
|
||||
for (Material m : getEffectiveSecondaryMaterials())
|
||||
{
|
||||
if (m == block.blockMaterial)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] toolCategories ()
|
||||
{
|
||||
return new String[] { "harvest", "dualharvest" };
|
||||
}
|
||||
@Override
|
||||
public String[] toolCategories ()
|
||||
{
|
||||
return new String[] { "harvest", "dualharvest" };
|
||||
}
|
||||
|
||||
protected abstract Material[] getEffectiveSecondaryMaterials ();
|
||||
protected abstract Material[] getEffectiveSecondaryMaterials ();
|
||||
|
||||
protected abstract String getSecondHarvestType ();
|
||||
protected abstract String getSecondHarvestType ();
|
||||
}
|
||||
|
@ -1,17 +1,11 @@
|
||||
package mods.tinker.tconstruct.library.tools;
|
||||
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.ActiveToolMod;
|
||||
import mods.tinker.tconstruct.library.TConstructRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
|
@ -15,16 +15,12 @@ import mods.tinker.tconstruct.library.crafting.ToolBuilder;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.texture.IconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.world.World;
|
||||
@ -453,11 +449,11 @@ public abstract class ToolCore extends Item implements ICustomElectricItem, IBox
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract Item getHeadItem ();
|
||||
public abstract Item getHeadItem ();
|
||||
|
||||
protected abstract Item getAccessoryItem ();
|
||||
public abstract Item getAccessoryItem ();
|
||||
|
||||
protected Item getHandleItem ()
|
||||
public Item getHandleItem ()
|
||||
{
|
||||
return TConstructRegistry.toolRod;
|
||||
}
|
||||
@ -484,7 +480,7 @@ public abstract class ToolCore extends Item implements ICustomElectricItem, IBox
|
||||
boolean cancelHarvest = false;
|
||||
for (ActiveToolMod mod : TConstructRegistry.activeModifiers)
|
||||
{
|
||||
if (mod.beforeBlockBreak(this, stack, x, y, z, player));
|
||||
if (mod.beforeBlockBreak(this, stack, x, y, z, player))
|
||||
cancelHarvest = true;
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,9 @@
|
||||
package mods.tinker.tconstruct.library.tools;
|
||||
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.EnumAction;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
@ -35,7 +35,7 @@ public class TActiveOmniMod extends ActiveToolMod
|
||||
if (tags.hasKey("Moss"))
|
||||
{
|
||||
int chance = tags.getInteger("Moss");
|
||||
int check = world.canBlockSeeTheSky((int) entity.posX, (int) entity.posY, (int) entity.posZ) ? 750 : 1500;
|
||||
int check = world.canBlockSeeTheSky((int) entity.posX, (int) entity.posY, (int) entity.posZ) ? 350 : 1150;
|
||||
if (random.nextInt(check) < chance)
|
||||
{
|
||||
AbilityHelper.healTool(stack, 1, (EntityLiving) entity, true);
|
||||
|
@ -144,8 +144,12 @@ public class PHConstruct
|
||||
slimefood = config.getItem("Patterns and Misc", "Strange Food", 14103).getInt(14103);
|
||||
oreChunks = config.getItem("Patterns and Misc", "Ore Chunks", 14104).getInt(14104);
|
||||
|
||||
heartContainer = config.getItem("Equipables", "Heart Canister", 14105).getInt(14105);
|
||||
heartCanister = config.getItem("Equipables", "Heart Canister", 14105).getInt(14105);
|
||||
heavyHelmet = config.getItem("Equipables", "Heavy Helmet", 14106).getInt(14106);
|
||||
diamondApple = config.getItem("Patterns and Misc", "Jeweled Apple", 14107).getInt(14107);
|
||||
heavyChestplate = config.getItem("Equipables", "Heavy Chestplate", 14108).getInt(14108);
|
||||
heavyPants = config.getItem("Equipables", "Heavy Pants", 14109).getInt(14109);
|
||||
heavyBoots = config.getItem("Equipables", "Heavy Boots", 14110).getInt(14110);
|
||||
|
||||
boolean ic2 = true;
|
||||
boolean xycraft = true;
|
||||
@ -282,6 +286,7 @@ public class PHConstruct
|
||||
public static int oreChunks;
|
||||
|
||||
//Food
|
||||
public static int diamondApple;
|
||||
public static int slimefood;
|
||||
|
||||
//Tools
|
||||
@ -332,7 +337,7 @@ public class PHConstruct
|
||||
public static int heavyPants;
|
||||
public static int heavyBoots;
|
||||
|
||||
public static int heartContainer;
|
||||
public static int heartCanister;
|
||||
|
||||
//Ore values
|
||||
public static boolean generateCopper;
|
||||
|
@ -1,7 +1,9 @@
|
||||
package mods.tinker.tconstruct.util;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import mods.tinker.tconstruct.library.tools.AbilityHelper;
|
||||
import mods.tinker.tconstruct.util.player.TPlayerStats;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -19,18 +21,22 @@ public class TCraftingHandler implements ICraftingHandler
|
||||
int itemID = item.getItem().itemID;
|
||||
if (itemID == TContent.toolStationWood.blockID)
|
||||
{
|
||||
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
|
||||
NBTTagCompound tags = player.getEntityData().getCompoundTag("TConstruct");
|
||||
if (!tags.getBoolean("materialManual"))
|
||||
if (!tags.getBoolean("materialManual") || !stats.materialManual)
|
||||
{
|
||||
stats.materialManual = true;
|
||||
tags.setBoolean("materialManual", true);
|
||||
AbilityHelper.spawnItemAtPlayer(player, new ItemStack(TContent.manualBook, 1, 1));
|
||||
}
|
||||
}
|
||||
if (itemID == TContent.smeltery.blockID || itemID == TContent.lavaTank.blockID)
|
||||
{
|
||||
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
|
||||
NBTTagCompound tags = player.getEntityData().getCompoundTag("TConstruct");
|
||||
if (!tags.getBoolean("smelteryManual"))
|
||||
if (!tags.getBoolean("smelteryManual") || !stats.smelteryManual)
|
||||
{
|
||||
stats.smelteryManual = true;
|
||||
tags.setBoolean("smelteryManual", true);
|
||||
AbilityHelper.spawnItemAtPlayer(player, new ItemStack(TContent.manualBook, 1, 2));
|
||||
}
|
||||
|
@ -17,17 +17,15 @@ import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.EntityCreeper;
|
||||
import net.minecraft.entity.monster.EntityGhast;
|
||||
import net.minecraft.entity.monster.EntitySkeleton;
|
||||
import net.minecraft.entity.monster.EntitySpider;
|
||||
import net.minecraft.entity.monster.IMob;
|
||||
import net.minecraft.entity.passive.EntityChicken;
|
||||
import net.minecraft.entity.passive.EntityCow;
|
||||
import net.minecraft.entity.passive.EntityPig;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EntityDamageSource;
|
||||
import net.minecraft.util.EnumMovingObjectType;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.client.event.sound.SoundLoadEvent;
|
||||
import net.minecraftforge.event.Event.Result;
|
||||
import net.minecraftforge.event.ForgeSubscribe;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
@ -37,8 +35,6 @@ import net.minecraftforge.event.entity.player.FillBucketEvent;
|
||||
import net.minecraftforge.liquids.LiquidStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class TEventHandler
|
||||
{
|
||||
@ -60,6 +56,14 @@ public class TEventHandler
|
||||
@ForgeSubscribe
|
||||
public void onLivingDrop (LivingDropsEvent event)
|
||||
{
|
||||
if (random.nextInt(500) == 0 && event.entityLiving instanceof IMob && event.entityLiving.dimension == 0)
|
||||
{
|
||||
ItemStack dropStack = new ItemStack(TContent.heartCanister, 1, 1);
|
||||
EntityItem entityitem = new EntityItem(event.entityLiving.worldObj, event.entityLiving.posX, event.entityLiving.posY, event.entityLiving.posZ, dropStack);
|
||||
entityitem.delayBeforeCanPickup = 10;
|
||||
event.drops.add(entityitem);
|
||||
}
|
||||
|
||||
if (!event.entityLiving.isChild())
|
||||
{
|
||||
if (event.entityLiving.getClass() == EntityCow.class)
|
||||
@ -112,12 +116,15 @@ public class TEventHandler
|
||||
|
||||
@ForgeSubscribe
|
||||
public void onLivingSpawn (LivingSpawnEvent.SpecialSpawn event)
|
||||
{
|
||||
if (event.entityLiving instanceof EntityCreeper && random.nextInt(500) == 0)
|
||||
{
|
||||
if (event.entityLiving.getClass() == EntitySpider.class && random.nextInt(100) == 0)
|
||||
{
|
||||
EntityPig pig = new EntityPig(event.entityLiving.worldObj);
|
||||
spawnEntity(event.entityLiving.posX, event.entityLiving.posY+1, event.entityLiving.posZ, pig, event.entityLiving.worldObj);
|
||||
event.entityLiving.mountEntity(pig);
|
||||
EntityCreeper creeper = new EntityCreeper(event.entityLiving.worldObj);
|
||||
spawnEntity(event.entityLiving.posX, event.entityLiving.posY+1, event.entityLiving.posZ, creeper, event.entityLiving.worldObj);
|
||||
EntitySkeleton skeleton = new EntitySkeleton(event.entityLiving.worldObj);
|
||||
spawnEntity(event.entityLiving.posX, event.entityLiving.posY+1, event.entityLiving.posZ, skeleton, event.entityLiving.worldObj);
|
||||
skeleton.mountEntity(creeper);
|
||||
creeper.mountEntity(event.entityLiving);
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,7 +133,6 @@ public class TEventHandler
|
||||
if (!world.isRemote)
|
||||
{
|
||||
entity.setPosition(x, y, z);
|
||||
//entity.setAngles(player.cameraYaw, player.cameraYaw);
|
||||
((EntityLiving) entity).initCreature();
|
||||
world.spawnEntityInWorld(entity);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package mods.tinker.tconstruct.util.player;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import mods.tinker.tconstruct.TConstruct;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
@ -54,6 +55,7 @@ public class ArmorExtended implements IInventory
|
||||
{
|
||||
inventory[slot] = null;
|
||||
}
|
||||
recalculateHealth();
|
||||
return split;
|
||||
}
|
||||
else
|
||||
@ -77,6 +79,7 @@ public class ArmorExtended implements IInventory
|
||||
{
|
||||
itemstack.stackSize = getInventoryStackLimit();
|
||||
}
|
||||
recalculateHealth();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -100,9 +103,23 @@ public class ArmorExtended implements IInventory
|
||||
@Override
|
||||
public void onInventoryChanged ()
|
||||
{
|
||||
if (inventory[6] != null && inventory[6].getItem() == TContent.heartContainer)
|
||||
recalculateHealth();
|
||||
}
|
||||
|
||||
public void recalculateHealth()
|
||||
{
|
||||
if (inventory[6] != null && inventory[6].getItem() == TContent.heartCanister)
|
||||
{
|
||||
parent.get().maxHealth = 40;
|
||||
ItemStack stack = inventory[6];
|
||||
int meta = stack.getItemDamage();
|
||||
if (meta == 2)
|
||||
{
|
||||
EntityPlayer player = parent.get();
|
||||
TPlayerStats stats = TConstruct.playerTracker.getPlayerStats(player.username);
|
||||
int bonusHP = stack.stackSize * 2;
|
||||
stats.bonusHealth = bonusHP;
|
||||
player.maxHealth = 20 + bonusHP;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -70,7 +70,6 @@ public class TFoodStats extends FoodStats
|
||||
if (this.foodTimer >= 80)
|
||||
{
|
||||
player.heal(1);
|
||||
//player.setEntityHealth(player.getHealth() + 1);
|
||||
this.foodTimer = 0;
|
||||
}
|
||||
}
|
||||
|
@ -44,13 +44,13 @@ public class TPlayerHandler implements IPlayerTracker
|
||||
stats.armor.loadFromNBT(entityplayer);
|
||||
|
||||
stats.level = entityplayer.experienceLevel;
|
||||
stats.health = entityplayer.maxHealth;
|
||||
stats.hunger = entityplayer.getFoodStats().getFoodLevel();
|
||||
stats.beginnerManual = tags.getCompoundTag("TConstruct").getBoolean("beginnerManual");
|
||||
stats.materialManual = tags.getCompoundTag("TConstruct").getBoolean("materialManual");
|
||||
stats.smelteryManual = tags.getCompoundTag("TConstruct").getBoolean("smelteryManual");
|
||||
if (!stats.beginnerManual)
|
||||
{
|
||||
stats.beginnerManual = true;
|
||||
tags.getCompoundTag("TConstruct").setBoolean("beginnerManual", true);
|
||||
ItemStack diary = new ItemStack(TContent.manualBook);
|
||||
if (!entityplayer.inventory.addItemStackToInventory(diary))
|
||||
@ -79,7 +79,7 @@ public class TPlayerHandler implements IPlayerTracker
|
||||
if (player != null)
|
||||
{
|
||||
TPlayerStats stats = getPlayerStats(player.username);
|
||||
if (stats != null)
|
||||
if (stats != null && stats.armor != null)
|
||||
{
|
||||
stats.armor.saveToNBT(player);
|
||||
if (clean)
|
||||
@ -98,6 +98,7 @@ public class TPlayerHandler implements IPlayerTracker
|
||||
//Boom!
|
||||
TPlayerStats stats = getPlayerStats(entityplayer.username);
|
||||
stats.player = new WeakReference<EntityPlayer>(entityplayer);
|
||||
stats.armor.recalculateHealth();
|
||||
|
||||
TFoodStats food = new TFoodStats();
|
||||
entityplayer.foodStats = food;
|
||||
|
@ -11,7 +11,8 @@ public class TPlayerStats
|
||||
{
|
||||
public WeakReference<EntityPlayer> player;
|
||||
public int level;
|
||||
public int health;
|
||||
public int levelHealth;
|
||||
public int bonusHealth;
|
||||
public int hunger;
|
||||
public boolean beginnerManual;
|
||||
public boolean materialManual;
|
||||
|
@ -19,6 +19,27 @@ public class OverworldProvider extends WorldProvider
|
||||
return this.terrainType.hasVoidParticles(this.hasNoSky);
|
||||
}
|
||||
|
||||
public float calculateCelestialAngle(long worldtime, float par3)
|
||||
{
|
||||
int timeOfDay = 18000;
|
||||
float f1 = ((float)timeOfDay + par3) / 24000.0F - 0.25F;
|
||||
|
||||
if (f1 < 0.0F)
|
||||
{
|
||||
++f1;
|
||||
}
|
||||
|
||||
if (f1 > 1.0F)
|
||||
{
|
||||
--f1;
|
||||
}
|
||||
|
||||
float f2 = f1;
|
||||
f1 = 1.0F - (float)((Math.cos((double)f1 * Math.PI) + 1.0D) / 2.0D);
|
||||
f1 = f2 + (f1 - f2) / 3.0F;
|
||||
return f1;
|
||||
}
|
||||
|
||||
/*public float calculateCelestialAngle(long worldtime, float par3)
|
||||
{
|
||||
int timeOfDay = (int)(worldtime % 43200L);
|
||||
|
@ -3,8 +3,10 @@ package mods.tinker.tconstruct.worldgen.village;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import mods.tinker.tconstruct.blocks.logic.PatternChestLogic;
|
||||
import mods.tinker.tconstruct.common.TContent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.WeightedRandomChestContent;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.structure.ComponentVillage;
|
||||
import net.minecraft.world.gen.structure.ComponentVillageStartPiece;
|
||||
@ -13,133 +15,163 @@ import net.minecraft.world.gen.structure.StructureComponent;
|
||||
|
||||
public class ComponentToolWorkshop extends ComponentVillage
|
||||
{
|
||||
private int averageGroundLevel = -1;
|
||||
private int averageGroundLevel = -1;
|
||||
|
||||
public ComponentToolWorkshop(ComponentVillageStartPiece par1ComponentVillageStartPiece, int par2, Random par3Random, StructureBoundingBox par4StructureBoundingBox, int par5)
|
||||
{
|
||||
super(par1ComponentVillageStartPiece, par2);
|
||||
this.coordBaseMode = par5;
|
||||
this.boundingBox = par4StructureBoundingBox;
|
||||
}
|
||||
public ComponentToolWorkshop(ComponentVillageStartPiece par1ComponentVillageStartPiece, int par2, Random par3Random, StructureBoundingBox par4StructureBoundingBox, int par5)
|
||||
{
|
||||
super(par1ComponentVillageStartPiece, par2);
|
||||
this.coordBaseMode = par5;
|
||||
this.boundingBox = par4StructureBoundingBox;
|
||||
}
|
||||
|
||||
public static ComponentToolWorkshop buildComponent(ComponentVillageStartPiece villagePiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 7, 6, 7, p4);
|
||||
return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(pieces, structureboundingbox) == null ? new ComponentToolWorkshop(villagePiece, p5, random, structureboundingbox, p4) : null;
|
||||
}
|
||||
public static ComponentToolWorkshop buildComponent (ComponentVillageStartPiece villagePiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5)
|
||||
{
|
||||
StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 7, 6, 7, p4);
|
||||
return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(pieces, structureboundingbox) == null ? new ComponentToolWorkshop(villagePiece, p5, random,
|
||||
structureboundingbox, p4) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it closes Mineshafts at
|
||||
* the end, it adds Fences...
|
||||
*/
|
||||
public boolean addComponentParts(World world, Random random, StructureBoundingBox sbb)
|
||||
{
|
||||
if (this.averageGroundLevel < 0)
|
||||
{
|
||||
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
|
||||
/**
|
||||
* second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it closes Mineshafts at
|
||||
* the end, it adds Fences...
|
||||
*/
|
||||
public boolean addComponentParts (World world, Random random, StructureBoundingBox sbb)
|
||||
{
|
||||
if (this.averageGroundLevel < 0)
|
||||
{
|
||||
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
|
||||
|
||||
if (this.averageGroundLevel < 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (this.averageGroundLevel < 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + 4, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* arguments: (World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int
|
||||
* maxZ, int placeBlockId, int replaceBlockId, boolean alwaysreplace)
|
||||
*/
|
||||
|
||||
this.fillWithBlocks(world, sbb, 0, 0, 0, 6, 0, 6, Block.cobblestone.blockID, Block.cobblestone.blockID, false); //Base
|
||||
this.fillWithBlocks(world, sbb, 0, 5, 0, 6, 5, 6, Block.fence.blockID, Block.fence.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 0, 1, 5, 0, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 2, 0, 2, 4, 0, 4, Block.cloth.blockID, Block.cloth.blockID, false);
|
||||
|
||||
//this.fillWithBlocks(world, sbb, 0, 5, 0, 6, 5, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 0, 0, 4, 0, Block.wood.blockID, Block.wood.blockID, false); //Edges
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 6, 0, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 0, 6, 4, 0, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 6, 6, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 1, 0, 1, 5, Block.planks.blockID, Block.planks.blockID, false); //Walls
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 0, 5, 1, 0, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 1, 6, 1, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 6, 5, 1, 6, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
this.fillWithBlocks(world, sbb, 0, 3, 1, 0, 3, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 3, 0, 5, 3, 0, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 3, 1, 6, 3, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 3, 6, 5, 3, 6, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
this.fillWithBlocks(world, sbb, 0, 4, 1, 0, 4, 5, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 0, 5, 4, 0, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 4, 1, 6, 4, 5, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 6, 5, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.boundingBox.offset(0, this.averageGroundLevel - this.boundingBox.maxY + 4, 0);
|
||||
}
|
||||
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 1, 5, 5, 5, 0, 0, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 1, 5, 4, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
//world, blockID, metadata, x, y, z, bounds
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 1, 2, 0, sbb);//Glass and door
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 2, 2, 0, sbb);
|
||||
this.placeDoorAtCurrentPosition(world, sbb, random, 3, 1, 0, this.getMetadataWithOffset(Block.doorWood.blockID, 1));
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 4, 2, 0, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 5, 2, 0, sbb);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 1, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 2, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 3, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 4, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 5, 2, 6, sbb);
|
||||
/**
|
||||
* arguments: (World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int
|
||||
* maxZ, int placeBlockId, int replaceBlockId, boolean alwaysreplace)
|
||||
*/
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 1, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 0, 2, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 5, sbb);
|
||||
this.fillWithBlocks(world, sbb, 0, 0, 0, 6, 0, 6, Block.cobblestone.blockID, Block.cobblestone.blockID, false); //Base
|
||||
this.fillWithBlocks(world, sbb, 0, 5, 0, 6, 5, 6, Block.fence.blockID, Block.fence.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 0, 1, 5, 0, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 2, 0, 2, 4, 0, 4, Block.cloth.blockID, Block.cloth.blockID, false);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 1, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 6, 2, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 5, sbb);
|
||||
|
||||
int i = this.getMetadataWithOffset(Block.ladder.blockID, 3); //Ladders
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 1, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 2, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 3, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 4, 5, sbb);
|
||||
//this.fillWithBlocks(world, sbb, 0, 5, 0, 6, 5, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 0, 1, 1, 1, sbb); //Inside
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 5, 1, 1, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 1, 1, 1, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.workbench.blockID, 0, 1, 1, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 10, 1, 1, 5, sbb);
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 0, 0, 4, 0, Block.wood.blockID, Block.wood.blockID, false); //Edges
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 6, 0, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 0, 6, 4, 0, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 6, 6, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.chest.blockID, i, 4, 1, 5, sbb);
|
||||
i = this.getMetadataWithOffset(Block.pistonBase.blockID, 3);
|
||||
this.placeBlockAtCurrentPosition(world, Block.pistonBase.blockID, i, 5, 1, 5, sbb);
|
||||
|
||||
for (int l = 0; l < 6; ++l)
|
||||
{
|
||||
for (int i1 = 0; i1 < 9; ++i1)
|
||||
{
|
||||
this.clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
|
||||
this.fillCurrentPositionBlocksDownwards(world, Block.cobblestone.blockID, 0, i1, -1, l, sbb);
|
||||
}
|
||||
}
|
||||
this.spawnVillagers(world, sbb, 3, 1, 3, 1);
|
||||
this.fillWithBlocks(world, sbb, 0, 1, 1, 0, 1, 5, Block.planks.blockID, Block.planks.blockID, false); //Walls
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 0, 5, 1, 0, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 1, 1, 6, 1, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 6, 5, 1, 6, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
this.fillWithBlocks(world, sbb, 0, 3, 1, 0, 3, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 3, 0, 5, 3, 0, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 3, 1, 6, 3, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 3, 6, 5, 3, 6, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
/**
|
||||
* Returns the villager type to spawn in this component, based on the number of villagers already spawned.
|
||||
*/
|
||||
protected int getVillagerType(int par1)
|
||||
{
|
||||
return 78943;
|
||||
}
|
||||
this.fillWithBlocks(world, sbb, 0, 4, 1, 0, 4, 5, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 0, 5, 4, 0, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 6, 4, 1, 6, 4, 5, Block.wood.blockID, Block.wood.blockID, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 6, 5, 4, 6, Block.wood.blockID, Block.wood.blockID, false);
|
||||
|
||||
this.fillWithBlocks(world, sbb, 1, 1, 1, 5, 5, 5, 0, 0, false);
|
||||
this.fillWithBlocks(world, sbb, 1, 4, 1, 5, 4, 5, Block.planks.blockID, Block.planks.blockID, false);
|
||||
|
||||
//world, blockID, metadata, x, y, z, bounds
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 1, 2, 0, sbb);//Glass and door
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 2, 2, 0, sbb);
|
||||
this.placeDoorAtCurrentPosition(world, sbb, random, 3, 1, 0, this.getMetadataWithOffset(Block.doorWood.blockID, 1));
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 4, 2, 0, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 5, 2, 0, sbb);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 1, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 2, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 3, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 4, 2, 6, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 5, 2, 6, sbb);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 1, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 0, 2, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 0, 2, 5, sbb);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 1, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.planks.blockID, 0, 6, 2, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.thinGlass.blockID, 0, 6, 2, 5, sbb);
|
||||
|
||||
int i = this.getMetadataWithOffset(Block.ladder.blockID, 3); //Ladders
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 1, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 2, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 3, 5, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.ladder.blockID, i, 3, 4, 5, sbb);
|
||||
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 0, 1, 1, 1, sbb); //Inside
|
||||
this.generateStructureChestContents(world, sbb, random, 1, 1, 2, TContent.tinkerHousePatterns.getItems(random), TContent.tinkerHousePatterns.getCount(random));
|
||||
//this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 5, 1, 1, 2, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 1, 1, 1, 3, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, Block.workbench.blockID, 0, 1, 1, 4, sbb);
|
||||
this.placeBlockAtCurrentPosition(world, TContent.toolStationWood.blockID, 10, 1, 1, 5, sbb);
|
||||
|
||||
//ChestGenHooks info = ChestGenHooks.getInfo("TinkerHouse");
|
||||
|
||||
this.generateStructureChestContents(world, sbb, random, 4, 1, 5, TContent.tinkerHouseChest.getItems(random), TContent.tinkerHouseChest.getCount(random));
|
||||
//this.placeBlockAtCurrentPosition(world, Block.chest.blockID, i, 4, 1, 5, sbb);
|
||||
i = this.getMetadataWithOffset(Block.pistonBase.blockID, 3);
|
||||
this.placeBlockAtCurrentPosition(world, Block.pistonBase.blockID, i, 5, 1, 5, sbb);
|
||||
|
||||
for (int l = 0; l < 6; ++l)
|
||||
{
|
||||
for (int i1 = 0; i1 < 9; ++i1)
|
||||
{
|
||||
this.clearCurrentPositionBlocksUpwards(world, i1, 9, l, sbb);
|
||||
this.fillCurrentPositionBlocksDownwards(world, Block.cobblestone.blockID, 0, i1, -1, l, sbb);
|
||||
}
|
||||
}
|
||||
this.spawnVillagers(world, sbb, 3, 1, 3, 1);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected boolean generateStructurePatternChestContents (World world, StructureBoundingBox par2StructureBoundingBox, Random random, int x, int y, int z,
|
||||
WeightedRandomChestContent[] content, int par8)
|
||||
{
|
||||
int posX = this.getXWithOffset(x, z);
|
||||
int posY = this.getYWithOffset(y);
|
||||
int posZ = this.getZWithOffset(x, z);
|
||||
|
||||
if (par2StructureBoundingBox.isVecInside(posX, posY, posZ) && world.getBlockId(posX, posY, posZ) != Block.chest.blockID)
|
||||
{
|
||||
world.setBlock(posX, posY, posZ, TContent.toolStationWood.blockID, 5, 2);
|
||||
PatternChestLogic logic = (PatternChestLogic) world.getBlockTileEntity(posX, posY, posZ);
|
||||
|
||||
if (logic != null)
|
||||
{
|
||||
WeightedRandomChestContent.generateChestContents(random, content, logic, par8);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the villager type to spawn in this component, based on the number of villagers already spawned.
|
||||
*/
|
||||
protected int getVillagerType (int par1)
|
||||
{
|
||||
return 78943;
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ public class VillageSmelteryHandler implements IVillageCreationHandler
|
||||
@Override
|
||||
public StructureVillagePieceWeight getVillagePieceWeight (Random random, int i)
|
||||
{
|
||||
return new StructureVillagePieceWeight(ComponentSmeltery.class, 9, i + 1);
|
||||
return new StructureVillagePieceWeight(ComponentSmeltery.class, 9, i + random.nextInt(10) == 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,7 @@ public class VillageToolStationHandler implements IVillageCreationHandler
|
||||
@Override
|
||||
public StructureVillagePieceWeight getVillagePieceWeight (Random random, int i)
|
||||
{
|
||||
return new StructureVillagePieceWeight(ComponentToolWorkshop.class, 30, i + 2);
|
||||
return new StructureVillagePieceWeight(ComponentToolWorkshop.class, 30, i + random.nextInt(4));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
BIN
mods/tinker/textures/items/apple_diamond.png
Normal file
BIN
mods/tinker/textures/items/apple_diamond.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 451 B |
BIN
mods/tinker/textures/items/miniheart_red.png
Normal file
BIN
mods/tinker/textures/items/miniheart_red.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 419 B |
Binary file not shown.
Before Width: | Height: | Size: 407 B |
BIN
spritesheets/arrows.png
Normal file
BIN
spritesheets/arrows.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
@ -1,6 +1,6 @@
|
||||
package test;
|
||||
|
||||
import mods.tinker.tconstruct.entity.SlimeClone;
|
||||
import mods.tinker.tconstruct.entity.Crystal;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
@ -37,7 +37,7 @@ public class XinStick extends Item
|
||||
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);*/
|
||||
spawnEntity(player.posX, player.posY+1, player.posZ, new SlimeClone(world, "Minalien"), world, player);
|
||||
spawnEntity(player.posX, player.posY+1, player.posZ, new Crystal(world), world, player);
|
||||
//System.out.println("Health! "+player.getHealth());
|
||||
//healPlayer(player);
|
||||
//removeChunk(world, player.posX, player.posZ);
|
||||
@ -79,6 +79,7 @@ public class XinStick extends Item
|
||||
{
|
||||
entity.setPosition(x, y, z);
|
||||
entity.setAngles(player.cameraYaw, player.cameraYaw);
|
||||
//((BlueSlime) entity).setSlimeSize(8);
|
||||
((EntityLiving) entity).initCreature();
|
||||
world.spawnEntityInWorld(entity);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user