thaumic-machinery/src/main/java/net/anvilcraft/thaummach/items/ItemDetector.java

161 lines
5.5 KiB
Java

package net.anvilcraft.thaummach.items;
import java.util.List;
import java.util.stream.IntStream;
import dev.tilera.auracore.api.HelperLocation;
import dev.tilera.auracore.api.machine.IConnection;
import net.anvilcraft.thaummach.TMTab;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class ItemDetector extends Item {
public IIcon[] icons;
public ItemDetector() {
super();
super.maxStackSize = 1;
this.setHasSubtypes(true);
this.setMaxDamage(0);
this.setCreativeTab(TMTab.INSTANCE);
}
@Override
public EnumRarity getRarity(ItemStack itemstack) {
return EnumRarity.uncommon;
}
@Override
public void registerIcons(IIconRegister reg) {
this.icons = IntStream.rangeClosed(0, 2)
.mapToObj((i) -> "thaummach:detector_" + i)
.map(reg::registerIcon)
.toArray(IIcon[] ::new);
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public void getSubItems(Item alec1, CreativeTabs tab, List list) {
IntStream.rangeClosed(0, 2)
.mapToObj((i) -> new ItemStack(this, 1, i))
.forEach(list::add);
}
@Override
public IIcon getIconFromDamage(int meta) {
return this.icons[meta];
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return "item.thaummach:detector_" + stack.getItemDamage();
}
@Override
public boolean onItemUseFirst(
ItemStack itemstack,
EntityPlayer entityplayer,
World world,
int x,
int y,
int z,
int l,
// useless parameters
float alec1,
float alec2,
float alec3
) {
TileEntity ent = world.getTileEntity(x, y, z);
if (ent instanceof IConnection) {
IConnection tet = (IConnection) ent;
if (itemstack.getItemDamage() == 0) {
if (world.isRemote)
return false;
entityplayer.addChatMessage(new ChatComponentText(
"Detected " + Math.round(tet.getPureVis()) + " Vis."
));
world.playSoundEffect(
(double) x, (double) y, (double) z, "note.harp", 0.8F, 1.0F
);
if (tet.getVisSuction((HelperLocation) null) > 0) {
entityplayer.addChatMessage(new ChatComponentText(
tet.getVisSuction((HelperLocation) null) + " Vis TCB"
));
}
return true;
}
if (itemstack.getItemDamage() == 1) {
if (world.isRemote)
return false;
entityplayer.addChatMessage(new ChatComponentText(
"Detected " + Math.round(tet.getTaintedVis()) + " Taint."
));
world.playSoundEffect(
(double) x, (double) y, (double) z, "note.harp", 0.8F, 1.0F
);
if (tet.getTaintSuction((HelperLocation) null) > 0) {
entityplayer.addChatMessage(new ChatComponentText(
tet.getTaintSuction((HelperLocation) null) + " Taint TCB"
));
}
return true;
}
if (itemstack.getItemDamage() == 2) {
if (world.isRemote)
return false;
int cap = Math.round(
(float) Math.round(tet.getPureVis() + tet.getTaintedVis())
/ tet.getMaxVis() * 100.0F
);
int capp = Math.round(
(float) Math.round(tet.getPureVis()) / tet.getMaxVis() * 100.0F
);
int capt = Math.round(
(float) Math.round(tet.getTaintedVis()) / tet.getMaxVis() * 100.0F
);
entityplayer.addChatMessage(new ChatComponentText(
"Detected " + Math.round(tet.getPureVis()) + " Vis (" + capp
+ "%) and " + Math.round(tet.getTaintedVis()) + " Taint (" + capt
+ "%)."
));
entityplayer.addChatMessage(
new ChatComponentText("The object is at " + cap + "% capacity.")
);
world.playSoundEffect(
(double) x,
(double) y,
(double) z,
"note.harp",
0.8F,
1.0F + 1.0F * (float) cap / 100.0F
);
if (tet.getTaintSuction((HelperLocation) null) > 0
|| tet.getVisSuction((HelperLocation) null) > 0) {
entityplayer.addChatMessage(new ChatComponentText(
"" + tet.getVisSuction((HelperLocation) null) + " Vis TCB, "
+ tet.getTaintSuction((HelperLocation) null) + " Taint TCB"
));
}
return true;
}
}
return super.onItemUseFirst(
itemstack, entityplayer, world, x, y, z, l, alec1, alec2, alec3
);
}
}