Updated to MC 1.11, part 1

Compiles and runs, but probably doesn't really work yet
This commit is contained in:
malte0811 2017-05-10 17:56:05 +02:00
parent aca048cbee
commit 01c2e58409
79 changed files with 749 additions and 570 deletions

1
.gitignore vendored
View File

@ -21,3 +21,4 @@ build
eclipse
run
libs
classes

View File

@ -48,13 +48,11 @@ sourceCompatibility = 1.8
targetCompatibility = 1.8
minecraft {
version = "12.18.3.2234"
version = "13.20.0.2282"
runDir = "run"
replace '${version}', project.version
mappings = "snapshot_20160701"
//"snapshot_20160518" 1.9
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
mappings = "snapshot_20170323"
}
repositories {
@ -69,8 +67,8 @@ repositories {
}
dependencies {
deobfCompile "net.industrial-craft:industrialcraft-2:2.6.+"
deobfCompile "blusunrize:ImmersiveEngineering:0.10-+:deobf"
deobfCompile "net.industrial-craft:industrialcraft-2:2.7.+:dev"
deobfCompile "blusunrize:ImmersiveEngineering:0.11-+:deobf"
}
jar {

View File

@ -60,7 +60,7 @@ public class CommonProxy implements IGuiHandler {
} else if (ID == 1) {//ITEM GUI
EnumHand h = z == 1 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND;
ItemStack held = player.getHeldItem(h);
if (held != null && held.getItem() == IndustrialWires.panelComponent) {
if (!held.isEmpty() && held.getItem() == IndustrialWires.panelComponent) {
return new ContainerPanelComponent(h);
}
}

View File

@ -21,5 +21,5 @@ public interface IIC2Connector {
/**
* @return leftover energy.
*/
public double insertEnergy(double eu, boolean simulate);
double insertEnergy(double eu, boolean simulate);
}

View File

@ -44,8 +44,8 @@ import malte0811.industrialWires.network.MessageTileSyncIW;
import malte0811.industrialWires.wires.IC2Wiretype;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
@ -64,7 +64,7 @@ import net.minecraftforge.oredict.ShapelessOreRecipe;
import java.util.ArrayList;
import java.util.List;
@Mod(modid = IndustrialWires.MODID, version = IndustrialWires.VERSION, dependencies="required-after:immersiveengineering@[0.10-58,);required-after:IC2")
@Mod(modid = IndustrialWires.MODID, version = IndustrialWires.VERSION, dependencies = "required-after:immersiveengineering@[0.10-58,);required-after:ic2")
public class IndustrialWires {
public static final String MODID = "industrialwires";
public static final String VERSION = "${version}";
@ -80,10 +80,7 @@ public class IndustrialWires {
public static CreativeTabs creativeTab = new CreativeTabs(MODID) {
@Override
public Item getTabIconItem() {
return null;
}
public ItemStack getIconItemStack() {
public ItemStack getTabIconItem() {
return new ItemStack(coil, 1, 2);
}
};
@ -100,12 +97,11 @@ public class IndustrialWires {
coil = new ItemIC2Coil();
panelComponent = new ItemPanelComponent();
panel = new BlockPanel();
//TODO change to MODID+ when changing to a new MC version
GameRegistry.registerTileEntity(TileEntityIC2ConnectorTin.class, "ic2ConnectorTin");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorCopper.class, "ic2ConnectorCopper");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorGold.class, "ic2ConnectorGold");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorHV.class, "ic2ConnectorHV");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorGlass.class, "ic2ConnectorGlass");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorTin.class, MODID + "ic2ConnectorTin");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorCopper.class, MODID + "ic2ConnectorCopper");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorGold.class, MODID + "ic2ConnectorGold");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorHV.class, MODID + "ic2ConnectorHV");
GameRegistry.registerTileEntity(TileEntityIC2ConnectorGlass.class, MODID + "ic2ConnectorGlass");
GameRegistry.registerTileEntity(TileEntityJacobsLadder.class, MODID+":jacobsLadder");
GameRegistry.registerTileEntity(TileEntityPanel.class, MODID+":control_panel");
GameRegistry.registerTileEntity(TileEntityRSPanelConn.class, MODID+":control_panel_rs");
@ -210,19 +206,19 @@ public class IndustrialWires {
}
private class CoilLengthAdapter implements IRecipeAdapter<RecipeCoilLength> {
@Override
public RecipeQuery[] getQueriedInputs(RecipeCoilLength recipe, ItemStack[] in) {
public RecipeQuery[] getQueriedInputs(RecipeCoilLength recipe, NonNullList<ItemStack> in) {
List<RecipeQuery> ret = new ArrayList<>();
for (int i = 0;i<in.length-1;i++) {
for (int i = 0; i < in.size() - 1; i++) {
boolean added = false;
for (int j = 0;j<ret.size();j++) {
if (ItemStack.areItemStacksEqual((ItemStack)ret.get(j).query, in[i])) {
ret.get(j).querySize++;
for (RecipeQuery aRet : ret) {
if (ItemStack.areItemStacksEqual((ItemStack) aRet.query, in.get(i))) {
aRet.querySize++;
added = true;
break;
}
}
if (!added) {
ret.add(new RecipeQuery(in[i], 1));
ret.add(new RecipeQuery(in.get(i), 1));
}
}
return ret.toArray(new RecipeQuery[ret.size()]);

View File

@ -31,7 +31,6 @@ import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -45,9 +44,8 @@ import net.minecraft.world.World;
import net.minecraftforge.common.property.IExtendedBlockState;
import net.minecraftforge.fml.common.registry.GameRegistry;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
public abstract class BlockIWBase extends Block {
@ -62,6 +60,7 @@ public abstract class BlockIWBase extends Block {
setCreativeTab(IndustrialWires.creativeTab);
}
@Nonnull
@Override
protected BlockStateContainer createBlockState() {
if (properties==null) {
@ -75,8 +74,9 @@ public abstract class BlockIWBase extends Block {
return new BlockStateContainer(this, props);
}
@Nonnull
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) {
state = super.getActualState(state, worldIn, pos);
TileEntity tile = worldIn.getTileEntity(pos);
if (tile instanceof IHasDummyBlocksIW) {
@ -92,8 +92,9 @@ public abstract class BlockIWBase extends Block {
return state;
}
@Nonnull
@Override
public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) {
public IBlockState getExtendedState(@Nonnull IBlockState state, IBlockAccess world, BlockPos pos) {
state = super.getExtendedState(state, world, pos);
if (state instanceof IExtendedBlockState) {
TileEntity te = world.getTileEntity(pos);
@ -110,7 +111,7 @@ public abstract class BlockIWBase extends Block {
}
@Override
public void breakBlock(World worldIn, BlockPos pos, IBlockState state) {
public void breakBlock(@Nonnull World worldIn, @Nonnull BlockPos pos, @Nonnull IBlockState state) {
TileEntity te = worldIn.getTileEntity(pos);
if (te instanceof IHasDummyBlocksIW) {
((IHasDummyBlocksIW) te).breakDummies();
@ -123,20 +124,7 @@ public abstract class BlockIWBase extends Block {
worldIn.removeTileEntity(pos);
}
@Nullable
@Override
public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos) {
return getBoundingBox(blockState, worldIn, pos);
}
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn) {
AxisAlignedBB axisalignedbb = getBoundingBox(state, worldIn, pos).offset(pos);
if (entityBox.intersectsWith(axisalignedbb)) {
collidingBoxes.add(axisalignedbb);
}
}
@Nonnull
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
TileEntity te = source.getTileEntity(pos);
@ -152,8 +140,9 @@ public abstract class BlockIWBase extends Block {
//mostly copied from IE
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player,
EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
TileEntity te = world.getTileEntity(pos);
ItemStack heldItem = player.getHeldItem(hand);
if(te instanceof IEBlockInterfaces.IDirectionalTile && Utils.isHammer(heldItem) && !world.isRemote) {
IEBlockInterfaces.IDirectionalTile directionalTe = (IEBlockInterfaces.IDirectionalTile) te;
if (directionalTe.canHammerRotate(side, hitX, hitY, hitZ, player)) {
@ -196,10 +185,10 @@ public abstract class BlockIWBase extends Block {
}
@Override
public void harvestBlock(World worldIn, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, @Nullable ItemStack stack) {
public void harvestBlock(@Nonnull World worldIn, EntityPlayer player, @Nonnull BlockPos pos, @Nonnull IBlockState state, TileEntity te, ItemStack stack) {
if (te instanceof IEBlockInterfaces.ITileDrop) {
ItemStack drop = ((IEBlockInterfaces.ITileDrop) te).getTileDrop(player, state);
if (drop!=null) {
if (!drop.isEmpty()) {
spawnAsEntity(worldIn, pos, drop);
return;
}
@ -208,7 +197,7 @@ public abstract class BlockIWBase extends Block {
}
@Override
public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) {
public boolean rotateBlock(World world, @Nonnull BlockPos pos, @Nonnull EnumFacing axis) {
return false;
}

View File

@ -34,13 +34,13 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumFacing.AxisDirection;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import javax.annotation.Nullable;
import java.util.List;
import javax.annotation.Nonnull;
public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacementCheck {
private static PropertyEnum<LadderSize> size_property = PropertyEnum.create("size", LadderSize.class);
@ -49,8 +49,9 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
super(Material.IRON, "jacobs_ladder");
}
@Nonnull
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) {
state = super.getActualState(state, worldIn, pos);
TileEntity tile = worldIn.getTileEntity(pos);
if (tile instanceof TileEntityJacobsLadder) {
@ -71,13 +72,14 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
return state.getValue(size_property).ordinal();
}
@Nonnull
@Override
public IBlockState getStateFromMeta(int meta) {
return super.getStateFromMeta(meta).withProperty(size_property, LadderSize.values()[meta]);
}
@Override
public void getSubBlocks(Item itemIn, CreativeTabs tab, List<ItemStack> list) {
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
for (int i = 0; i < LadderSize.values().length; i++) {
list.add(new ItemStack(this, 1, i));
}
@ -94,7 +96,7 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
public TileEntity createTileEntity(@Nonnull World world, @Nonnull IBlockState state) {
return new TileEntityJacobsLadder(state.getValue(size_property));
}
@ -118,8 +120,10 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
return false;
}
@Nonnull
@Override
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, ItemStack stack) {
public IBlockState getStateForPlacement(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing facing,
float hitX, float hitY, float hitZ, int meta, @Nonnull EntityLivingBase placer, EnumHand hand) {
EnumFacing f = facing.getOpposite();
if (facing.getAxis() == EnumFacing.Axis.Y) {
double dX = hitX - .5;
@ -130,11 +134,12 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
f = EnumFacing.getFacingFromAxis(dZ > 0 ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE, EnumFacing.Axis.Z);
}
}
return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, stack).withProperty(IEProperties.FACING_HORIZONTAL, f);
return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand).withProperty(IEProperties.FACING_HORIZONTAL, f);
}
@Nonnull
@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
public ItemStack getPickBlock(@Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player) {
return new ItemStack(this, 1, getMetaFromState(state));
}
@ -148,12 +153,12 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
}
@Override
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
TileEntity te = worldIn.getTileEntity(pos);
if (te instanceof TileEntityJacobsLadder) {
return ((TileEntityJacobsLadder) te).onActivated(playerIn, hand, heldItem);
return ((TileEntityJacobsLadder) te).onActivated(playerIn, hand);
}
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, heldItem, side, hitX, hitY, hitZ);
return super.onBlockActivated(worldIn, pos, state, playerIn, hand, side, hitX, hitY, hitZ);
}
@Override
@ -168,7 +173,7 @@ public class BlockJacobsLadder extends BlockIWBase implements IMetaEnum, IPlacem
}
@Override
public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) {
public boolean rotateBlock(World world, @Nonnull BlockPos pos, @Nonnull EnumFacing axis) {
TileEntity te = world.getTileEntity(pos);
return te instanceof TileEntityJacobsLadder && ((TileEntityJacobsLadder) te).rotate(world, pos, axis);
}

View File

@ -25,16 +25,14 @@ import net.minecraftforge.energy.IEnergyStorage;
public class EnergyAdapter implements IEnergyStorage {
/**
* 3 different copies of the same thing, the TE this adapter is mirroring.
* 2 different copies of the same thing, the TE this adapter is mirroring.
* rec and prov are null if the TE does not implement them
*/
IFluxConnection tile;
IFluxReceiver rec;
IFluxProvider prov;
EnumFacing dir;
private IFluxReceiver rec;
private IFluxProvider prov;
private EnumFacing dir;
public EnergyAdapter(IFluxConnection te, EnumFacing f) {
tile = te;
dir = f;
if (te instanceof IFluxReceiver) {
rec = (IFluxReceiver) te;

View File

@ -28,6 +28,8 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
public class ItemBlockIW extends ItemBlock {
private final Object[] values;
public ItemBlockIW(Block b) {
@ -39,6 +41,8 @@ public class ItemBlockIW extends ItemBlock {
}
hasSubtypes = true;
}
@Nonnull
@Override
public String getUnlocalizedName(ItemStack stack) {
int meta = stack.getMetadata();
@ -54,7 +58,8 @@ public class ItemBlockIW extends ItemBlock {
}
@Override
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, IBlockState newState) {
public boolean placeBlockAt(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, World world, @Nonnull BlockPos pos,
EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull IBlockState newState) {
if (block instanceof IPlacementCheck&&!((IPlacementCheck) block).canPlaceBlockAt(world, pos, stack)) {
return false;
}

View File

@ -22,10 +22,14 @@ import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import javax.annotation.Nonnull;
public abstract class TileEntityIWBase extends TileEntity {
protected static final String ENERGY_TAG = "energy";
protected static final String BUFFER_TAG = "buffer";
protected static final String DIR_TAG = "dir";
@Nonnull
@Override
public NBTTagCompound getUpdateTag() {
NBTTagCompound nbt = super.getUpdateTag();
@ -36,6 +40,8 @@ public abstract class TileEntityIWBase extends TileEntity {
public SPacketUpdateTileEntity getUpdatePacket() {
return new SPacketUpdateTileEntity(pos, getBlockMetadata(), getUpdateTag());
}
@Nonnull
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
writeNBT(compound, false);

View File

@ -50,6 +50,7 @@ import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickable, IHasDummyBlocksIW, ISyncReceiver, IEnergySink, IBlockBoundsIW, IDirectionalTile {
@ -96,7 +97,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
if (isDummy()) {
return;
}
if (!worldObj.isRemote) {
if (!world.isRemote) {
if (!addedToIC2Net) {
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
addedToIC2Net = true;
@ -106,16 +107,16 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
double y = j * (size.height + size.extraHeight) / (double) (size.movementPoints - 1) + size.innerPointOffset;
double width = widthFromHeight(y);
for (int i = 0; i < size.arcPoints - 2; i++) {
double z = size.zMax * 2 * (worldObj.rand.nextDouble() - .5);
double z = size.zMax * 2 * (world.rand.nextDouble() - .5);
double xMin = width * i / (double) (size.arcPoints - 2) - width / 2 + size.bottomDistance / 2;
double xDiff = width / (double) (size.arcPoints - 2);
double x = worldObj.rand.nextDouble() * xDiff + xMin;
double x = world.rand.nextDouble() * xDiff + xMin;
controlControls[i][j] = new Vec3d(x, y, z);
}
}
t = 0;
timeTillActive = size.delay;
tStep = 1D / (int) (.875 * size.tickToTop + worldObj.rand.nextInt(size.tickToTop / 4));
tStep = 1D / (int) (.875 * size.tickToTop + world.rand.nextInt(size.tickToTop / 4));
IndustrialWires.packetHandler.sendToAll(new MessageTileSyncIW(this, writeArcStarter()));
} else if (timeTillActive == 0 && t < 1) {
double extracted = energy.extractEU(consumtionEU, false);
@ -192,7 +193,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
@Override
public void readCustomNBT(NBTTagCompound nbt, boolean descPacket) {
public void readCustomNBT(@Nonnull NBTTagCompound nbt, boolean descPacket) {
LadderSize oldSize = size;
size = LadderSize.values()[nbt.getInteger("size")];
if (size != oldSize) {
@ -205,7 +206,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
@Override
public void writeCustomNBT(NBTTagCompound nbt, boolean descPacket) {
public void writeCustomNBT(@Nonnull NBTTagCompound nbt, boolean descPacket) {
nbt.setInteger("size", size.ordinal());
nbt.setInteger("dummy", dummy);
energy.writeToNbt(nbt, "energy");
@ -275,8 +276,8 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
public void placeDummies(IBlockState state) {
for (int i = 1; i <= size.dummyCount; i++) {
BlockPos pos2 = pos.offset(EnumFacing.UP, i);
worldObj.setBlockState(pos2, state);
TileEntity te = worldObj.getTileEntity(pos2);
world.setBlockState(pos2, state);
TileEntity te = world.getTileEntity(pos2);
if (te instanceof TileEntityJacobsLadder) {
((TileEntityJacobsLadder) te).size = size;
((TileEntityJacobsLadder) te).dummy = i;
@ -288,8 +289,8 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
@Override
public void breakDummies() {
for (int i = 0; i <= size.dummyCount; i++) {
if (i != dummy && worldObj.getTileEntity(pos.offset(EnumFacing.UP, i - dummy)) instanceof TileEntityJacobsLadder) {
worldObj.setBlockToAir(pos.offset(EnumFacing.UP, i - dummy));
if (i != dummy && world.getTileEntity(pos.offset(EnumFacing.UP, i - dummy)) instanceof TileEntityJacobsLadder) {
world.setBlockToAir(pos.offset(EnumFacing.UP, i - dummy));
}
}
}
@ -309,15 +310,15 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
public boolean isActive() {
if (isDummy()) {
TileEntity master = worldObj.getTileEntity(pos.down(dummy));
TileEntity master = world.getTileEntity(pos.down(dummy));
return master instanceof TileEntityJacobsLadder&&((TileEntityJacobsLadder) master).isActive();
}
return timeTillActive == 0 && t < 1;
}
public void onEntityTouch(Entity e) {
if (isDummy() && !worldObj.isRemote) {
TileEntity master = worldObj.getTileEntity(pos.down(dummy));
if (isDummy() && !world.isRemote) {
TileEntity master = world.getTileEntity(pos.down(dummy));
if (master instanceof TileEntityJacobsLadder && ((TileEntityJacobsLadder) master).isActive()) {
hurtEntity(e);
}
@ -328,17 +329,18 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
e.attackEntityFrom(new DamageSource("industrialwires.jacobs_ladder"), IWConfig.HVStuff.jacobsBaseDmg * (size.ordinal() + 1));
}
public boolean onActivated(EntityPlayer playerIn, EnumHand hand, ItemStack heldItem) {
TileEntity masterTE = dummy == 0 ? this : worldObj.getTileEntity(pos.down(dummy));
public boolean onActivated(EntityPlayer player, EnumHand hand) {
ItemStack heldItem = player.getHeldItem(hand);
TileEntity masterTE = dummy == 0 ? this : world.getTileEntity(pos.down(dummy));
if (masterTE instanceof TileEntityJacobsLadder) {
TileEntityJacobsLadder master = (TileEntityJacobsLadder) masterTE;
if (master.isActive()) {
if (!worldObj.isRemote) {
hurtEntity(playerIn);
if (!world.isRemote) {
hurtEntity(player);
}
return true;
} else if (heldItem != null && ApiUtils.compareToOreName(heldItem, "itemSalt")) {
return master.salt(playerIn, hand, heldItem);
} else if (!heldItem.isEmpty() && ApiUtils.compareToOreName(heldItem, "itemSalt")) {
return master.salt(player, hand, heldItem);
}
}
return false;
@ -346,12 +348,12 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
private boolean salt(EntityPlayer player, EnumHand hand, ItemStack held) {
if (salt < 3) {
if (!worldObj.isRemote) {
if (!world.isRemote) {
salt++;
if (!player.isCreative()) {
held.stackSize--;
if (held.stackSize <= 0) {
player.setHeldItem(hand, null);
held.shrink(1);
if (held.getCount() <= 0) {
player.setHeldItem(hand, ItemStack.EMPTY);
}
}
NBTTagCompound update = new NBTTagCompound();
@ -368,7 +370,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
if (isActive()) {
return false;
}
if (!worldObj.isRemote) {
if (!world.isRemote) {
EnumFacing targetDir = facing.rotateAround(EnumFacing.Axis.Y);
for (int i = -dummy;i<size.dummyCount-dummy+1;i++) {
BlockPos currPos = pos.up(i);
@ -380,7 +382,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
IBlockState state = world.getBlockState(currPos).getActualState(world, currPos);
world.notifyBlockUpdate(currPos,state,state,3);
world.addBlockEvent(currPos, state.getBlock(), 255, 0);
world.notifyBlockOfStateChange(currPos, state.getBlock());
world.notifyNeighborsOfStateChange(currPos, state.getBlock(), true);
}
}
}
@ -410,13 +412,13 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
@Override
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing from) {
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing from) {
return !isDummy() && from == facing && capability == CapabilityEnergy.ENERGY;
}
@Override
@SuppressWarnings("unchecked")
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) {
if (hasCapability(capability, facing)) {
if (capability == CapabilityEnergy.ENERGY) {
return (T) new EnergyCap();
@ -427,7 +429,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
@Override
public void onChunkUnload() {
if (!worldObj.isRemote && addedToIC2Net)
if (!world.isRemote && addedToIC2Net)
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
addedToIC2Net = false;
super.onChunkUnload();
@ -435,9 +437,9 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
@Override
public void invalidate() {
if (!worldObj.isRemote && addedToIC2Net) {
if (!world.isRemote && addedToIC2Net) {
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
} else if (worldObj.isRemote) {
} else if (world.isRemote) {
//stop sound
IndustrialWires.proxy.playJacobsLadderSound(this, -1, soundPos);
}
@ -445,6 +447,7 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
super.invalidate();
}
@Nonnull
@Override
public AxisAlignedBB getRenderBoundingBox() {
return new AxisAlignedBB(pos, pos.add(1, 2, 1));
@ -472,13 +475,14 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
}
@Nonnull
@Override
public EnumFacing getFacing() {
return facing;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
this.facing = facing;
}
@ -488,17 +492,17 @@ public class TileEntityJacobsLadder extends TileEntityIEBase implements ITickabl
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return true;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return false;
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return false;
}

View File

@ -35,6 +35,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.IBlockAccess;
@ -43,7 +44,7 @@ import net.minecraftforge.common.property.ExtendedBlockState;
import net.minecraftforge.common.property.IExtendedBlockState;
import net.minecraftforge.common.property.IUnlistedProperty;
import java.util.List;
import javax.annotation.Nonnull;
public class BlockPanel extends BlockIWBase implements IMetaEnum {
public static final PropertyEnum<BlockTypes_Panel> type = PropertyEnum.create("type", BlockTypes_Panel.class);
@ -65,7 +66,7 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
public TileEntity createTileEntity(@Nonnull World world, @Nonnull IBlockState state) {
switch(state.getValue(type)) {
case TOP:
return new TileEntityPanel();
@ -88,6 +89,7 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
return new IProperty[]{IEProperties.FACING_ALL, type};
}
@Nonnull
@Override
protected BlockStateContainer createBlockState() {
BlockStateContainer base = super.createBlockState();
@ -96,8 +98,9 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
});
}
@Nonnull
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) {
state = super.getActualState(state, worldIn, pos);
TileEntity te = worldIn.getTileEntity(pos);
if (te instanceof TileEntityPanel) {
@ -109,8 +112,9 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
return state;
}
@Nonnull
@Override
public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) {
public IBlockState getExtendedState(@Nonnull IBlockState state, IBlockAccess world, BlockPos pos) {
state = super.getExtendedState(state, world, pos);
if (state instanceof IExtendedBlockState) {
TileEntity te = world.getTileEntity(pos);
@ -137,7 +141,7 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
}
@Override
public void getSubBlocks(Item itemIn, CreativeTabs tab, List<ItemStack> list) {
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
list.add(new ItemStack(itemIn, 1, 0));
list.add(new ItemStack(itemIn, 1, 1));
list.add(new ItemStack(itemIn, 1, 2));
@ -159,14 +163,15 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
public boolean isVisuallyOpaque() {
return false;
}
/* @Override TODO do I not need this any more?
public boolean isVisuallyOpaque() {
return false;
}
*/
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!super.onBlockActivated(world, pos, state, player, hand, heldItem, side, hitX, hitY, hitZ)&&hand==EnumHand.MAIN_HAND) {
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!super.onBlockActivated(world, pos, state, player, hand, side, hitX, hitY, hitZ) && hand == EnumHand.MAIN_HAND) {
TileEntity te = world.getTileEntity(pos);
if (te instanceof TileEntityRSPanelConn){
if (!world.isRemote) {
@ -186,7 +191,8 @@ public class BlockPanel extends BlockIWBase implements IMetaEnum {
}
@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
@Nonnull
public ItemStack getPickBlock(@Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player) {
if (state.getValue(type)==BlockTypes_Panel.TOP) {
TileEntity te = world.getTileEntity(pos);
if (te instanceof TileEntityPanel) {

View File

@ -27,7 +27,6 @@ import malte0811.industrialWires.blocks.IBlockBoundsIW;
import malte0811.industrialWires.blocks.TileEntityIWBase;
import malte0811.industrialWires.controlpanel.*;
import malte0811.industrialWires.network.MessagePanelInteract;
import malte0811.industrialWires.util.MiscUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
@ -48,6 +47,7 @@ import net.minecraft.util.math.Vec3d;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.HashSet;
import java.util.List;
@ -78,11 +78,6 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
components.add(lbl);
components.add(btn);
}
Slider slid = new Slider(.5F, 0x00ff00, true, 1, (byte) 1);
slid.setX(.4F);
slid.setY(.25F);
slid.setPanelHeight(components.height);
//components.add(slid);
}
@Override
@ -90,11 +85,11 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
for (PanelComponent pc : components) {
pc.update(this);
}
if (!worldObj.isRemote) {
if (!world.isRemote) {
if (firstTick) {
List<BlockPos> parts = MiscUtils.discoverPanelParts(worldObj, pos);
List<BlockPos> parts = PanelUtils.discoverPanelParts(world, pos);
for (BlockPos bp : parts) {
TileEntity te = worldObj.getTileEntity(bp);
TileEntity te = world.getTileEntity(bp);
if (te instanceof TileEntityRSPanelConn&&!rsPorts.contains(te)) {
((TileEntityRSPanelConn) te).registerPanel(this);
}
@ -119,7 +114,8 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
}
@Override
public ItemStack getTileDrop(EntityPlayer player, IBlockState state) {
@Nonnull
public ItemStack getTileDrop(@Nonnull EntityPlayer player, @Nonnull IBlockState state) {
NBTTagCompound ret = new NBTTagCompound();
writeToItemNBT(ret, true);
ItemStack retStack = new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.TOP.ordinal());
@ -128,8 +124,8 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
}
@Override
public void readOnPlacement(@Nullable EntityLivingBase placer, ItemStack stack) {
if (stack.hasTagCompound()) {
public void readOnPlacement(@Nullable EntityLivingBase placer, @Nonnull ItemStack stack) {
if (!stack.isEmpty() && stack.hasTagCompound()) {
readFromItemNBT(stack.getTagCompound());
}
}
@ -154,13 +150,14 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
nbt.setFloat("height", components.height);
}
@Nonnull
@Override
public EnumFacing getFacing() {
return components.facing;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
this.components.facing = facing;
}
@ -169,8 +166,9 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
return 0;
}
@Nonnull
@Override
public EnumFacing getFacingForPlacement(EntityLivingBase placer, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) {
public EnumFacing getFacingForPlacement(@Nonnull EntityLivingBase placer, @Nonnull BlockPos pos, @Nonnull EnumFacing side, float hitX, float hitY, float hitZ) {
switch (side) {
case UP:
components.top = EnumFacing.UP;
@ -189,17 +187,17 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return false;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return false;
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return false;
}
@ -230,7 +228,7 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
Matrix4 mat = components.getPanelTopTransform();
PanelComponent retPc = null;
RayTraceResult retRay = null;
Vec3d playerPos = Minecraft.getMinecraft().thePlayer.getPositionVector().addVector(-pos.getX(), player.getEyeHeight() - pos.getY(), -pos.getZ());
Vec3d playerPos = Minecraft.getMinecraft().player.getPositionVector().addVector(-pos.getX(), player.getEyeHeight() - pos.getY(), -pos.getZ());
for (PanelComponent pc : components) {
AxisAlignedBB box = pc.getBlockRelativeAABB();
if (box.maxY>box.minY) {
@ -257,8 +255,8 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
}
@Override
public boolean interact(EnumFacing side, EntityPlayer player, EnumHand hand, ItemStack heldItem, float hitX, float hitY, float hitZ) {
if (worldObj.isRemote) {
public boolean interact(@Nonnull EnumFacing side, @Nonnull EntityPlayer player, @Nonnull EnumHand hand, @Nonnull ItemStack heldItem, float hitX, float hitY, float hitZ) {
if (world.isRemote) {
Pair<PanelComponent, RayTraceResult> pc = getSelectedComponent(player, new Vec3d(hitX, hitY, hitZ), false);
if (pc != null) {
Matrix4 inv = components.getPanelTopTransform();
@ -279,9 +277,9 @@ public class TileEntityPanel extends TileEntityIWBase implements IDirectionalTil
}
public void triggerRenderUpdate() {
IBlockState state = worldObj.getBlockState(pos);
worldObj.notifyBlockUpdate(pos, state, state, 3);
worldObj.addBlockEvent(pos, state.getBlock(), 255, 0);
IBlockState state = world.getBlockState(pos);
world.notifyBlockUpdate(pos, state, state, 3);
world.addBlockEvent(pos, state.getBlock(), 255, 0);
}
public void registerRS(TileEntityRSPanelConn te) {

View File

@ -18,10 +18,7 @@
package malte0811.industrialWires.blocks.controlpanel;
import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.common.util.IELogger;
import blusunrize.immersiveengineering.common.util.Utils;
import blusunrize.immersiveengineering.common.util.inventory.IIEInventory;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.IBlockBoundsIW;
import malte0811.industrialWires.blocks.INetGUI;
@ -37,27 +34,36 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.math.AxisAlignedBB;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInventory, INetGUI, IBlockBoundsIW {
//TODO I no longer implement IEInventory!
public class TileEntityPanelCreator extends TileEntityIWBase implements INetGUI, IBlockBoundsIW {
public List<PanelComponent> components = new ArrayList<>();
public float height = 0.5F;
public ItemStack[] inv = new ItemStack[1];
@Nonnull
public ItemStack inv = ItemStack.EMPTY;
@Override
public void readNBT(NBTTagCompound nbt, boolean updatePacket) {
NBTTagList l = nbt.getTagList("components", 10);
PanelUtils.readListFromNBT(l, components);
height = nbt.getFloat("height");
inv = Utils.readInventory(nbt.getTagList("inventory", 10), inv.length);
NBTTagCompound invTag;
if (nbt.hasKey("inventory", 9)) {
invTag = nbt.getTagList("inventory", 10).getCompoundTagAt(0);
} else {
invTag = nbt.getCompoundTag("inventory");
}
inv = new ItemStack(invTag);
}
@Override
public void writeNBT(NBTTagCompound nbt, boolean updatePacket) {
writeToItemNBT(nbt, false);
nbt.setTag("inventory", Utils.writeInventory(inv));
nbt.setTag("inventory", inv.serializeNBT());
}
public void writeToItemNBT(NBTTagCompound nbt, boolean toItem) {
@ -71,29 +77,6 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
nbt.setFloat("height", height);
}
@Override
public ItemStack[] getInventory() {
return inv;
}
@Override
public boolean isStackValid(int slot, ItemStack stack) {
if (slot == 0) {
return ApiUtils.compareToOreName(stack, "plateIron");
}
return true;
}
@Override
public int getSlotLimit(int slot) {
return slot == 0 ? 1 : 64;
}
@Override
public void doGraphicalUpdates(int slot) {
}
@Override
public void onChange(NBTTagCompound nbt, EntityPlayer p) {
int type = nbt.getInteger("type");
@ -106,10 +89,10 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
pc.setY(nbt.getFloat("y"));
pc.setPanelHeight(height);
components.add(pc);
if (curr != null) {
curr.stackSize--;
if (curr.stackSize <= 0) {
p.inventory.setItemStack(null);
if (!curr.isEmpty()) {
curr.shrink(1);
if (curr.getCount() <= 0) {
p.inventory.setItemStack(ItemStack.EMPTY);
}
p.inventory.markDirty();
}
@ -119,7 +102,7 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
break;
case REMOVE:
int id = nbt.getInteger("id");
if (id >= 0 && id < components.size() && p.inventory.getItemStack() == null) {
if (id >= 0 && id < components.size() && !p.inventory.getItemStack().isEmpty()) {
PanelComponent removed = components.get(id);
ItemStack remItem = ItemPanelComponent.stackFromComponent(removed);
p.inventory.setItemStack(remItem);
@ -128,12 +111,12 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
}
break;
case CREATE_PANEL:
if (ItemStack.areItemStacksEqual(PanelUtils.getPanelBase(), inv[0])) {
if (ItemStack.areItemStacksEqual(PanelUtils.getPanelBase(), inv)) {
NBTTagCompound panelNBT = new NBTTagCompound();
writeToItemNBT(panelNBT, true);
ItemStack panel = new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.TOP.ordinal());
panel.setTagCompound(panelNBT);
inv[0] = panel;
inv = panel;
components.clear();
}
break;
@ -142,7 +125,7 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
while (it.hasNext()) {
PanelComponent next = it.next();
ItemStack nextStack = ItemPanelComponent.stackFromComponent(next);
if (nextStack != null) {
if (!nextStack.isEmpty()) {
if (p.inventory.addItemStackToInventory(nextStack)) {
it.remove();
}
@ -152,18 +135,18 @@ public class TileEntityPanelCreator extends TileEntityIWBase implements IIEInven
}
break;
case DISASSEMBLE:
if (components.size() == 0 && inv[0] != null && inv[0].getItem() == PanelUtils.PANEL_ITEM) {
if (components.size() == 0 && inv.getItem() == PanelUtils.PANEL_ITEM) {
TileEntityPanel te = new TileEntityPanel();
te.readFromItemNBT(inv[0].getTagCompound());
te.readFromItemNBT(inv.getTagCompound());
components = new ArrayList<>(te.getComponents());
height = te.getComponents().height;
inv[0] = null;
inv = ItemStack.EMPTY;
}
break;
}
markDirty();
IBlockState state = worldObj.getBlockState(pos);
worldObj.notifyBlockUpdate(pos, state, state, 3);
IBlockState state = world.getBlockState(pos);
world.notifyBlockUpdate(pos, state, state, 3);
}
private static final AxisAlignedBB aabb = new AxisAlignedBB(0, 0,0, 1, 14/16D, 1);

View File

@ -29,7 +29,7 @@ import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces;
import malte0811.industrialWires.blocks.IBlockBoundsIW;
import malte0811.industrialWires.blocks.INetGUI;
import malte0811.industrialWires.controlpanel.PanelComponent;
import malte0811.industrialWires.util.MiscUtils;
import malte0811.industrialWires.controlpanel.PanelUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -68,14 +68,14 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
@Override
public void update() {
if(hasWorldObj() && !worldObj.isRemote) {
if (hasWorld() && !world.isRemote) {
if (!loaded) {
loaded = true;
// completely reload the network
network.removeFromNetwork(null);
List<BlockPos> parts = MiscUtils.discoverPanelParts(worldObj, pos);
List<BlockPos> parts = PanelUtils.discoverPanelParts(world, pos);
for (BlockPos bp:parts) {
TileEntity te = worldObj.getTileEntity(bp);
TileEntity te = world.getTileEntity(bp);
if (te instanceof TileEntityPanel) {
registerPanel(((TileEntityPanel) te));
}
@ -202,9 +202,9 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
hasConn = false;
network.removeFromNetwork(this);
this.markDirty();
if(worldObj != null) {
IBlockState state = worldObj.getBlockState(pos);
worldObj.notifyBlockUpdate(pos, state,state, 3);
if (world != null) {
IBlockState state = world.getBlockState(pos);
world.notifyBlockUpdate(pos, state, state, 3);
}
}
@ -240,10 +240,10 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
@Override
public void onChange(NBTTagCompound nbt, EntityPlayer p) {
if (nbt.hasKey("rsId")) {
List<BlockPos> parts = MiscUtils.discoverPanelParts(worldObj, pos);
List<BlockPos> parts = PanelUtils.discoverPanelParts(world, pos);
List<TileEntityPanel> tes = new ArrayList<>(parts.size());
for (BlockPos bp:parts) {
TileEntity te = worldObj.getTileEntity(bp);
TileEntity te = world.getTileEntity(bp);
if (te instanceof TileEntityPanel) {
tes.add((TileEntityPanel) te);
unregisterPanel((TileEntityPanel) te, true);
@ -255,28 +255,29 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
registerPanel(panel);
}
network.updateValues();
IBlockState state = worldObj.getBlockState(pos);
worldObj.notifyBlockUpdate(pos, state, state, 3);
worldObj.addBlockEvent(pos, state.getBlock(), 255, 0);
IBlockState state = world.getBlockState(pos);
world.notifyBlockUpdate(pos, state, state, 3);
world.addBlockEvent(pos, state.getBlock(), 255, 0);
}
}
@Override
public World getConnectorWorld() {
return worldObj;
return world;
}
public int getRsId() {
return id;
}
@Nonnull
@Override
public EnumFacing getFacing() {
return facing;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
this.facing = facing;
}
@ -286,17 +287,17 @@ public class TileEntityRSPanelConn extends TileEntityImmersiveConnectable implem
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return true;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return false;
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return false;
}

View File

@ -31,11 +31,13 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;
import java.util.List;
import javax.annotation.Nonnull;
public class BlockMechanicalConverter extends BlockIWBase implements IMetaEnum {
private static PropertyEnum<MechanicalBlockType> type = PropertyEnum.create("type", MechanicalBlockType.class);
@ -44,7 +46,7 @@ public class BlockMechanicalConverter extends BlockIWBase implements IMetaEnum {
}
@Override
public void getSubBlocks(Item itemIn, CreativeTabs tab, List<ItemStack> list) {
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
for (int i = 0;i<3;i++) {
list.add(new ItemStack(itemIn, 1, i));
}
@ -55,6 +57,7 @@ public class BlockMechanicalConverter extends BlockIWBase implements IMetaEnum {
return new IProperty[]{type, IEProperties.FACING_ALL};
}
@Nonnull
@Override
public IBlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(type, MechanicalBlockType.values[meta]);
@ -66,7 +69,7 @@ public class BlockMechanicalConverter extends BlockIWBase implements IMetaEnum {
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
public TileEntity createTileEntity(@Nonnull World world, @Nonnull IBlockState state) {
switch (state.getValue(type)) {
case IE_MOTOR:
return new TileEntityIEMotor();
@ -88,18 +91,22 @@ public class BlockMechanicalConverter extends BlockIWBase implements IMetaEnum {
return state.getValue(type).ordinal();
}
@Override
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY,
float hitZ, int meta, EntityLivingBase placer, ItemStack stack) {
IBlockState base = super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, stack);
@Nonnull
public IBlockState getStateForPlacement(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing facing, float hitX, float hitY,
float hitZ, int meta, @Nonnull EntityLivingBase placer, EnumHand h) {
IBlockState base = super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, h);
return base.withProperty(type, MechanicalBlockType.values[meta]);
}
@Override
public int damageDropped(IBlockState state) {
return state.getValue(type).ordinal();
}
@Nonnull
@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos,
EntityPlayer player) {
public ItemStack getPickBlock(@Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos,
EntityPlayer player) {
return new ItemStack(this, 1, damageDropped(state));
}
@Override

View File

@ -34,6 +34,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import javax.annotation.Nonnull;
public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IFluxReceiver, IDirectionalTile {
public final double bufferMax = 2*MechConversion.maxIfToMech*ConversionUtil.rotPerIf();
@ -43,7 +45,7 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
private BlockPos receiver;
@Override
public void update() {
if (!worldObj.isRemote) {
if (!world.isRemote) {
if (receiver==null) {
receiver = pos.offset(dir);
}
@ -54,7 +56,7 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
rotBuffer += extracted*ConversionUtil.rotPerIf()*MechConversion.ifMotorEfficiency;
dirty = true;
}
TileEntity te = worldObj.getTileEntity(receiver);
TileEntity te = world.getTileEntity(receiver);
if (te instanceof IRotationAcceptor) {
((IRotationAcceptor)te).inputRotation(rotBuffer, dir);
rotBuffer = 0;
@ -106,12 +108,13 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
}
// Directional
@Nonnull
@Override
public EnumFacing getFacing() {
return dir;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
dir = facing;
receiver = null;
markDirty();
@ -121,15 +124,15 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
return 1;
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return false;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return true;
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
public boolean hasCapability(@Nonnull Capability<?> capability, EnumFacing facing) {
if (capability==CapabilityEnergy.ENERGY&&canConnectEnergy(facing)) {
return true;
}
@ -137,7 +140,7 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
}
@Override
@SuppressWarnings("unchecked")
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
public <T> T getCapability(@Nonnull Capability<T> capability, EnumFacing facing) {
if (capability==CapabilityEnergy.ENERGY&&canConnectEnergy(facing)) {
return (T) new EnergyAdapter(this, facing);
}
@ -145,7 +148,7 @@ public class TileEntityIEMotor extends TileEntityIWBase implements ITickable, IF
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return true;
}
}

View File

@ -30,6 +30,8 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.BlockPos;
import javax.annotation.Nonnull;
public class TileEntityMechICtoIE extends TileEntityIWBase implements IDirectionalTile, ITickable {
EnumFacing dir = EnumFacing.DOWN;
int kinBuffer = 0;
@ -39,14 +41,14 @@ public class TileEntityMechICtoIE extends TileEntityIWBase implements IDirection
BlockPos from;
@Override
public void update() {
if (!worldObj.isRemote) {
if (!world.isRemote) {
if (to==null) {
to = pos.offset(dir);
}
if (from==null) {
from = pos.offset(dir, -1);
}
TileEntity teFrom = worldObj.getTileEntity(from);
TileEntity teFrom = world.getTileEntity(from);
if (teFrom instanceof IKineticSource) {
int sourceMax = ((IKineticSource) teFrom).maxrequestkineticenergyTick(dir);
int draw = Math.min(kinBufMax-kinBuffer, sourceMax);
@ -54,7 +56,7 @@ public class TileEntityMechICtoIE extends TileEntityIWBase implements IDirection
kinBuffer += ((IKineticSource) teFrom).requestkineticenergy(dir, draw)*MechConversion.kinToRotEfficiency;
}
}
TileEntity teTo = worldObj.getTileEntity(to);
TileEntity teTo = world.getTileEntity(to);
if (kinBuffer>0&&teTo instanceof IRotationAcceptor) {
double out = Math.min(maxInsert, ConversionUtil.rotPerKin()*kinBuffer);
((IRotationAcceptor) teTo).inputRotation(out, dir);
@ -77,12 +79,13 @@ public class TileEntityMechICtoIE extends TileEntityIWBase implements IDirection
from = null;
}
// Directional
@Nonnull
@Override
public EnumFacing getFacing() {
return dir;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
dir = facing;
to = null;
from = null;
@ -93,15 +96,15 @@ public class TileEntityMechICtoIE extends TileEntityIWBase implements IDirection
return 1;
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return false;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return true;
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return true;
}
}

View File

@ -27,6 +27,8 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import javax.annotation.Nonnull;
public class TileEntityMechIEtoIC extends TileEntityIWBase implements IDirectionalTile, IRotationAcceptor, IKineticSource {
EnumFacing dir = EnumFacing.DOWN;
double rotBuffer = 0;
@ -45,12 +47,13 @@ public class TileEntityMechIEtoIC extends TileEntityIWBase implements IDirection
rotBuffer = in.getDouble(BUFFER_TAG);
}
// Directional
@Nonnull
@Override
public EnumFacing getFacing() {
return dir;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
dir = facing;
markDirty();
}
@ -59,11 +62,11 @@ public class TileEntityMechIEtoIC extends TileEntityIWBase implements IDirection
return 1;
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return false;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return true;
}
//IC2 kinetic
@ -91,13 +94,13 @@ public class TileEntityMechIEtoIC extends TileEntityIWBase implements IDirection
//IE rotation
@Override
public void inputRotation(double rotation, EnumFacing side) {
public void inputRotation(double rotation, @Nonnull EnumFacing side) {
if (side==dir) {
rotBuffer = Math.min(rotBufMax, rotBuffer+rotation);
}
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return true;
}
}

View File

@ -21,7 +21,6 @@ import blusunrize.immersiveengineering.api.IEProperties;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.BlockIWBase;
import malte0811.industrialWires.blocks.IMetaEnum;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
@ -33,26 +32,28 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.property.ExtendedBlockState;
import net.minecraftforge.common.property.IUnlistedProperty;
import javax.annotation.Nonnull;
import java.util.Arrays;
import java.util.List;
public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
private static PropertyEnum<BlockTypes_IC2_Connector> type = PropertyEnum.create("type", BlockTypes_IC2_Connector.class);
public BlockIC2Connector() {
super(Material.IRON, "ic2Connector");
super(Material.IRON, "ic2_connector");
setHardness(3.0F);
setResistance(15.0F);
lightOpacity = 0;
this.setCreativeTab(IndustrialWires.creativeTab);
}
@Override
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn) {
public void onNeighborChange(IBlockAccess world, BlockPos pos, BlockPos posNeighbor) {
TileEntity te = world.getTileEntity(pos);
if(te instanceof TileEntityIC2ConnectorTin) {
TileEntityIC2ConnectorTin connector = (TileEntityIC2ConnectorTin) te;
@ -64,12 +65,13 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
}
@Override
public void getSubBlocks(Item itemIn, CreativeTabs tab, List<ItemStack> list) {
public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list) {
for (int i = 0;i<type.getAllowedValues().size();i++) {
list.add(new ItemStack(itemIn, 1, i));
}
}
@Nonnull
@Override
protected BlockStateContainer createBlockState() {
BlockStateContainer base = super.createBlockState();
@ -84,8 +86,9 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
return new IProperty[]{type, IEProperties.FACING_ALL};
}
@Nonnull
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
public IBlockState getActualState(@Nonnull IBlockState state, IBlockAccess worldIn, BlockPos pos) {
state = super.getActualState(state, worldIn, pos);
TileEntity te = worldIn.getTileEntity(pos);
if (te instanceof TileEntityIC2ConnectorTin) {
@ -94,13 +97,14 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
return state;
}
@Nonnull
@Override
public IBlockState getStateFromMeta(int meta) {
return super.getStateFromMeta(meta).withProperty(type, BlockTypes_IC2_Connector.values()[meta]);
}
@Override
public boolean isSideSolid(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
public boolean isSideSolid(IBlockState state, @Nonnull IBlockAccess world, @Nonnull BlockPos pos, EnumFacing side) {
return false;
}
@ -110,7 +114,7 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
}
@Override
public TileEntity createTileEntity(World world, IBlockState state) {
public TileEntity createTileEntity(@Nonnull World world, @Nonnull IBlockState state) {
switch (state.getValue(type)) {
case TIN_CONN:
return new TileEntityIC2ConnectorTin(false);
@ -136,7 +140,7 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
return null;
}
@Override
public boolean canRenderInLayer(BlockRenderLayer layer) {
public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer) {
return layer==BlockRenderLayer.TRANSLUCENT||layer==BlockRenderLayer.SOLID;
}
@Override
@ -155,10 +159,11 @@ public class BlockIC2Connector extends BlockIWBase implements IMetaEnum {
public boolean isOpaqueCube(IBlockState state) {
return false;
}
@Override
/*@Override
public boolean isVisuallyOpaque() {
return false;
}
}*/
@Override
public Object[] getValues() {
return BlockTypes_IC2_Connector.values();

View File

@ -17,16 +17,6 @@
*/
package malte0811.industrialWires.blocks.wire;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import malte0811.industrialWires.blocks.IBlockBoundsIW;
import net.minecraft.util.math.AxisAlignedBB;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.TargetingInfo;
import blusunrize.immersiveengineering.api.energy.wires.IImmersiveConnectable;
@ -35,7 +25,6 @@ import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Abst
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler.Connection;
import blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable;
import blusunrize.immersiveengineering.api.energy.wires.WireType;
import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IBlockBounds;
import blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDirectionalTile;
import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent;
@ -44,13 +33,23 @@ import ic2.api.energy.tile.IEnergyEmitter;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergySource;
import malte0811.industrialWires.IIC2Connector;
import malte0811.industrialWires.blocks.IBlockBoundsIW;
import malte0811.industrialWires.wires.IC2Wiretype;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.Vec3d;
import net.minecraftforge.common.MinecraftForge;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nonnull;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable implements IEnergySource, IEnergySink, IDirectionalTile, ITickable, IIC2Connector, IBlockBoundsIW {
EnumFacing f = EnumFacing.NORTH;
@ -71,20 +70,20 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
@Override
public void update() {
if (first) {
if (!worldObj.isRemote)
if (!world.isRemote)
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
first = false;
}
if (!worldObj.isRemote&&inBuffer>.1)
if (!world.isRemote && inBuffer > .1)
transferPower();
}
public void transferPower() {
Set<AbstractConnection> conns = new HashSet<>(ImmersiveNetHandler.INSTANCE.getIndirectEnergyConnections(pos, worldObj));
Set<AbstractConnection> conns = new HashSet<>(ImmersiveNetHandler.INSTANCE.getIndirectEnergyConnections(pos, world));
Map<AbstractConnection, Pair<IIC2Connector, Double>> maxOutputs = new HashMap<>();
double outputMax = Math.min(inBuffer, maxToNet);
double sum = 0;
for (AbstractConnection c:conns) {
IImmersiveConnectable iic = ApiUtils.toIIC(c.end, worldObj);
IImmersiveConnectable iic = ApiUtils.toIIC(c.end, world);
if (iic instanceof IIC2Connector) {
double tmp = inBuffer-((IIC2Connector)iic).insertEnergy(outputMax, true);
if (tmp>.00000001) {
@ -97,7 +96,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
return;
}
final double oldInBuf = outputMax;
HashMap<Connection, Integer> transferedPerConn = ImmersiveNetHandler.INSTANCE.getTransferedRates(worldObj.provider.getDimension());
HashMap<Connection, Integer> transferedPerConn = ImmersiveNetHandler.INSTANCE.getTransferedRates(world.provider.getDimension());
for (AbstractConnection c:maxOutputs.keySet()) {
Pair<IIC2Connector, Double> p = maxOutputs.get(c);
double out = oldInBuf*p.getRight()/sum;
@ -109,11 +108,11 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
double energyAtConn = inserted+loss;
for(Connection sub : c.subConnections)
{
int transferredPerCon = transferedPerConn.containsKey(sub)?transferedPerConn.get(sub):0;
int transferredPerCon = transferedPerConn.getOrDefault(sub, 0);
energyAtConn-=sub.cableType.getLossRatio()*sub.length;
ImmersiveNetHandler.INSTANCE.getTransferedRates(worldObj.provider.getDimension()).put(sub,(int)(transferredPerCon+energyAtConn));
IImmersiveConnectable subStart = ApiUtils.toIIC(sub.start,worldObj);
IImmersiveConnectable subEnd = ApiUtils.toIIC(sub.end,worldObj);
ImmersiveNetHandler.INSTANCE.getTransferedRates(world.provider.getDimension()).put(sub, (int) (transferredPerCon + energyAtConn));
IImmersiveConnectable subStart = ApiUtils.toIIC(sub.start, world);
IImmersiveConnectable subEnd = ApiUtils.toIIC(sub.end, world);
if(subStart!=null && passedConnectors.add(subStart))
subStart.onEnergyPassthrough((int)(inserted-inserted*intermediaryLoss));
if(subEnd!=null && passedConnectors.add(subEnd))
@ -147,7 +146,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
}
@Override
public void invalidate() {
if (!worldObj.isRemote&&!first)
if (!world.isRemote && !first)
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
first = true;
super.invalidate();
@ -155,7 +154,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
@Override
public void onChunkUnload() {
super.onChunkUnload();
if (!worldObj.isRemote&&!first)
if (!world.isRemote && !first)
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
first = true;
}
@ -277,13 +276,14 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
nbt.setDouble("maxToMachine", maxToMachine);
}
@Nonnull
@Override
public EnumFacing getFacing() {
return f;
}
@Override
public void setFacing(EnumFacing facing) {
public void setFacing(@Nonnull EnumFacing facing) {
f = facing;
}
@ -293,12 +293,12 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
}
@Override
public boolean mirrorFacingOnPlacement(EntityLivingBase placer) {
public boolean mirrorFacingOnPlacement(@Nonnull EntityLivingBase placer) {
return true;
}
@Override
public boolean canHammerRotate(EnumFacing side, float hitX, float hitY, float hitZ, EntityLivingBase entity) {
public boolean canHammerRotate(@Nonnull EnumFacing side, float hitX, float hitY, float hitZ, @Nonnull EntityLivingBase entity) {
return false;
}
@ -332,7 +332,7 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
*/
@Override
public int hashCode() {
int ret = worldObj.provider.getDimension();
int ret = world.provider.getDimension();
ret = 31*ret+pos.hashCode();
return ret;
}
@ -351,13 +351,13 @@ public class TileEntityIC2ConnectorTin extends TileEntityImmersiveConnectable im
if (!te.pos.equals(pos)) {
return false;
}
if (te.worldObj.provider.getDimension()!=worldObj.provider.getDimension()) {
if (te.world.provider.getDimension() != world.provider.getDimension()) {
return false;
}
return true;
}
@Override
public boolean canRotate(EnumFacing axis) {
public boolean canRotate(@Nonnull EnumFacing axis) {
return false;
}
}

View File

@ -45,11 +45,11 @@ import org.apache.commons.lang3.tuple.Pair;
public class ClientEventHandler {
@SubscribeEvent
public void renderOverlayPost(RenderGameOverlayEvent.Post e) {
if(ClientUtils.mc().thePlayer!=null && e.getType() == RenderGameOverlayEvent.ElementType.TEXT) {
EntityPlayer player = ClientUtils.mc().thePlayer;
if (ClientUtils.mc().player != null && e.getType() == RenderGameOverlayEvent.ElementType.TEXT) {
EntityPlayer player = ClientUtils.mc().player;
for(EnumHand hand : EnumHand.values()) {
if(player.getHeldItem(hand)!=null) {
if (!player.getHeldItem(hand).isEmpty()) {
ItemStack equipped = player.getHeldItem(hand);
if(OreDictionary.itemMatches(new ItemStack(IndustrialWires.coil, 1, OreDictionary.WILDCARD_VALUE), equipped, false)) {
IC2Wiretype type = IC2Wiretype.IC2_TYPES[equipped.getItemDamage()];
@ -62,7 +62,7 @@ public class ClientEventHandler {
s = I18n.format(Lib.DESC_INFO+"attachedTo", link[1],link[2],link[3]);
RayTraceResult focussedBlock = ClientUtils.mc().objectMouseOver;
double distSquared;
if (focussedBlock!=null&&focussedBlock.getBlockPos()!=null) {
if (focussedBlock != null && focussedBlock.typeOfHit == RayTraceResult.Type.BLOCK) {
distSquared = focussedBlock.getBlockPos().distanceSq(link[1],link[2],link[3]);
} else {
distSquared = player.getDistanceSq(link[1],link[2],link[3]);
@ -83,10 +83,10 @@ public class ClientEventHandler {
@SubscribeEvent
public void renderBoundingBoxes(DrawBlockHighlightEvent event) {
if (!event.isCanceled() && event.getSubID() == 0 && event.getTarget().typeOfHit == RayTraceResult.Type.BLOCK) {
TileEntity tile = event.getPlayer().worldObj.getTileEntity(event.getTarget().getBlockPos());
TileEntity tile = event.getPlayer().world.getTileEntity(event.getTarget().getBlockPos());
if (tile instanceof TileEntityPanel) {
TileEntityPanel panel = (TileEntityPanel) tile;
Pair<PanelComponent, RayTraceResult> pc = panel.getSelectedComponent(Minecraft.getMinecraft().thePlayer, event.getTarget().hitVec, true);
Pair<PanelComponent, RayTraceResult> pc = panel.getSelectedComponent(Minecraft.getMinecraft().player, event.getTarget().hitVec, true);
if (pc != null) {
pc.getLeft().renderBox(panel);
event.setCanceled(true);

View File

@ -21,6 +21,7 @@ import blusunrize.immersiveengineering.api.ManualHelper;
import blusunrize.immersiveengineering.client.ClientUtils;
import blusunrize.immersiveengineering.client.models.smart.ConnLoader;
import blusunrize.immersiveengineering.common.Config;
import blusunrize.immersiveengineering.common.util.IELogger;
import blusunrize.lib.manual.ManualInstance;
import blusunrize.lib.manual.ManualPages;
import blusunrize.lib.manual.ManualPages.PositionedItemStack;
@ -73,42 +74,42 @@ public class ClientProxy extends CommonProxy {
@Override
public void preInit() {
super.preInit();
ConnLoader.baseModels.put("ic2_conn_tin", new ResourceLocation("immersiveengineering:block/connector/connectorLV.obj"));
ConnLoader.textureReplacements.put("ic2_conn_tin", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorLV",
IndustrialWires.MODID + ":blocks/ic2_connTin"));
ConnLoader.baseModels.put("ic2_relay_tin", new ResourceLocation("immersiveengineering:block/connector/connectorLV.obj"));
ConnLoader.textureReplacements.put("ic2_relay_tin", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorLV",
IndustrialWires.MODID + ":blocks/ic2_relayTin"));
ConnLoader.baseModels.put("ic2_conn_tin", new ResourceLocation("immersiveengineering:block/connector/connector_lv.obj"));
ConnLoader.textureReplacements.put("ic2_conn_tin", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_lv",
IndustrialWires.MODID + ":blocks/ic2_conn_tin"));
ConnLoader.baseModels.put("ic2_relay_tin", new ResourceLocation("immersiveengineering:block/connector/connector_lv.obj"));
ConnLoader.textureReplacements.put("ic2_relay_tin", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_lv",
IndustrialWires.MODID + ":blocks/ic2_relay_tin"));
ConnLoader.baseModels.put("ic2_conn_copper", new ResourceLocation("immersiveengineering:block/connector/connectorLV.obj"));
ConnLoader.textureReplacements.put("ic2_conn_copper", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorLV",
IndustrialWires.MODID + ":blocks/ic2_connCopper"));
ConnLoader.baseModels.put("ic2_relay_copper", new ResourceLocation("immersiveengineering:block/connector/connectorLV.obj"));
ConnLoader.textureReplacements.put("ic2_relay_copper", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorLV",
IndustrialWires.MODID + ":blocks/ic2_relayCopper"));
ConnLoader.baseModels.put("ic2_conn_copper", new ResourceLocation("immersiveengineering:block/connector/connector_lv.obj"));
ConnLoader.textureReplacements.put("ic2_conn_copper", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_lv",
IndustrialWires.MODID + ":blocks/ic2_conn_copper"));
ConnLoader.baseModels.put("ic2_relay_copper", new ResourceLocation("immersiveengineering:block/connector/connector_lv.obj"));
ConnLoader.textureReplacements.put("ic2_relay_copper", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_lv",
IndustrialWires.MODID + ":blocks/ic2_relay_copper"));
ConnLoader.baseModels.put("ic2_conn_gold", new ResourceLocation("immersiveengineering:block/connector/connectorMV.obj"));
ConnLoader.textureReplacements.put("ic2_conn_gold", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorMV",
IndustrialWires.MODID + ":blocks/ic2_connGold"));
ConnLoader.baseModels.put("ic2_relay_gold", new ResourceLocation("immersiveengineering:block/connector/connectorMV.obj"));
ConnLoader.textureReplacements.put("ic2_relay_gold", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorMV",
IndustrialWires.MODID + ":blocks/ic2_relayGold"));
ConnLoader.baseModels.put("ic2_conn_gold", new ResourceLocation("immersiveengineering:block/connector/connector_mv.obj"));
ConnLoader.textureReplacements.put("ic2_conn_gold", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_mv",
IndustrialWires.MODID + ":blocks/ic2_conn_gold"));
ConnLoader.baseModels.put("ic2_relay_gold", new ResourceLocation("immersiveengineering:block/connector/connector_mv.obj"));
ConnLoader.textureReplacements.put("ic2_relay_gold", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_mv",
IndustrialWires.MODID + ":blocks/ic2_relay_gold"));
ConnLoader.baseModels.put("ic2_conn_hv", new ResourceLocation("immersiveengineering:block/connector/connectorHV.obj"));
ConnLoader.textureReplacements.put("ic2_conn_hv", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorHV",
IndustrialWires.MODID + ":blocks/ic2_connHV"));
ConnLoader.baseModels.put("ic2_relay_hv", new ResourceLocation("immersiveengineering:block/connector/relayHV.obj"));
ConnLoader.baseModels.put("ic2_conn_hv", new ResourceLocation("immersiveengineering:block/connector/connector_hv.obj"));
ConnLoader.textureReplacements.put("ic2_conn_hv", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_hv",
IndustrialWires.MODID + ":blocks/ic2_conn_hv"));
ConnLoader.baseModels.put("ic2_relay_hv", new ResourceLocation("immersiveengineering:block/connector/relay_hv.obj"));
ConnLoader.baseModels.put("ic2_conn_glass", new ResourceLocation("immersiveengineering:block/connector/connectorHV.obj"));
ConnLoader.textureReplacements.put("ic2_conn_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_connectorHV",
IndustrialWires.MODID + ":blocks/ic2_connGlass"));
ConnLoader.baseModels.put("ic2_relay_glass", new ResourceLocation("immersiveengineering:block/connector/relayHV.obj"));
ConnLoader.textureReplacements.put("ic2_relay_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_relayHV",
IndustrialWires.MODID + ":blocks/ic2_relayGlass"));
ConnLoader.baseModels.put("ic2_conn_glass", new ResourceLocation("immersiveengineering:block/connector/connector_hv.obj"));
ConnLoader.textureReplacements.put("ic2_conn_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_connector_hv",
IndustrialWires.MODID + ":blocks/ic2_conn_glass"));
ConnLoader.baseModels.put("ic2_relay_glass", new ResourceLocation("immersiveengineering:block/connector/relay_hv.obj"));
ConnLoader.textureReplacements.put("ic2_relay_glass", ImmutableMap.of("#immersiveengineering:blocks/connector_relay_hv",
IndustrialWires.MODID + ":blocks/ic2_relay_glass"));
ConnLoader.baseModels.put("rs_panel_conn", new ResourceLocation("industrialwires:block/rs_panel_conn.obj"));
for (int meta = 0; meta < ItemIC2Coil.subNames.length; meta++) {
ResourceLocation loc = new ResourceLocation(IndustrialWires.MODID, "ic2wireCoil/" + ItemIC2Coil.subNames[meta]);
ResourceLocation loc = new ResourceLocation(IndustrialWires.MODID, "ic2_wire_coil/" + ItemIC2Coil.subNames[meta]);
ModelBakery.registerItemVariants(IndustrialWires.coil, loc);
ModelLoader.setCustomModelResourceLocation(IndustrialWires.coil, meta, new ModelResourceLocation(loc, "inventory"));
}
@ -123,12 +124,14 @@ public class ClientProxy extends CommonProxy {
if (b != null) {
Item blockItem = Item.getItemFromBlock(b);
final ResourceLocation loc = b.getRegistryName();
assert loc != null;
ModelLoader.setCustomMeshDefinition(blockItem, stack -> new ModelResourceLocation(loc, "inventory"));
Object[] v = ((IMetaEnum) b).getValues();
for (int meta = 0; meta < v.length; meta++) {
String location = loc.toString();
String prop = "inventory,type=" + v[meta].toString().toLowerCase(Locale.US);
try {
IELogger.info(location + ", " + prop);
ModelLoader.setCustomModelResourceLocation(blockItem, meta, new ModelResourceLocation(location, prop));
} catch (NullPointerException npe) {
throw new RuntimeException(b + " lacks an item!", npe);
@ -191,54 +194,54 @@ public class ClientProxy extends CommonProxy {
return ~0;
}, IndustrialWires.panelComponent);
m.addEntry("industrialWires.wires", "industrialWires",
new ManualPages.CraftingMulti(m, "industrialWires.wires0", new ItemStack(IndustrialWires.ic2conn, 1, 0), new ItemStack(IndustrialWires.ic2conn, 1, 1), new ItemStack(IndustrialWires.ic2conn, 1, 2), new ItemStack(IndustrialWires.ic2conn, 1, 3),
m.addEntry("industrialwires.wires", "industrialwires",
new ManualPages.CraftingMulti(m, "industrialwires.wires0", new ItemStack(IndustrialWires.ic2conn, 1, 0), new ItemStack(IndustrialWires.ic2conn, 1, 1), new ItemStack(IndustrialWires.ic2conn, 1, 2), new ItemStack(IndustrialWires.ic2conn, 1, 3),
new ItemStack(IndustrialWires.ic2conn, 1, 4), new ItemStack(IndustrialWires.ic2conn, 1, 5), new ItemStack(IndustrialWires.ic2conn, 1, 6), new ItemStack(IndustrialWires.ic2conn, 1, 7)),
new ManualPages.Text(m, "industrialWires.wires1"),
new ManualPages.CraftingMulti(m, "industrialWires.wires2", (Object[]) wireRecipes)
new ManualPages.Text(m, "industrialwires.wires1"),
new ManualPages.CraftingMulti(m, "industrialwires.wires2", (Object[]) wireRecipes)
);
if (IndustrialWires.mechConv != null) {
m.addEntry("industrialWires.mechConv", "industrialWires",
new ManualPages.Crafting(m, "industrialWires.mechConv0", new ItemStack(IndustrialWires.mechConv, 1, 1)),
new ManualPages.Crafting(m, "industrialWires.mechConv1", new ItemStack(IndustrialWires.mechConv, 1, 2)),
new ManualPages.Crafting(m, "industrialWires.mechConv2", new ItemStack(IndustrialWires.mechConv, 1, 0))
m.addEntry("industrialwires.mechConv", "industrialwires",
new ManualPages.Crafting(m, "industrialwires.mechConv0", new ItemStack(IndustrialWires.mechConv, 1, 1)),
new ManualPages.Crafting(m, "industrialwires.mechConv1", new ItemStack(IndustrialWires.mechConv, 1, 2)),
new ManualPages.Crafting(m, "industrialwires.mechConv2", new ItemStack(IndustrialWires.mechConv, 1, 0))
);
}
Config.manual_doubleA.put("iwJacobsUsage", IWConfig.HVStuff.jacobsUsageEU);
m.addEntry("industrialWires.jacobs", "industrialWires",
new ManualPages.CraftingMulti(m, "industrialWires.jacobs0", new ItemStack(IndustrialWires.jacobsLadder, 1, 0), new ItemStack(IndustrialWires.jacobsLadder, 1, 1), new ItemStack(IndustrialWires.jacobsLadder, 1, 2)),
new ManualPages.Text(m, "industrialWires.jacobs1"));
m.addEntry("industrialwires.jacobs", "industrialwires",
new ManualPages.CraftingMulti(m, "industrialwires.jacobs0", new ItemStack(IndustrialWires.jacobsLadder, 1, 0), new ItemStack(IndustrialWires.jacobsLadder, 1, 1), new ItemStack(IndustrialWires.jacobsLadder, 1, 2)),
new ManualPages.Text(m, "industrialwires.jacobs1"));
m.addEntry("industrialWires.intro", "control_panels",
new ManualPages.Text(m, "industrialWires.intro0"),
new ManualPages.Text(m, "industrialWires.intro1"),
new ManualPages.Crafting(m, "industrialWires.intro2", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.DUMMY.ordinal())),
new ManualPages.Text(m, "industrialWires.intro3")
m.addEntry("industrialwires.intro", "control_panels",
new ManualPages.Text(m, "industrialwires.intro0"),
new ManualPages.Text(m, "industrialwires.intro1"),
new ManualPages.Crafting(m, "industrialwires.intro2", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.DUMMY.ordinal())),
new ManualPages.Text(m, "industrialwires.intro3")
);
m.addEntry("industrialWires.panel_creator", "control_panels",
new ManualPages.Crafting(m, "industrialWires.panel_creator0", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.CREATOR.ordinal())),
new ManualPages.Text(m, "industrialWires.panel_creator1"),
new ManualPages.Text(m, "industrialWires.panel_creator2")
m.addEntry("industrialwires.panel_creator", "control_panels",
new ManualPages.Crafting(m, "industrialwires.panel_creator0", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.CREATOR.ordinal())),
new ManualPages.Text(m, "industrialwires.panel_creator1"),
new ManualPages.Text(m, "industrialwires.panel_creator2")
);
m.addEntry("industrialWires.redstone", "control_panels",
new ManualPages.Crafting(m, "industrialWires.redstone0", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.RS_WIRE.ordinal())),
new ManualPages.Text(m, "industrialWires.redstone1")
m.addEntry("industrialwires.redstone", "control_panels",
new ManualPages.Crafting(m, "industrialwires.redstone0", new ItemStack(IndustrialWires.panel, 1, BlockTypes_Panel.RS_WIRE.ordinal())),
new ManualPages.Text(m, "industrialwires.redstone1")
);
m.addEntry("industrialWires.components", "control_panels",
new ManualPages.Crafting(m, "industrialWires.button", new ItemStack(IndustrialWires.panelComponent, 1, 0)),
new ManualPages.Crafting(m, "industrialWires.label", new ItemStack(IndustrialWires.panelComponent, 1, 1)),
new ManualPages.Crafting(m, "industrialWires.indicator_light", new ItemStack(IndustrialWires.panelComponent, 1, 2)),
new ManualPages.Crafting(m, "industrialWires.slider", new ItemStack(IndustrialWires.panelComponent, 1, 3)),
new ManualPages.CraftingMulti(m, "industrialWires.toggle_switch", new ItemStack(IndustrialWires.panelComponent, 1, 5), new ItemStack(IndustrialWires.panelComponent, 1, 6)),
new ManualPages.Text(m, "industrialWires.toggle_switch1"),
new ManualPages.Crafting(m, "industrialWires.variac", new ItemStack(IndustrialWires.panelComponent, 1, 4))
m.addEntry("industrialwires.components", "control_panels",
new ManualPages.Crafting(m, "industrialwires.button", new ItemStack(IndustrialWires.panelComponent, 1, 0)),
new ManualPages.Crafting(m, "industrialwires.label", new ItemStack(IndustrialWires.panelComponent, 1, 1)),
new ManualPages.Crafting(m, "industrialwires.indicator_light", new ItemStack(IndustrialWires.panelComponent, 1, 2)),
new ManualPages.Crafting(m, "industrialwires.slider", new ItemStack(IndustrialWires.panelComponent, 1, 3)),
new ManualPages.CraftingMulti(m, "industrialwires.toggle_switch", new ItemStack(IndustrialWires.panelComponent, 1, 5), new ItemStack(IndustrialWires.panelComponent, 1, 6)),
new ManualPages.Text(m, "industrialwires.toggle_switch1"),
new ManualPages.Crafting(m, "industrialwires.variac", new ItemStack(IndustrialWires.panelComponent, 1, 4))
);
}
@Override
public World getClientWorld() {
return Minecraft.getMinecraft().theWorld;
return Minecraft.getMinecraft().world;
}
private WeakHashMap<BlockPos, ISound> playingSounds = new WeakHashMap<>();
@ -283,7 +286,7 @@ public class ClientProxy extends CommonProxy {
} else if (ID==1) {
EnumHand h = z == 1 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND;
ItemStack held = player.getHeldItem(h);
if (held != null && held.getItem() == IndustrialWires.panelComponent) {
if (!held.isEmpty() && held.getItem() == IndustrialWires.panelComponent) {
return new GuiPanelComponent(h, ItemPanelComponent.componentFromStack(held));
}
}

View File

@ -62,7 +62,7 @@ public class GuiPanelComponent extends GuiContainer {
IConfigurableComponent.StringConfig[] strings = confComp.getStringOptions();
stringTexts.clear();
for (IConfigurableComponent.StringConfig sc : strings) {
GuiTextField toAdd = new GuiTextField(0, mc.fontRendererObj, componentLeft + sc.x, componentTop + sc.y, 58, 12);
GuiTextField toAdd = new GuiTextField(0, mc.fontRenderer, componentLeft + sc.x, componentTop + sc.y, 58, 12);
toAdd.setText(sc.value);
stringTexts.add(toAdd);
}
@ -208,14 +208,14 @@ public class GuiPanelComponent extends GuiContainer {
GuiChannelPicker pick = rsChannelChoosers.get(i);
String tooltip = confComp.fomatConfigDescription(IConfigurableComponent.ConfigType.RS_CHANNEL, i);
if (tooltip!=null&&pick.isHovered(mouseX, mouseY)) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
for (int i = 0;i<boolButtons.size();i++) {
GuiButtonCheckbox box = boolButtons.get(i);
String tooltip = confComp.fomatConfigDescription(IConfigurableComponent.ConfigType.BOOL, i);
if (tooltip!=null&&box.isMouseOver()) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
for (int i = 0;i<stringTexts.size();i++) {
@ -223,21 +223,21 @@ public class GuiPanelComponent extends GuiContainer {
String tooltip = confComp.fomatConfigDescription(IConfigurableComponent.ConfigType.STRING, i);
if (tooltip!=null&&mouseX>=field.xPosition&&mouseX<field.xPosition+field.width&&
mouseY>=field.yPosition&&mouseY<field.yPosition+field.height) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
for (int i = 0;i<intChoosers.size();i++) {
GuiIntChooser choose = intChoosers.get(i);
String tooltip = confComp.fomatConfigDescription(IConfigurableComponent.ConfigType.INT, i);
if (tooltip!=null&&choose.isMouseOver(mouseX, mouseY)) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
for (int i = 0;i<floatSliders.size();i++) {
GuiSliderIE choose = floatSliders.get(i);
String tooltip = confComp.fomatConfigDescription(IConfigurableComponent.ConfigType.FLOAT, i);
if (tooltip!=null&&choose.isMouseOver()) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
}

View File

@ -81,7 +81,7 @@ public class GuiPanelCreator extends GuiContainer {
String tooltip = null;
if (buttonList.get(0).isMouseOver()) {
tooltip = I18n.format(IndustrialWires.MODID+".desc.create_panel");
ClientUtils.drawHoveringText(ImmutableList.of("Create a new panel"), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of("Create a new panel"), mouseX, mouseY, mc.fontRenderer);
} else if (buttonList.get(1).isMouseOver()) {
tooltip = I18n.format(IndustrialWires.MODID+".desc.remove_all");
} else if (buttonList.get(2).isMouseOver()) {
@ -94,7 +94,7 @@ public class GuiPanelCreator extends GuiContainer {
tooltip = I18n.format(IndustrialWires.MODID+".desc.disassemble");
}
if (tooltip!=null) {
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRendererObj);
ClientUtils.drawHoveringText(ImmutableList.of(tooltip), mouseX, mouseY, mc.fontRenderer);
}
}
@ -144,16 +144,16 @@ public class GuiPanelCreator extends GuiContainer {
nbt.setInteger("type", MessageType.ADD.ordinal());
IndustrialWires.packetHandler.sendToServer(new MessageGUIInteract(container.tile, nbt));
components.add(curr.copyOf());
ItemStack currStack = mc.thePlayer.inventory.getItemStack();
if (currStack != null) {
currStack.stackSize--;
if (currStack.stackSize <= 0) {
mc.thePlayer.inventory.setItemStack(null);
ItemStack currStack = mc.player.inventory.getItemStack();
if (!currStack.isEmpty()) {
currStack.shrink(1);
if (currStack.getCount() <= 0) {
mc.player.inventory.setItemStack(ItemStack.EMPTY);
}
}
}
} else if (mc.thePlayer.inventory.getItemStack()==null) {
} else if (mc.player.inventory.getItemStack().isEmpty()) {
float xRelFloat = xRel/(float) panelSize;
float yRelFloat = yRel/(float) panelSize;
for (int i = 0;i<components.size();i++) {
@ -162,7 +162,7 @@ public class GuiPanelCreator extends GuiContainer {
if (aabb.minX<=xRelFloat&&aabb.maxX>xRelFloat&&aabb.minZ<=yRelFloat&&aabb.maxZ>yRelFloat) {
PanelComponent removed = components.get(i);
ItemStack remItem = ItemPanelComponent.stackFromComponent(removed);
mc.thePlayer.inventory.setItemStack(remItem);
mc.player.inventory.setItemStack(remItem);
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("type", MessageType.REMOVE.ordinal());
nbt.setInteger("id", i);
@ -204,11 +204,12 @@ public class GuiPanelCreator extends GuiContainer {
IndustrialWires.packetHandler.sendToServer(new MessageGUIInteract(container.tile, nbt));
}
}
private ItemStack lastFloating;
private ItemStack lastFloating = ItemStack.EMPTY;
private PanelComponent lastFloatingPC;
private PanelComponent getFloatingPC() {
ItemStack floating = mc.thePlayer.inventory.getItemStack();
if (floating==null||floating.getItem()!=IndustrialWires.panelComponent) {
ItemStack floating = mc.player.inventory.getItemStack();
if (floating.isEmpty() || floating.getItem() != IndustrialWires.panelComponent) {
return null;
}
if (ItemStack.areItemStacksEqual(floating, lastFloating)) {

View File

@ -17,7 +17,7 @@ public class GuiIntChooser extends Gui {
xPos = x;
yPos = y;
max = (int) Math.pow(10, digits)-1;
xPlus = x+mc.fontRendererObj.getCharWidth('0')*(digits+(allowNegative?1:0))+mc.fontRendererObj.getCharWidth('-')+2;
xPlus = x + mc.fontRenderer.getCharWidth('0') * (digits + (allowNegative ? 1 : 0)) + mc.fontRenderer.getCharWidth('-') + 2;
format = "%"+digits+"s";
}
public void drawChooser() {
@ -26,19 +26,19 @@ public class GuiIntChooser extends Gui {
if (value>=0&&allowNegative) {
val = "+"+val;
}
mc.fontRendererObj.drawStringWithShadow(val, xPos+mc.fontRendererObj.getCharWidth('-')+1, yPos, color);
mc.fontRendererObj.drawStringWithShadow("-", xPos, yPos, color);
mc.fontRendererObj.drawStringWithShadow("+", xPlus, yPos, color);
mc.fontRenderer.drawStringWithShadow(val, xPos + mc.fontRenderer.getCharWidth('-') + 1, yPos, color);
mc.fontRenderer.drawStringWithShadow("-", xPos, yPos, color);
mc.fontRenderer.drawStringWithShadow("+", xPlus, yPos, color);
}
public void click(int x, int y) {
int height = mc.fontRendererObj.FONT_HEIGHT;
int height = mc.fontRenderer.FONT_HEIGHT;
if (y >= yPos && y < yPos + height) {
if (x >= xPlus && x < xPlus + mc.fontRendererObj.getCharWidth('+')) {
if (x >= xPlus && x < xPlus + mc.fontRenderer.getCharWidth('+')) {
if (value < max) {
value++;
}
} else if (x >= xPos && x <= xPos + mc.fontRendererObj.getCharWidth('-')) {
} else if (x >= xPos && x <= xPos + mc.fontRenderer.getCharWidth('-')) {
if (value > (allowNegative ? -value : 0)) {
value--;
}
@ -51,6 +51,6 @@ public class GuiIntChooser extends Gui {
}
public boolean isMouseOver(int mX, int mY) {
return mX>=xPos&&mX< xPlus +mc.fontRendererObj.getCharWidth('V')&&mY>=yPos&&mY<yPos+mc.fontRendererObj.FONT_HEIGHT;
return mX >= xPos && mX < xPlus + mc.fontRenderer.getCharWidth('V') && mY >= yPos && mY < yPos + mc.fontRenderer.FONT_HEIGHT;
}
}

View File

@ -53,6 +53,8 @@ public class PanelModel implements IBakedModel {
IEApi.renderCacheClearers.add(modelCache::invalidateAll);
IEApi.renderCacheClearers.add(PanelItemOverride.ITEM_MODEL_CACHE::invalidateAll);
}
@Nonnull
@Override
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
if (side!=null) {
@ -68,7 +70,7 @@ public class PanelModel implements IBakedModel {
m = new AssembledBakedModel(cl);
modelCache.put(cl.copyOf(), m);
}
return m.getQuads(state, side, rand);
return m.getQuads(state, null, rand);
}
return ImmutableList.of();
}
@ -88,16 +90,19 @@ public class PanelModel implements IBakedModel {
return false;
}
@Nonnull
@Override
public TextureAtlasSprite getParticleTexture() {
return PanelUtils.PANEL_TEXTURE;
}
@Nonnull
@Override
public ItemCameraTransforms getItemCameraTransforms() {
return ItemCameraTransforms.DEFAULT;
}
@Nonnull
@Override
public ItemOverrideList getOverrides() {
return INSTANCE;
@ -113,6 +118,7 @@ public class PanelModel implements IBakedModel {
components = comp;
}
@Nonnull
@Override
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
if (quadsDefault == null) {
@ -137,6 +143,7 @@ public class PanelModel implements IBakedModel {
return false;
}
@Nonnull
@Override
public TextureAtlasSprite getParticleTexture() {
return PanelUtils.PANEL_TEXTURE;
@ -150,11 +157,14 @@ public class PanelModel implements IBakedModel {
new ItemTransformVec3f(new Vector3f(30, 45, 0), new Vector3f(0, .125F, 0), new Vector3f(.6F, .6F, .6F)),//GUI
new ItemTransformVec3f(new Vector3f(), new Vector3f(0, .1F, 0), new Vector3f(.25F, .25F, .25F)),//Ground
new ItemTransformVec3f(new Vector3f(0, 180, 45), new Vector3f(0, 0, -.1875F), new Vector3f(.5F, .5F, .5F)));//Fixed;
@Nonnull
@Override
public ItemCameraTransforms getItemCameraTransforms() {//TODO very much cache this!
return transform;
}
@Nonnull
@Override
public ItemOverrideList getOverrides() {
return INSTANCE;

View File

@ -32,6 +32,7 @@ import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.model.IModelState;
import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@ -42,7 +43,7 @@ public class PanelModelLoader implements ICustomModelLoader {
public static final String RESOURCE_LOCATION = "smartmodel/panel";
@Override
public void onResourceManagerReload(IResourceManager resourceManager) {
public void onResourceManagerReload(@Nonnull IResourceManager resourceManager) {
PanelModel.modelCache.invalidateAll();
PanelUtils.PANEL_TEXTURE = null;
}

View File

@ -30,6 +30,8 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.util.vector.Vector3f;
import javax.annotation.Nonnull;
public class RawModelFontRenderer extends FontRenderer {
float[] colorA = new float[4];
private ImmutableList.Builder<RawQuad> builder = ImmutableList.builder();
@ -100,7 +102,7 @@ public class RawModelFontRenderer extends FontRenderer {
}
@Override
protected void bindTexture(ResourceLocation location) {
protected void bindTexture(@Nonnull ResourceLocation location) {
//NO-OP
}
}

View File

@ -24,14 +24,16 @@ import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import javax.annotation.Nonnull;
public class ContainerPanelComponent extends Container {
public EnumHand hand;
public ContainerPanelComponent(EnumHand h) {
hand = h;
}
@Override
public boolean canInteractWith(EntityPlayer playerIn) {
public boolean canInteractWith(@Nonnull EntityPlayer playerIn) {
ItemStack held = playerIn.getHeldItem(hand);
return held!=null&&held.getItem()== IndustrialWires.panelComponent;
return !held.isEmpty() && held.getItem() == IndustrialWires.panelComponent;
}
}

View File

@ -18,22 +18,31 @@
package malte0811.industrialWires.containers;
import blusunrize.immersiveengineering.common.gui.ContainerIEBase;
import malte0811.industrialWires.blocks.controlpanel.TileEntityPanelCreator;
import malte0811.industrialWires.controlpanel.PanelUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
//TODO remove dependency on core IE
public class ContainerPanelCreator extends ContainerIEBase<TileEntityPanelCreator> {
public class ContainerPanelCreator extends Container {
public TileEntityPanelCreator tile;
private IInventory inv;
public ContainerPanelCreator(InventoryPlayer inventoryPlayer, TileEntityPanelCreator tile) {
super(inventoryPlayer, tile);
int slotH = 150;
int slotX = 14;
slotCount = 1;
this.tile = tile;
inv = new SingleSlotInventory((i) -> tile.inv = i, () -> tile.inv, tile::markDirty, this::canInteractWith, "panel_creator");
addSlotToContainer(new Slot(inv, 0, 7, 37) {
@Override
public int getSlotStackLimit() {
@ -52,4 +61,141 @@ public class ContainerPanelCreator extends ContainerIEBase<TileEntityPanelCreato
for (int i = 0; i < 9; i++)
addSlotToContainer(new Slot(inventoryPlayer, i, slotX+i*18, slotH+58));
}
@Override
public boolean canInteractWith(@Nonnull EntityPlayer player) {
return player.getDistanceSq(tile.getPos()) < 100;
}
public static class SingleSlotInventory implements IInventory {
Consumer<ItemStack> set;
Supplier<ItemStack> get;
Runnable markDirty;
Predicate<EntityPlayer> isUsable;
String name;
public SingleSlotInventory(Consumer<ItemStack> set, Supplier<ItemStack> get, Runnable markDirty, Predicate<EntityPlayer> isUsable,
String name) {
this.set = set;
this.get = get;
this.markDirty = markDirty;
this.isUsable = isUsable;
this.name = name;
}
@Override
public int getSizeInventory() {
return 1;
}
@Override
public boolean isEmpty() {
return get.get().isEmpty();
}
@Nonnull
@Override
public ItemStack getStackInSlot(int index) {
return index == 0 ? get.get() : ItemStack.EMPTY;
}
@Nonnull
@Override
public ItemStack decrStackSize(int index, int count) {
if (index != 0) {
return ItemStack.EMPTY;
}
ItemStack stack = get.get();
ItemStack ret = stack.splitStack(count);
if (stack.getCount() <= 0) {
set.accept(ItemStack.EMPTY);
}
return ret;
}
@Nonnull
@Override
public ItemStack removeStackFromSlot(int index) {
if (index == 0) {
ItemStack ret = get.get();
set.accept(ItemStack.EMPTY);
return ret;
}
return ItemStack.EMPTY;
}
@Override
public void setInventorySlotContents(int index, @Nonnull ItemStack stack) {
if (index == 0) {
set.accept(stack);
}
}
@Override
public int getInventoryStackLimit() {
return 1;
}
@Override
public void markDirty() {
markDirty.run();
}
@Override
public boolean isUsableByPlayer(@Nonnull EntityPlayer player) {
return isUsable.test(player);
}
@Override
public void openInventory(@Nonnull EntityPlayer player) {
}
@Override
public void closeInventory(@Nonnull EntityPlayer player) {
}
@Override
public boolean isItemValidForSlot(int index, @Nonnull ItemStack stack) {
return true;
}
@Override
public int getField(int id) {
return 0;
}
@Override
public void setField(int id, int value) {
}
@Override
public int getFieldCount() {
return 0;
}
@Override
public void clear() {
set.accept(ItemStack.EMPTY);
}
@Nonnull
@Override
public String getName() {
return name;
}
@Override
public boolean hasCustomName() {
return false;
}
@Nonnull
@Override
public ITextComponent getDisplayName() {
return new TextComponentString(name);
}
}
}

View File

@ -22,13 +22,15 @@ import malte0811.industrialWires.blocks.controlpanel.TileEntityRSPanelConn;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import javax.annotation.Nonnull;
public class ContainerRSPanelConn extends Container {
final TileEntityRSPanelConn te;
private final TileEntityRSPanelConn te;
public ContainerRSPanelConn(TileEntityRSPanelConn tile) {
te = tile;
}
@Override
public boolean canInteractWith(EntityPlayer playerIn) {
public boolean canInteractWith(@Nonnull EntityPlayer playerIn) {
return playerIn.getDistanceSq(te.getPos())<64;
}
}

View File

@ -60,7 +60,7 @@ public class CoveredToggleSwitch extends ToggleSwitch {
}
@Override
public boolean interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
if (player.isSneaking()&&state==SwitchState.OPEN) {
state = SwitchState.CLOSED;
} else {
@ -69,7 +69,6 @@ public class CoveredToggleSwitch extends ToggleSwitch {
setOut(state.active, tile);
tile.markDirty();
tile.triggerRenderUpdate();
return true;
}
@Override

View File

@ -107,8 +107,7 @@ public class IndicatorLight extends PanelComponent implements IConfigurableCompo
}
@Override
public boolean interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
return false;
public void interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
}
@Override

View File

@ -95,8 +95,7 @@ public class Label extends PanelComponent implements IConfigurableComponent {
}
@Override
public boolean interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
return false;
public void interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
}
@Override
@ -127,10 +126,10 @@ public class Label extends PanelComponent implements IConfigurableComponent {
int left = (int) (gui.getX0()+getX()*gui.panelSize);
int top = (int) (gui.getY0()+getY()*gui.panelSize);
GlStateManager.pushMatrix();
float scale = gui.mc.fontRendererObj.FONT_HEIGHT*gui.panelSize/(16F*9F*9F);
float scale = gui.mc.fontRenderer.FONT_HEIGHT * gui.panelSize / (16F * 9F * 9F);
GlStateManager.translate(left, top, 0);
GlStateManager.scale(scale, scale, scale);
gui.mc.fontRendererObj.drawString(text, 0, 0, 0xff000000|color);
gui.mc.fontRenderer.drawString(text, 0, 0, 0xff000000 | color);
GlStateManager.popMatrix();
}

View File

@ -109,9 +109,9 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon
}
@Override
public boolean interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
if (!latching&&active) {
return false;
return;
}
setOut(!active, tile);
if (!latching) {
@ -119,7 +119,6 @@ public class LightedButton extends PanelComponent implements IConfigurableCompon
}
tile.markDirty();
tile.triggerRenderUpdate();
return true;
}
@Override

View File

@ -78,7 +78,7 @@ public abstract class PanelComponent {
@Nonnull
public abstract AxisAlignedBB getBlockRelativeAABB();
public abstract boolean interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player);
public abstract void interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player);
public abstract void update(TileEntityPanel tile);
@ -149,7 +149,8 @@ public abstract class PanelComponent {
double px = te.getPos().getX()-TileEntityRendererDispatcher.staticPlayerX;
double py = te.getPos().getY()-TileEntityRendererDispatcher.staticPlayerY;
double pz = te.getPos().getZ()-TileEntityRendererDispatcher.staticPlayerZ;
RenderGlobal.func_189697_a(te.apply(te.getComponents().getPanelTopTransform(), getBlockRelativeAABB()).expandXyz(0.002).offset(px, py, pz), 0.0F, 0.0F, 0.0F, 0.4F);
RenderGlobal.drawSelectionBoundingBox(te.apply(te.getComponents().getPanelTopTransform(), getBlockRelativeAABB()).expandXyz(0.002).offset(px, py, pz),
0.0F, 0.0F, 0.0F, 0.4F);
GlStateManager.depthMask(true);
GlStateManager.enableTexture2D();
GlStateManager.disableBlend();

View File

@ -22,8 +22,11 @@ import blusunrize.immersiveengineering.api.Lib;
import blusunrize.immersiveengineering.common.util.chickenbones.Matrix4;
import ic2.api.item.IC2Items;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.controlpanel.BlockPanel;
import malte0811.industrialWires.blocks.controlpanel.BlockTypes_Panel;
import malte0811.industrialWires.blocks.controlpanel.PropertyComponents.PanelRenderProperties;
import malte0811.industrialWires.client.RawQuad;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@ -39,7 +42,9 @@ import net.minecraft.nbt.NBTTagFloat;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3i;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.obj.OBJModel;
import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
@ -51,8 +56,10 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiPredicate;
import static malte0811.industrialWires.controlpanel.PanelComponent.*;
import static malte0811.industrialWires.util.MiscUtils.discoverLocal;
public final class PanelUtils {
public static TextureAtlasSprite PANEL_TEXTURE;
@ -327,4 +334,22 @@ public final class PanelUtils {
}
return panelBase;
}
public static List<BlockPos> discoverPanelParts(World w, BlockPos here) {
BiPredicate<BlockPos, Integer> isValid = (pos, count) -> {
if (here.distanceSq(pos) > 25 || count > 100 || !w.isBlockLoaded(pos)) {
return false;
}
IBlockState state = w.getBlockState(pos);
return state.getBlock() == IndustrialWires.panel && state.getValue(BlockPanel.type) != BlockTypes_Panel.CREATOR;
};
List<BlockPos> all = discoverLocal(w, here, isValid);
List<BlockPos> ret = new ArrayList<>();
for (BlockPos pos : all) {
if (w.getBlockState(pos).getValue(BlockPanel.type) != BlockTypes_Panel.DUMMY) {
ret.add(pos);
}
}
return ret;
}
}

View File

@ -125,7 +125,7 @@ public class Slider extends PanelComponent implements IConfigurableComponent {
}
@Override
public boolean interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
public void interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
double pos = horizontal?hitRelative.xCoord:(length-hitRelative.zCoord);
byte newLevel = (byte)(Math.min(pos*16/length, 15));
if (newLevel!=out) {
@ -135,9 +135,7 @@ public class Slider extends PanelComponent implements IConfigurableComponent {
out = newLevel;
tile.markDirty();
tile.triggerRenderUpdate();
return true;
}
return false;
}
@Override

View File

@ -115,11 +115,10 @@ public class ToggleSwitch extends PanelComponent implements IConfigurableCompone
}
@Override
public boolean interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
public void interactWith(Vec3d hitRel, TileEntityPanel tile, EntityPlayerMP player) {
setOut(!active, tile);
tile.markDirty();
tile.triggerRenderUpdate();
return true;
}
@Override

View File

@ -131,7 +131,7 @@ public class Variac extends PanelComponent implements IConfigurableComponent {
}
@Override
public boolean interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
public void interactWith(Vec3d hitRelative, TileEntityPanel tile, EntityPlayerMP player) {
double xRel = hitRelative.xCoord - SIZE / 2;
double yRel = -(hitRelative.zCoord - SIZE / 2);
double angle = 1.5 * Math.PI - Math.atan2(yRel, xRel);
@ -143,7 +143,7 @@ public class Variac extends PanelComponent implements IConfigurableComponent {
angle -= .5 * Math.PI / 17;
angle /= 2 * Math.PI;
if (angle < 0 || angle >= 16 / 17D) {
return true;
return;
}
byte newLevel = (byte) (angle * 17);
if (newLevel > out) {
@ -159,9 +159,7 @@ public class Variac extends PanelComponent implements IConfigurableComponent {
out = newLevel;
tile.markDirty();
tile.triggerRenderUpdate();
return true;
}
return false;
}
@Override

View File

@ -22,13 +22,16 @@ import malte0811.industrialWires.items.ItemIC2Coil;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import javax.annotation.Nonnull;
public class RecipeCoilLength implements IRecipe {
public final ItemStack coil;
public final ItemStack cable;
final int maxLength;
private final int maxLength;
public RecipeCoilLength(int meta) {
coil = new ItemStack(IndustrialWires.coil, 1, meta);
cable = ItemIC2Coil.getUninsulatedCable(coil);
@ -36,13 +39,14 @@ public class RecipeCoilLength implements IRecipe {
}
@Override
public boolean matches(InventoryCrafting inv, World worldIn) {
public boolean matches(@Nonnull InventoryCrafting inv, @Nonnull World worldIn) {
int l = getLength(inv);
return l>0;
}
@Nonnull
@Override
public ItemStack getCraftingResult(InventoryCrafting inv) {
public ItemStack getCraftingResult(@Nonnull InventoryCrafting inv) {
ItemStack ret = new ItemStack(IndustrialWires.coil, 1, coil.getItemDamage());
ItemIC2Coil.setLength(ret, Math.min(maxLength, getLength(inv)));
return ret;
@ -53,22 +57,25 @@ public class RecipeCoilLength implements IRecipe {
return 0;
}
@Nonnull
@Override
public ItemStack getRecipeOutput() {
return null;
return ItemStack.EMPTY;
}
@Nonnull
@Override
public ItemStack[] getRemainingItems(InventoryCrafting inv) {
ItemStack[] ret = new ItemStack[inv.getSizeInventory()];
public NonNullList<ItemStack> getRemainingItems(@Nonnull InventoryCrafting inv) {
NonNullList<ItemStack> ret = NonNullList.withSize(inv.getSizeInventory(), ItemStack.EMPTY);
int length = Math.min(getLength(inv), maxLength);
for (int i = 0;i<ret.length&&length>0;i++) {
for (int i = 0; i < ret.size() && length > 0; i++) {
ItemStack curr = inv.getStackInSlot(i);
if (OreDictionary.itemMatches(curr, coil, false)) {
length-=ItemIC2Coil.getLength(curr);
if (length<0) {
ret[i] = new ItemStack(IndustrialWires.coil, 1);
ItemIC2Coil.setLength(ret[i], -length);
ItemStack currStack = new ItemStack(IndustrialWires.coil, 1);
ret.set(i, currStack);
ItemIC2Coil.setLength(currStack, -length);
}
} else if (OreDictionary.itemMatches(curr, cable, false)) {
length--;
@ -84,7 +91,7 @@ public class RecipeCoilLength implements IRecipe {
cableLength+=ItemIC2Coil.getLength(curr);
} else if (OreDictionary.itemMatches(curr, cable, false)) {
cableLength++;
} else if (curr!=null) {
} else if (!curr.isEmpty()) {
return -1;
}
}

View File

@ -17,10 +17,6 @@
*/
package malte0811.industrialWires.items;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import blusunrize.immersiveengineering.ImmersiveEngineering;
import blusunrize.immersiveengineering.api.Lib;
import blusunrize.immersiveengineering.api.TargetingInfo;
@ -48,30 +44,38 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import javax.annotation.Nonnull;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ItemIC2Coil extends Item implements IWireCoil{
public final static String[] subNames = {"tin", "copper", "gold", "hv", "glass"};
public final static String lengthKey = "wireLength";
public ItemIC2Coil() {
setUnlocalizedName(IndustrialWires.MODID+".ic2wireCoil");
setUnlocalizedName(IndustrialWires.MODID + ".ic2_wire_coil");
setHasSubtypes(true);
this.setCreativeTab(IndustrialWires.creativeTab);
setMaxStackSize(64);
ImmersiveEngineering.registerByFullName(this, IndustrialWires.MODID+":"+"ic2WireCoil");
}
@Override
public void getSubItems(Item itemIn, CreativeTabs tab, List<ItemStack> subItems) {
public void getSubItems(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> subItems) {
for (int i = 0;i<subNames.length;i++) {
ItemStack tmp = new ItemStack(this, 1, i);
setLength(tmp, getMaxWireLength(tmp));
subItems.add(tmp);
}
}
@Nonnull
@Override
public String getUnlocalizedName(ItemStack stack) {
return this.getUnlocalizedName()+"."+subNames[stack.getMetadata()];
@ -86,17 +90,19 @@ public class ItemIC2Coil extends Item implements IWireCoil{
list.add(I18n.format(IndustrialWires.MODID+".desc.recipe"));
if(stack.getTagCompound()!=null && stack.getTagCompound().hasKey("linkingPos")) {
int[] link = stack.getTagCompound().getIntArray("linkingPos");
if(link!=null&&link.length>3) {
if (link.length > 3) {
list.add(I18n.format(Lib.DESC_INFO+"attachedToDim", link[1],link[2],link[3],link[0]));
}
}
}
//mostly copied from IE
@Nonnull
@Override
public EnumActionResult onItemUseFirst(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand) {
if(!world.isRemote) {
if (stack.stackSize>1) {
player.addChatMessage(new TextComponentTranslation(IndustrialWires.MODID+".chat.stackSize"));
public EnumActionResult onItemUseFirst(EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, EnumHand hand) {
ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote && !stack.isEmpty()) {
if (stack.getCount() > 1) {
player.sendMessage(new TextComponentTranslation(IndustrialWires.MODID + ".chat.stackSize"));
return EnumActionResult.FAIL;
}
TileEntity tileEntity = world.getTileEntity(pos);
@ -110,7 +116,7 @@ public class ItemIC2Coil extends Item implements IWireCoil{
}
if( !((IImmersiveConnectable)tileEntity).canConnectCable(wire, target)) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"wrongCable"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "wrongCable"));
return EnumActionResult.FAIL;
}
@ -124,13 +130,13 @@ public class ItemIC2Coil extends Item implements IWireCoil{
TileEntity tileEntityLinkingPos = world.getTileEntity(linkPos);
int distanceSq = (int) Math.ceil( linkPos.distanceSq(masterPos) );
if(array[0]!=world.provider.getDimension()) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"wrongDimension"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "wrongDimension"));
} else if(linkPos.equals(masterPos)) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"sameConnection"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "sameConnection"));
} else if( distanceSq > (type.getMaxLength()*type.getMaxLength())) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"tooFar"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "tooFar"));
} else if(!(tileEntityLinkingPos instanceof IImmersiveConnectable)||!((IImmersiveConnectable) tileEntityLinkingPos).canConnectCable(type, TargetingInfo.readFromNBT(stack.getTagCompound()))) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"invalidPoint"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "invalidPoint"));
} else {
IImmersiveConnectable nodeHere = (IImmersiveConnectable)tileEntity;
IImmersiveConnectable nodeLink = (IImmersiveConnectable)tileEntityLinkingPos;
@ -144,7 +150,7 @@ public class ItemIC2Coil extends Item implements IWireCoil{
}
}
if(connectionExists) {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"connectionExists"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "connectionExists"));
} else {
Vec3d rtOff0 = nodeHere.getRaytraceOffset(nodeLink).addVector(masterPos.getX(), masterPos.getY(), masterPos.getZ());
Vec3d rtOff1 = nodeLink.getRaytraceOffset(nodeHere).addVector(linkPos.getX(), linkPos.getY(), linkPos.getZ());
@ -168,7 +174,7 @@ public class ItemIC2Coil extends Item implements IWireCoil{
if (length<lengthOnStack) {
setLength(stack, lengthOnStack-length);
} else {
player.setHeldItem(hand, null);
player.setHeldItem(hand, ItemStack.EMPTY);
}
}
((TileEntity)nodeHere).markDirty();
@ -180,10 +186,10 @@ public class ItemIC2Coil extends Item implements IWireCoil{
state = world.getBlockState(linkPos);
world.notifyBlockUpdate(linkPos, state,state, 3);
} else {
player.addChatMessage(new TextComponentTranslation(IndustrialWires.MODID+".chat.tooLong"));
player.sendMessage(new TextComponentTranslation(IndustrialWires.MODID + ".chat.tooLong"));
}
} else {
player.addChatMessage(new TextComponentTranslation(Lib.CHAT_WARN+"cantSee"));
player.sendMessage(new TextComponentTranslation(Lib.CHAT_WARN + "cantSee"));
}
}
}

View File

@ -30,10 +30,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.*;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
@ -82,7 +79,7 @@ public class ItemPanelComponent extends Item {
}
@Override
public void getSubItems(@Nonnull Item itemIn, CreativeTabs tab, List<ItemStack> subItems) {
public void getSubItems(@Nonnull Item itemIn, CreativeTabs tab, NonNullList<ItemStack> subItems) {
for (int i = 0; i < types.length; i++) {
subItems.add(new ItemStack(itemIn, 1, i));
}
@ -95,7 +92,7 @@ public class ItemPanelComponent extends Item {
return PanelComponent.read(loadFrom);
}
@Nullable
@Nonnull
public static ItemStack stackFromComponent(PanelComponent pc) {
NBTTagCompound inner = new NBTTagCompound();
pc.writeToNBT(inner, true);
@ -108,7 +105,7 @@ public class ItemPanelComponent extends Item {
ret.setTagCompound(outer);
return ret;
}
return null;
return ItemStack.EMPTY;
}
private static void removeIrrelevantTags(NBTTagCompound inner) {
@ -148,10 +145,10 @@ public class ItemPanelComponent extends Item {
@Override
@Nonnull
public ActionResult<ItemStack> onItemRightClick(@Nonnull ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) {
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, @Nonnull EnumHand hand) {
if(!worldIn.isRemote) {
playerIn.openGui(IndustrialWires.MODID, 1, worldIn, 0, 0, hand==EnumHand.MAIN_HAND?1:0);
}
return new ActionResult<>(EnumActionResult.SUCCESS, itemStackIn);
return new ActionResult<>(EnumActionResult.SUCCESS, playerIn.getHeldItem(hand));
}
}

View File

@ -63,12 +63,12 @@ public class MessageComponentSync implements IMessage {
public static class HandlerServer implements IMessageHandler<MessageComponentSync, IMessage> {
@Override
public IMessage onMessage(MessageComponentSync message, MessageContext ctx) {
ctx.getServerHandler().playerEntity.getServerWorld().addScheduledTask(()->handle(message, ctx.getServerHandler().playerEntity));
ctx.getServerHandler().player.getServerWorld().addScheduledTask(() -> handle(message, ctx.getServerHandler().player));
return null;
}
private void handle(MessageComponentSync msg, EntityPlayerMP player) {
ItemStack held = player.getHeldItem(msg.hand);
if (held!=null&&held.getItem()== IndustrialWires.panelComponent) {
if (!held.isEmpty() && held.getItem() == IndustrialWires.panelComponent) {
PanelComponent old = ItemPanelComponent.componentFromStack(held);
if (old instanceof IConfigurableComponent) {
NBTTagList changes = msg.data.getTagList("data", 10);
@ -82,7 +82,7 @@ public class MessageComponentSync implements IMessage {
x.printStackTrace();
}
}
ItemStack newCmp = ApiUtils.copyStackWithAmount(ItemPanelComponent.stackFromComponent(old), held.stackSize);
ItemStack newCmp = ApiUtils.copyStackWithAmount(ItemPanelComponent.stackFromComponent(old), held.getCount());
player.setHeldItem(msg.hand, newCmp);
}
}

View File

@ -57,12 +57,12 @@ public class MessageGUIInteract implements IMessage {
public static class HandlerServer implements IMessageHandler<MessageGUIInteract, IMessage> {
@Override
public IMessage onMessage(MessageGUIInteract message, MessageContext ctx) {
ctx.getServerHandler().playerEntity.getServerWorld().addScheduledTask(()->handle(message, ctx.getServerHandler().playerEntity));
ctx.getServerHandler().player.getServerWorld().addScheduledTask(() -> handle(message, ctx.getServerHandler().player));
return null;
}
private void handle(MessageGUIInteract msg, EntityPlayerMP player) {
if (player.getDistanceSqToCenter(msg.pos)<100) {//closer than 10 blocks
TileEntity te = player.worldObj.getTileEntity(msg.pos);
TileEntity te = player.world.getTileEntity(msg.pos);
if (te instanceof INetGUI) {
((INetGUI) te).onChange(msg.data, player);
te.markDirty();

View File

@ -30,13 +30,11 @@ import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class MessagePanelInteract implements IMessage {
private BlockPos pos;
//private int dimension;
private int pcId;
private Vec3d hitRelative;
public MessagePanelInteract(TileEntityPanel tile, int id, Vec3d hit) {
pos = tile.getPos();
//dimension = tile.getWorld().provider.getDimension();
pcId = id;
hitRelative = hit;
}
@ -46,7 +44,6 @@ public class MessagePanelInteract implements IMessage {
@Override
public void fromBytes(ByteBuf buf) {
this.pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
//dimension = buf.readInt();
pcId = buf.readInt();
hitRelative = new Vec3d(buf.readDouble(), buf.readDouble(), buf.readDouble());
}
@ -56,7 +53,6 @@ public class MessagePanelInteract implements IMessage {
buf.writeInt(this.pos.getX());
buf.writeInt(this.pos.getY());
buf.writeInt(this.pos.getZ());
//buf.writeInt(dimension);
buf.writeInt(pcId);
buf.writeDouble(hitRelative.xCoord).writeDouble(hitRelative.yCoord).writeDouble(hitRelative.zCoord);
}
@ -64,12 +60,12 @@ public class MessagePanelInteract implements IMessage {
public static class HandlerServer implements IMessageHandler<MessagePanelInteract, IMessage> {
@Override
public IMessage onMessage(MessagePanelInteract message, MessageContext ctx) {
ctx.getServerHandler().playerEntity.getServerWorld().addScheduledTask(()->handle(message, ctx.getServerHandler().playerEntity));
ctx.getServerHandler().player.getServerWorld().addScheduledTask(() -> handle(message, ctx.getServerHandler().player));
return null;
}
private void handle(MessagePanelInteract msg, EntityPlayerMP player) {
if (player.getDistanceSqToCenter(msg.pos)<100) {//closer than 10 blocks
TileEntity te = player.worldObj.getTileEntity(msg.pos);
TileEntity te = player.world.getTileEntity(msg.pos);
if (te instanceof TileEntityPanel) {
((TileEntityPanel) te).interactServer(msg.hitRelative, msg.pcId, player);
}

View File

@ -21,10 +21,10 @@ package malte0811.industrialWires.util;
import net.minecraft.nbt.NBTTagCompound;
public class DualEnergyStorage {
double storedEU;
double maxEU;
double maxOutEU;
double maxInEU;
private double storedEU;
private double maxEU;
private double maxOutEU;
private double maxInEU;
public DualEnergyStorage(double maxEU, double maxInEU, double maxOutEU) {
this(0, maxEU, maxInEU, maxOutEU);

View File

@ -22,10 +22,6 @@ import blusunrize.immersiveengineering.api.ApiUtils;
import blusunrize.immersiveengineering.api.energy.wires.IImmersiveConnectable;
import blusunrize.immersiveengineering.api.energy.wires.ImmersiveNetHandler;
import com.google.common.collect.ImmutableSet;
import malte0811.industrialWires.IndustrialWires;
import malte0811.industrialWires.blocks.controlpanel.BlockPanel;
import malte0811.industrialWires.blocks.controlpanel.BlockTypes_Panel;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
@ -72,23 +68,6 @@ public final class MiscUtils {
return ret;
}
public static List<BlockPos> discoverPanelParts(World w, BlockPos here) {
BiPredicate<BlockPos, Integer> isValid = (pos, count)->{
if (here.distanceSq(pos)>25||count>100||!w.isBlockLoaded(pos)) {
return false;
}
IBlockState state = w.getBlockState(pos);
return state.getBlock() == IndustrialWires.panel && state.getValue(BlockPanel.type) != BlockTypes_Panel.CREATOR;
};
List<BlockPos> all = discoverLocal(w, here, isValid);
List<BlockPos> ret = new ArrayList<>();
for (BlockPos pos:all) {
if (w.getBlockState(pos).getValue(BlockPanel.type)!= BlockTypes_Panel.DUMMY) {
ret.add(pos);
}
}
return ret;
}
public static List<BlockPos> discoverLocal(World w, BlockPos here, BiPredicate<BlockPos, Integer> isValid) {
List<BlockPos> ret = new ArrayList<>();
List<BlockPos> open = new ArrayList<>();

View File

@ -1 +0,0 @@
protected net.minecraft.client.gui.inventory.GuiContainer func_146977_a(Lnet/minecraft/inventory/Slot;)V #drawSlot

View File

@ -12,9 +12,9 @@
"variants": {
"inventory,type=tin_conn": [
{
"model": "immersiveengineering:connector/connectorLV.obj",
"model": "immersiveengineering:connector/connector_lv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorLV": "industrialwires:blocks/ic2_connTin"
"#immersiveengineering:blocks/connector_connector_lv": "industrialwires:blocks/ic2_conn_tin"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -29,9 +29,9 @@
],
"inventory,type=tin_relay": [
{
"model": "immersiveengineering:connector/connectorLV.obj",
"model": "immersiveengineering:connector/connector_lv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorLV": "industrialwires:blocks/ic2_relayTin"
"#immersiveengineering:blocks/connector_connector_lv": "industrialwires:blocks/ic2_relay_tin"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -46,9 +46,9 @@
],
"inventory,type=copper_conn": [
{
"model": "immersiveengineering:connector/connectorLV.obj",
"model": "immersiveengineering:connector/connector_lv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorLV": "industrialwires:blocks/ic2_connCopper"
"#immersiveengineering:blocks/connector_connector_lv": "industrialwires:blocks/ic2_conn_copper"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -63,9 +63,9 @@
],
"inventory,type=copper_relay": [
{
"model": "immersiveengineering:connector/connectorLV.obj",
"model": "immersiveengineering:connector/connector_lv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorLV": "industrialwires:blocks/ic2_relayCopper"
"#immersiveengineering:blocks/connector_connector_lv": "industrialwires:blocks/ic2_relay_copper"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -80,9 +80,9 @@
],
"inventory,type=gold_conn": [
{
"model": "immersiveengineering:connector/connectorMV.obj",
"model": "immersiveengineering:connector/connector_mv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorMV": "industrialwires:blocks/ic2_connGold"
"#immersiveengineering:blocks/connector_connector_mv": "industrialwires:blocks/ic2_conn_gold"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -97,9 +97,9 @@
],
"inventory,type=gold_relay": [
{
"model": "immersiveengineering:connector/connectorMV.obj",
"model": "immersiveengineering:connector/connector_mv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorMV": "industrialwires:blocks/ic2_relayGold"
"#immersiveengineering:blocks/connector_connector_mv": "industrialwires:blocks/ic2_relay_gold"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -114,9 +114,9 @@
],
"inventory,type=hv_conn": [
{
"model": "immersiveengineering:connector/connectorHV.obj",
"model": "immersiveengineering:connector/connector_hv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorHV": "industrialwires:blocks/ic2_connHV"
"#immersiveengineering:blocks/connector_connector_hv": "industrialwires:blocks/ic2_conn_hv"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -131,7 +131,7 @@
],
"inventory,type=hv_relay": [
{
"model": "immersiveengineering:connector/relayHV.obj",
"model": "immersiveengineering:connector/relay_hv.obj",
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
"firstperson_righthand": { "translation": [ 0, 0.25, 0.125 ]},
@ -145,9 +145,9 @@
],
"inventory,type=glass_conn": [
{
"model": "immersiveengineering:connector/connectorHV.obj",
"model": "immersiveengineering:connector/connector_hv.obj",
"textures": {
"#immersiveengineering:blocks/connector_connectorHV": "industrialwires:blocks/ic2_connGlass"
"#immersiveengineering:blocks/connector_connector_hv": "industrialwires:blocks/ic2_conn_glass"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],
@ -162,9 +162,9 @@
],
"inventory,type=glass_relay": [
{
"model": "immersiveengineering:connector/relayHV.obj",
"model": "immersiveengineering:connector/relay_hv.obj",
"textures": {
"#immersiveengineering:blocks/connector_relayHV": "industrialwires:blocks/ic2_relayGlass"
"#immersiveengineering:blocks/connector_relay_hv": "industrialwires:blocks/ic2_relay_glass"
},
"transform": {
"scale": [ 0.5, 0.5, 0.5 ],

View File

@ -2,7 +2,7 @@
"forge_marker": 1,
"defaults": {
"transform": "forge:default-block",
"model": "industrialwires:iwSixSides",
"model": "industrialwires:iw_six_sides",
"textures": {
},

View File

@ -1,13 +1,13 @@
tile.industrialwires.ic2Connector.tin_conn.name=Tin Wire Connector
tile.industrialwires.ic2Connector.tin_relay.name=Tin Wire Relay
tile.industrialwires.ic2Connector.copper_conn.name=Copper Wire Connector
tile.industrialwires.ic2Connector.copper_relay.name=Copper Wire Relay
tile.industrialwires.ic2Connector.gold_conn.name=Gold Wire Connector
tile.industrialwires.ic2Connector.gold_relay.name=Gold Wire Relay
tile.industrialwires.ic2Connector.hv_conn.name=IC2 HV Wire Connector
tile.industrialwires.ic2Connector.hv_relay.name=IC2 HV Wire Relay
tile.industrialwires.ic2Connector.glass_conn.name=Glass Fiber Wire Connector
tile.industrialwires.ic2Connector.glass_relay.name=Glass Fiber Wire Relay
tile.industrialwires.ic2_connector.tin_conn.name=Tin Wire Connector
tile.industrialwires.ic2_connector.tin_relay.name=Tin Wire Relay
tile.industrialwires.ic2_connector.copper_conn.name=Copper Wire Connector
tile.industrialwires.ic2_connector.copper_relay.name=Copper Wire Relay
tile.industrialwires.ic2_connector.gold_conn.name=Gold Wire Connector
tile.industrialwires.ic2_connector.gold_relay.name=Gold Wire Relay
tile.industrialwires.ic2_connector.hv_conn.name=IC2 HV Wire Connector
tile.industrialwires.ic2_connector.hv_relay.name=IC2 HV Wire Relay
tile.industrialwires.ic2_connector.glass_conn.name=Glass Fiber Wire Connector
tile.industrialwires.ic2_connector.glass_relay.name=Glass Fiber Wire Relay
tile.industrialwires.mechanical_converter.ie_motor.name=Rotational Motor
tile.industrialwires.mechanical_converter.ie_to_ic2.name=Converter: Rotational To Kinetic
@ -68,52 +68,52 @@ death.attack.industrialwires.jacobs_ladder=%1$s was electrocuted by a Jacob's La
itemGroup.industrialwires=Industrial Wires
ie.manual.category.industrialWires.name=Industrial Wires
ie.manual.category.industrialwires.name=Industrial Wires
ie.manual.category.control_panels.name=Control Panels
ie.manual.entry.industrialWires.wires.name=Industrial Wires
ie.manual.entry.industrialWires.wires.subtext=No complex impedance!
ie.manual.entry.industrialWires.wires0=Wires from the IndustrialWires company allow you to transfer energy like you can with cables from the IndustrialCraft2 company.<br>You use them exactly as you would use wires from Immersive Engineering. Each wire transfers as much EU as the corresponding cable would, so
ie.manual.entry.industrialWires.wires1=attaching a connector to a power source that would destroy the cable will destroy the connector.<br>The wire coils for the IC2 cable are different from the Immersive Engineering wire coils in that longer connections use up more wire: The coils are crafted by placing any combination of uninsulated IC2 cables and the corresponding wire coils in a crafting grid. The next page shows some examples of valid recipes and their outputs. The uninsulated
ie.manual.entry.industrialWires.wires2=tin cables can be replaced by uninsulated copper, gold or HV cables or by glass fiber cable to craft the other coils.
ie.manual.entry.industrialwires.wires.name=Industrial Wires
ie.manual.entry.industrialwires.wires.subtext=No complex impedance!
ie.manual.entry.industrialwires.wires0=Wires from the IndustrialWires company allow you to transfer energy like you can with cables from the IndustrialCraft2 company.<br>You use them exactly as you would use wires from Immersive Engineering. Each wire transfers as much EU as the corresponding cable would, so
ie.manual.entry.industrialwires.wires1=attaching a connector to a power source that would destroy the cable will destroy the connector.<br>The wire coils for the IC2 cable are different from the Immersive Engineering wire coils in that longer connections use up more wire: The coils are crafted by placing any combination of uninsulated IC2 cables and the corresponding wire coils in a crafting grid. The next page shows some examples of valid recipes and their outputs. The uninsulated
ie.manual.entry.industrialwires.wires2=tin cables can be replaced by uninsulated copper, gold or HV cables or by glass fiber cable to craft the other coils.
ie.manual.entry.industrialWires.mechConv.name=Mechanical Converters
ie.manual.entry.industrialWires.mechConv.subtext=I made rotational energy for this!
ie.manual.entry.industrialWires.mechConv0=Both the IC2 and IE company produce products that run on kinetic energy of some sort. The new converters from IndustrialWires allow you to convert between these two forms of energy!<br>To use the "Converter: Rotational To Kinetic" attach a source of IE rotational energy
ie.manual.entry.industrialWires.mechConv1=like a waterwheel or a motor (see page 3) to the side marked with a gear and a consumer of IC2 kinetic energy to the opposite side. The "Converter: Kinetic To Rotational" is used in a similar way (Rotational and kinetic energy have to be swapped).<br>Unfortunately some energy is
ie.manual.entry.industrialWires.mechConv2=lost with each conversion.<br>As a little extra the "Mechanical converter" product series also contains a Rotational Motor: It consumes IF to produce IE rotational energy. As with the converters this is not a lossless process.
ie.manual.entry.industrialwires.mechConv.name=Mechanical Converters
ie.manual.entry.industrialwires.mechConv.subtext=I made rotational energy for this!
ie.manual.entry.industrialwires.mechConv0=Both the IC2 and IE company produce products that run on kinetic energy of some sort. The new converters from IndustrialWires allow you to convert between these two forms of energy!<br>To use the "Converter: Rotational To Kinetic" attach a source of IE rotational energy
ie.manual.entry.industrialwires.mechConv1=like a waterwheel or a motor (see page 3) to the side marked with a gear and a consumer of IC2 kinetic energy to the opposite side. The "Converter: Kinetic To Rotational" is used in a similar way (Rotational and kinetic energy have to be swapped).<br>Unfortunately some energy is
ie.manual.entry.industrialwires.mechConv2=lost with each conversion.<br>As a little extra the "Mechanical converter" product series also contains a Rotational Motor: It consumes IF to produce IE rotational energy. As with the converters this is not a lossless process.
ie.manual.entry.industrialWires.jacobs.name=Jacob's Ladders
ie.manual.entry.industrialWires.jacobs.subtext=Probably contain PCB's!
ie.manual.entry.industrialWires.jacobs0=By applying a high voltage between 2 electrodes forming a "V" one can create an arc travelling upwards. They don't serve a particular purpose apart from being a nice-looking waste of power. Power can be supplied using either Flux or EU. The energy usage varies with the size of the ladder.
ie.manual.entry.industrialWires.jacobs1=These are the required power values in EU: <config;dA;iwJacobsUsage>. Due to the voltages involved touching the ladder while active is not a good idea. Applying salt to the electrodes will cause the arc to be colored orange for a short time due to the sodium contained in the salt.
ie.manual.entry.industrialwires.jacobs.name=Jacob's Ladders
ie.manual.entry.industrialwires.jacobs.subtext=Probably contain PCB's!
ie.manual.entry.industrialwires.jacobs0=By applying a high voltage between 2 electrodes forming a "V" one can create an arc travelling upwards. They don't serve a particular purpose apart from being a nice-looking waste of power. Power can be supplied using either Flux or EU. The energy usage varies with the size of the ladder.
ie.manual.entry.industrialwires.jacobs1=These are the required power values in EU: <config;dA;iwJacobsUsage>. Due to the voltages involved touching the ladder while active is not a good idea. Applying salt to the electrodes will cause the arc to be colored orange for a short time due to the sodium contained in the salt.
ie.manual.entry.industrialWires.intro.name=Introduction
ie.manual.entry.industrialWires.intro.subtext=
ie.manual.entry.industrialWires.intro0=Control Panels allow you to monitor and control a large amount of redstone signals using only a few blocks. Those signals can currently be connected using redstone wires and connectors.<br>Buttons, switches, indicator lights and other things that can be placed on a control panel are called §l(Panel) Components§r<br>To create a control panel you will need a Panel Creator, the individual components and a basic machine casing as the enclosure of the panel. Each
ie.manual.entry.industrialWires.intro1=component is described in the entry "Panel Components". Right-clicking with a panel component opens up a GUI in which the properties of the component, like the redstone channel and ID or the color, can be configured.
ie.manual.entry.industrialWires.intro2=A §l(panel) network§r is formed by panel blocks connected to each other, directly or through other panel blocks. Panel blocks include the control panel itself, the panel connector and the Redstone Wire Controller. If multiple components in one network are configured to modify the same
ie.manual.entry.industrialWires.intro3=redstone signal, the resulting behavior is undefined (but won't crash the game). Having multiple components accepting the same signal on a network is valid though.
ie.manual.entry.industrialwires.intro.name=Introduction
ie.manual.entry.industrialwires.intro.subtext=
ie.manual.entry.industrialwires.intro0=Control Panels allow you to monitor and control a large amount of redstone signals using only a few blocks. Those signals can currently be connected using redstone wires and connectors.<br>Buttons, switches, indicator lights and other things that can be placed on a control panel are called §l(Panel) Components§r<br>To create a control panel you will need a Panel Creator, the individual components and a basic machine casing as the enclosure of the panel. Each
ie.manual.entry.industrialwires.intro1=component is described in the entry "Panel Components". Right-clicking with a panel component opens up a GUI in which the properties of the component, like the redstone channel and ID or the color, can be configured.
ie.manual.entry.industrialwires.intro2=A §l(panel) network§r is formed by panel blocks connected to each other, directly or through other panel blocks. Panel blocks include the control panel itself, the panel connector and the Redstone Wire Controller. If multiple components in one network are configured to modify the same
ie.manual.entry.industrialwires.intro3=redstone signal, the resulting behavior is undefined (but won't crash the game). Having multiple components accepting the same signal on a network is valid though.
ie.manual.entry.industrialWires.panel_creator.name=Panel Creator
ie.manual.entry.industrialWires.panel_creator.subtext=
ie.manual.entry.industrialWires.panel_creator0=The GUI of the panel creator consists of two major sections: The controls on the left and the panel on the right. Components can be placed on the panel by "placing" the items in the corresponding point in the GUI. If the component is surrounded by a red area, it can not be placed in that
ie.manual.entry.industrialWires.panel_creator1=position on the panel. This usually means that it is either overlapping with an other component or isn't completely on the panel. The top button on the left (D) disassembles an existing control panel when it is placed in the slot beneath the button: The components of that panel are placed in the GUI, allowing them to be repositioned. The machine casing is lost in this process. The next button (C) turns a machine casing in the slot into a control panel with the components as positioned in the right of the GUI. The button
ie.manual.entry.industrialWires.panel_creator2=labeled R removes all components from the GUI panel area and places them in your inventory. Finally the last button (S) changes between being able to place components anywhere on the panel to only being able to place them on a 16x16 grid.
ie.manual.entry.industrialwires.panel_creator.name=Panel Creator
ie.manual.entry.industrialwires.panel_creator.subtext=
ie.manual.entry.industrialwires.panel_creator0=The GUI of the panel creator consists of two major sections: The controls on the left and the panel on the right. Components can be placed on the panel by "placing" the items in the corresponding point in the GUI. If the component is surrounded by a red area, it can not be placed in that
ie.manual.entry.industrialwires.panel_creator1=position on the panel. This usually means that it is either overlapping with an other component or isn't completely on the panel. The top button on the left (D) disassembles an existing control panel when it is placed in the slot beneath the button: The components of that panel are placed in the GUI, allowing them to be repositioned. The machine casing is lost in this process. The next button (C) turns a machine casing in the slot into a control panel with the components as positioned in the right of the GUI. The button
ie.manual.entry.industrialwires.panel_creator2=labeled R removes all components from the GUI panel area and places them in your inventory. Finally the last button (S) changes between being able to place components anywhere on the panel to only being able to place them on a 16x16 grid.
ie.manual.entry.industrialWires.redstone.name=Redstone Connections
ie.manual.entry.industrialWires.redstone.subtext=Could also be blood vessels
ie.manual.entry.industrialWires.redstone0=A panel network can contain any amount of §lRedstone Wire Controllers§r. Each controller should be assigned a different ID in its GUI. Each component that interacts with redstone signals has two settings in its GUI: A redstone channel color and a controller ID. To get the redstone signals out of and into the controller it needs to be connected to redstone
ie.manual.entry.industrialWires.redstone1=connectors from Immersive Engineering.
ie.manual.entry.industrialwires.redstone.name=Redstone Connections
ie.manual.entry.industrialwires.redstone.subtext=Could also be blood vessels
ie.manual.entry.industrialwires.redstone0=A panel network can contain any amount of §lRedstone Wire Controllers§r. Each controller should be assigned a different ID in its GUI. Each component that interacts with redstone signals has two settings in its GUI: A redstone channel color and a controller ID. To get the redstone signals out of and into the controller it needs to be connected to redstone
ie.manual.entry.industrialwires.redstone1=connectors from Immersive Engineering.
ie.manual.entry.industrialWires.components.name=Panel Components
ie.manual.entry.industrialWires.components.subtext=More than just two
ie.manual.entry.industrialWires.button=A simple button that activates a redstone signal when pressed. Its color can be changed. The button either stays on until clicked again (latching) or tuns off after half a second (non-latching).
ie.manual.entry.industrialWires.label=A text that can be placed on the control panel, for example to indicate the purpose of some other component. The color and obviously the text can be edited.
ie.manual.entry.industrialWires.indicator_light=A small indicator that brightens as the input redstone signal is increased. The color can be changed.
ie.manual.entry.industrialWires.slider=A sliding switch that can set an output redstone signal to any desired signal strength. It can be either vertically or horizontally aligned and can have any length between one eighth of a block and one block. The color of the sliding knob can be changed.
ie.manual.entry.industrialWires.toggle_switch=A switch to turn a signal on or off. The covered version includes a cover to prevent accidental activation: When clicked for the first time the cover will open, the signal will be turned on by clicking once again. Another click will close the cover and turn off the output signal. If the cover was opened by accident it can be closed by shift-right-clicking
ie.manual.entry.industrialWires.toggle_switch1=the switch. The color of the cover can be configured.
ie.manual.entry.industrialWires.variac=A Variac® is a variable autotransformer. The output signal of the transformer increases as the knob is turned to the right. The signal strenght can only be increased by one unit per click.
ie.manual.entry.industrialwires.components.name=Panel Components
ie.manual.entry.industrialwires.components.subtext=More than just two
ie.manual.entry.industrialwires.button=A simple button that activates a redstone signal when pressed. Its color can be changed. The button either stays on until clicked again (latching) or tuns off after half a second (non-latching).
ie.manual.entry.industrialwires.label=A text that can be placed on the control panel, for example to indicate the purpose of some other component. The color and obviously the text can be edited.
ie.manual.entry.industrialwires.indicator_light=A small indicator that brightens as the input redstone signal is increased. The color can be changed.
ie.manual.entry.industrialwires.slider=A sliding switch that can set an output redstone signal to any desired signal strength. It can be either vertically or horizontally aligned and can have any length between one eighth of a block and one block. The color of the sliding knob can be changed.
ie.manual.entry.industrialwires.toggle_switch=A switch to turn a signal on or off. The covered version includes a cover to prevent accidental activation: When clicked for the first time the cover will open, the signal will be turned on by clicking once again. Another click will close the cover and turn off the output signal. If the cover was opened by accident it can be closed by shift-right-clicking
ie.manual.entry.industrialwires.toggle_switch1=the switch. The color of the cover can be configured.
ie.manual.entry.industrialwires.variac=A Variac® is a variable autotransformer. The output signal of the transformer increases as the knob is turned to the right. The signal strenght can only be increased by one unit per click.

View File

@ -0,0 +1,6 @@
{
"parent":"item/generated",
"textures": {
"layer0": "industrialwires:items/ic2_wire_copper"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"item/generated",
"textures": {
"layer0": "industrialwires:items/ic2_wire_glass"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"item/generated",
"textures": {
"layer0": "industrialwires:items/ic2_wire_gold"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"item/generated",
"textures": {
"layer0": "industrialwires:items/ic2_wire_hv"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"item/generated",
"textures": {
"layer0": "industrialwires:items/ic2_wire_tin"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"item/generated",
"textures": {
"layer0":"industrialwires:items/ic2_wireCopper"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"item/generated",
"textures": {
"layer0":"industrialwires:items/ic2_wireGlass"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"item/generated",
"textures": {
"layer0":"industrialwires:items/ic2_wireGold"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"item/generated",
"textures": {
"layer0":"industrialwires:items/ic2_wireHV"
}
}

View File

@ -1,6 +0,0 @@
{
"parent":"item/generated",
"textures": {
"layer0":"industrialwires:items/ic2_wireTin"
}
}

View File

@ -2,7 +2,7 @@
{
"modid": "industrialwires",
"name": "Industrial Wires",
"description": "Addon for IndustrialCraft2 and Immersive Engineering that adds IE wires to transfer IC2 power",
"description": "An addon for IndustrialCraft2 and Immersive Engineering that adds IE wires to transfer IC2 power and other fun things!",
"version": "${version}",
"mcversion": "${mcversion}",
"url": "",