99 lines
2.9 KiB
Java
Executable file
99 lines
2.9 KiB
Java
Executable file
package common.item.tool;
|
|
|
|
import java.util.Collection;
|
|
import java.util.Map;
|
|
|
|
import common.collect.Maps;
|
|
import common.color.TextColor;
|
|
import common.entity.npc.EntityNPC;
|
|
import common.entity.projectile.EntityDie;
|
|
import common.init.SoundEvent;
|
|
import common.item.CheatTab;
|
|
import common.item.Item;
|
|
import common.item.ItemStack;
|
|
import common.model.Model;
|
|
import common.model.ModelProvider;
|
|
import common.model.Transform;
|
|
import common.tileentity.TileEntity;
|
|
import common.util.BlockPos;
|
|
import common.util.Facing;
|
|
import common.util.Pair;
|
|
import common.util.Vec3;
|
|
import common.world.World;
|
|
|
|
public class ItemDie extends Item
|
|
{
|
|
public static final Pair<Integer, TextColor>[] DIE_SIDES = new Pair[] {
|
|
new Pair(4, TextColor.DGREEN),
|
|
new Pair(6, TextColor.NEON),
|
|
new Pair(8, TextColor.DMAGENTA),
|
|
new Pair(10, TextColor.MAGENTA),
|
|
new Pair(12, TextColor.DRED),
|
|
new Pair(20, TextColor.ORANGE)
|
|
};
|
|
public static final Map<Integer, ItemDie> DICE = Maps.newTreeMap();
|
|
|
|
private final int sides;
|
|
private final TextColor color;
|
|
|
|
public static final ItemDie getBySides(int sides) {
|
|
ItemDie die = DICE.get(sides);
|
|
return die == null ? DICE.get(6) : die;
|
|
}
|
|
|
|
public static Collection<ItemDie> getDieItems() {
|
|
return DICE.values();
|
|
}
|
|
|
|
public ItemDie(int sides, TextColor color)
|
|
{
|
|
this.sides = sides;
|
|
this.color = color;
|
|
this.setTab(CheatTab.TOOLS);
|
|
this.setDisplay("Würfel W" + this.sides);
|
|
DICE.put(sides, this);
|
|
}
|
|
|
|
public int getSides() {
|
|
return this.sides;
|
|
}
|
|
|
|
public TextColor getDieColor() {
|
|
return this.color;
|
|
}
|
|
|
|
public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityNPC playerIn)
|
|
{
|
|
// if (!playerIn.creative)
|
|
// {
|
|
itemStackIn.decrSize();
|
|
// }
|
|
|
|
worldIn.playSoundAtEntity(playerIn, SoundEvent.THROW, 0.5F);
|
|
|
|
if (!worldIn.client)
|
|
{
|
|
worldIn.spawnEntityInWorld(new EntityDie(worldIn, playerIn, this.sides, false)); // playerIn.creative));
|
|
}
|
|
|
|
// playerIn.triggerAchievement(StatRegistry.objectUseStats[ItemRegistry.getIdFromItem(this)]);
|
|
return itemStackIn;
|
|
}
|
|
|
|
public Transform getTransform() {
|
|
return Transform.DICE;
|
|
}
|
|
|
|
public Model getModel(ModelProvider provider, String name) {
|
|
return provider.getModel(provider.getModel("items/die_d" + this.sides + "_side").add(4.8f, 4.8f, 4.8f, 11.2f, 11.2f, 11.2f).nswe().uv(0, 0, 16, 16)
|
|
.du("items/die_d" + this.sides + "_top").uv(0, 0, 16, 16), this.getTransform());
|
|
}
|
|
|
|
public ItemStack dispenseStack(World world, TileEntity source, Vec3 position, BlockPos blockpos, Facing facing, ItemStack stack) {
|
|
return this.dispenseProjectile(world, facing, stack, new EntityDie(world, position.xCoord, position.yCoord, position.zCoord, this.sides), 0.275f, 30.0f);
|
|
}
|
|
|
|
public int getDispenseSoundId() {
|
|
return 1002;
|
|
}
|
|
}
|