mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
95 lines
3.6 KiB
Java
95 lines
3.6 KiB
Java
package com.hbm.items.tool;
|
|
|
|
import java.util.List;
|
|
|
|
import com.hbm.blocks.BlockDummyable;
|
|
import com.hbm.packet.AuxParticlePacketNT;
|
|
import com.hbm.packet.PacketDispatcher;
|
|
import com.hbm.util.ChatBuilder;
|
|
import com.hbm.util.fauxpointtwelve.BlockPos;
|
|
|
|
import api.hbm.energymk2.IEnergyConductorMK2;
|
|
import api.hbm.energymk2.Nodespace;
|
|
import api.hbm.energymk2.Nodespace.PowerNode;
|
|
import api.hbm.energymk2.PowerNetMK2;
|
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
import net.minecraft.world.World;
|
|
|
|
public class ItemPowerNetTool extends Item {
|
|
|
|
@Override
|
|
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
|
|
|
|
Block b = world.getBlock(x, y, z);
|
|
|
|
if(b instanceof BlockDummyable) {
|
|
int[] pos = ((BlockDummyable) b).findCore(world, x, y, z);
|
|
|
|
if(pos != null) {
|
|
x = pos[0];
|
|
y = pos[1];
|
|
z = pos[2];
|
|
}
|
|
}
|
|
|
|
TileEntity te = world.getTileEntity(x, y, z);
|
|
|
|
if(world.isRemote)
|
|
return true;
|
|
|
|
if((te instanceof IEnergyConductorMK2)) {
|
|
PowerNode node = Nodespace.getNode(world, x, y, z);
|
|
|
|
if(node != null && node.hasValidNet()) {
|
|
|
|
PowerNetMK2 net = node.net;
|
|
String id = Integer.toHexString(net.hashCode());
|
|
player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush());
|
|
player.addChatComponentMessage(ChatBuilder.start("Links: " + net.links.size()).color(EnumChatFormatting.YELLOW).flush());
|
|
player.addChatComponentMessage(ChatBuilder.start("Providers: " + net.providerEntries.size()).color(EnumChatFormatting.YELLOW).flush());
|
|
player.addChatComponentMessage(ChatBuilder.start("Receivers: " + net.receiverEntries.size()).color(EnumChatFormatting.YELLOW).flush());
|
|
player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush());
|
|
|
|
for(PowerNode link : net.links) {
|
|
|
|
for(BlockPos pos : link.positions) {
|
|
NBTTagCompound data = new NBTTagCompound();
|
|
data.setString("type", "debug");
|
|
data.setInteger("color", 0xffff00);
|
|
data.setFloat("scale", 0.5F);
|
|
data.setString("text", id);
|
|
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.getX() + 0.5, pos.getY() + 1.5, pos.getZ() + 0.5), new TargetPoint(world.provider.dimensionId, pos.getX(), pos.getY(), pos.getZ(), radius));
|
|
}
|
|
}
|
|
|
|
} else {
|
|
player.addChatComponentMessage(ChatBuilder.start("Error: No network found!").color(EnumChatFormatting.RED).flush());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private static final int radius = 20;
|
|
|
|
@Override
|
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
|
list.add(EnumChatFormatting.RED + "Right-click cable to analyze the power net.");
|
|
list.add(EnumChatFormatting.RED + "Links (cables, poles, etc.) are YELLOW");
|
|
list.add(EnumChatFormatting.RED + "Subscribers (any receiver) are BLUE");
|
|
list.add(EnumChatFormatting.RED + "Links with mismatching network info (BUGGED!) are RED");
|
|
list.add(EnumChatFormatting.RED + "Displays stats such as link and subscriber count");
|
|
list.add(EnumChatFormatting.RED + "Proxies are connection points for multiblock links (e.g. 4 for substations)");
|
|
list.add(EnumChatFormatting.RED + "Particles only spawn in a " + radius + " block radius!");
|
|
}
|
|
}
|