base mod created
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
package net.minecraft.tileentity;
|
||||
|
||||
import java.util.Random;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ContainerEnchantment;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ITickable;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraft.util.text.TextComponentTranslation;
|
||||
import net.minecraft.world.IInteractionObject;
|
||||
|
||||
public class TileEntityEnchantmentTable extends TileEntity implements ITickable, IInteractionObject
|
||||
{
|
||||
public int tickCount;
|
||||
public float pageFlip;
|
||||
public float pageFlipPrev;
|
||||
public float flipT;
|
||||
public float flipA;
|
||||
public float bookSpread;
|
||||
public float bookSpreadPrev;
|
||||
public float bookRotation;
|
||||
public float bookRotationPrev;
|
||||
public float tRot;
|
||||
private static final Random rand = new Random();
|
||||
private String customName;
|
||||
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound compound)
|
||||
{
|
||||
super.writeToNBT(compound);
|
||||
|
||||
if (this.hasCustomName())
|
||||
{
|
||||
compound.setString("CustomName", this.customName);
|
||||
}
|
||||
|
||||
return compound;
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound compound)
|
||||
{
|
||||
super.readFromNBT(compound);
|
||||
|
||||
if (compound.hasKey("CustomName", 8))
|
||||
{
|
||||
this.customName = compound.getString("CustomName");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Like the old updateEntity(), except more generic.
|
||||
*/
|
||||
public void update()
|
||||
{
|
||||
this.bookSpreadPrev = this.bookSpread;
|
||||
this.bookRotationPrev = this.bookRotation;
|
||||
EntityPlayer entityplayer = this.world.getClosestPlayer((double)((float)this.pos.getX() + 0.5F), (double)((float)this.pos.getY() + 0.5F), (double)((float)this.pos.getZ() + 0.5F), 3.0D, false);
|
||||
|
||||
if (entityplayer != null)
|
||||
{
|
||||
double d0 = entityplayer.posX - (double)((float)this.pos.getX() + 0.5F);
|
||||
double d1 = entityplayer.posZ - (double)((float)this.pos.getZ() + 0.5F);
|
||||
this.tRot = (float)MathHelper.atan2(d1, d0);
|
||||
this.bookSpread += 0.1F;
|
||||
|
||||
if (this.bookSpread < 0.5F || rand.nextInt(40) == 0)
|
||||
{
|
||||
float f1 = this.flipT;
|
||||
|
||||
while (true)
|
||||
{
|
||||
this.flipT += (float)(rand.nextInt(4) - rand.nextInt(4));
|
||||
|
||||
if (f1 != this.flipT)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.tRot += 0.02F;
|
||||
this.bookSpread -= 0.1F;
|
||||
}
|
||||
|
||||
while (this.bookRotation >= (float)Math.PI)
|
||||
{
|
||||
this.bookRotation -= ((float)Math.PI * 2F);
|
||||
}
|
||||
|
||||
while (this.bookRotation < -(float)Math.PI)
|
||||
{
|
||||
this.bookRotation += ((float)Math.PI * 2F);
|
||||
}
|
||||
|
||||
while (this.tRot >= (float)Math.PI)
|
||||
{
|
||||
this.tRot -= ((float)Math.PI * 2F);
|
||||
}
|
||||
|
||||
while (this.tRot < -(float)Math.PI)
|
||||
{
|
||||
this.tRot += ((float)Math.PI * 2F);
|
||||
}
|
||||
|
||||
float f2;
|
||||
|
||||
for (f2 = this.tRot - this.bookRotation; f2 >= (float)Math.PI; f2 -= ((float)Math.PI * 2F))
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (f2 < -(float)Math.PI)
|
||||
{
|
||||
f2 += ((float)Math.PI * 2F);
|
||||
}
|
||||
|
||||
this.bookRotation += f2 * 0.4F;
|
||||
this.bookSpread = MathHelper.clamp(this.bookSpread, 0.0F, 1.0F);
|
||||
++this.tickCount;
|
||||
this.pageFlipPrev = this.pageFlip;
|
||||
float f = (this.flipT - this.pageFlip) * 0.4F;
|
||||
float f3 = 0.2F;
|
||||
f = MathHelper.clamp(f, -0.2F, 0.2F);
|
||||
this.flipA += (f - this.flipA) * 0.9F;
|
||||
this.pageFlip += this.flipA;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of this object. For players this returns their username
|
||||
*/
|
||||
public String getName()
|
||||
{
|
||||
return this.hasCustomName() ? this.customName : "container.enchant";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this thing is named
|
||||
*/
|
||||
public boolean hasCustomName()
|
||||
{
|
||||
return this.customName != null && !this.customName.isEmpty();
|
||||
}
|
||||
|
||||
public void setCustomName(String customNameIn)
|
||||
{
|
||||
this.customName = customNameIn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the formatted ChatComponent that will be used for the sender's username in chat
|
||||
*/
|
||||
public ITextComponent getDisplayName()
|
||||
{
|
||||
return (ITextComponent)(this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName(), new Object[0]));
|
||||
}
|
||||
|
||||
public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn)
|
||||
{
|
||||
return new ContainerEnchantment(playerInventory, this.world, this.pos);
|
||||
}
|
||||
|
||||
public String getGuiID()
|
||||
{
|
||||
return "minecraft:enchanting_table";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user