diff --git a/build.properties b/build.properties
index dbbb0a742..2c4135ba6 100644
--- a/build.properties
+++ b/build.properties
@@ -7,7 +7,7 @@ mod.group=li.cil.oc
mod.version=1.7.0
forestry.version=5.3.1.38
-jei.version=4.2.7.240
+jei.version=4.2.11.251
mcmp.version=2.0.0_17
tis3d.version=1.1.1.37
diff --git a/src/main/java/li/cil/oc/api/Driver.java b/src/main/java/li/cil/oc/api/Driver.java
index 0c446073a..3f67f4db3 100644
--- a/src/main/java/li/cil/oc/api/Driver.java
+++ b/src/main/java/li/cil/oc/api/Driver.java
@@ -1,6 +1,5 @@
package li.cil.oc.api;
-import li.cil.oc.api.driver.Block;
import li.cil.oc.api.driver.Converter;
import li.cil.oc.api.driver.EnvironmentProvider;
import li.cil.oc.api.driver.InventoryProvider;
@@ -10,8 +9,8 @@ import li.cil.oc.api.network.EnvironmentHost;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
-import net.minecraft.util.math.BlockPos;
import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
@@ -36,25 +35,6 @@ import java.util.Set;
* @see Item
*/
public final class Driver {
- /**
- * Registers a new block driver.
- *
- * Whenever the neighboring blocks of an Adapter block change, it checks if
- * there exists a driver for the changed block, and if it is configured to
- * interface that block type connects it to the component network.
- *
- * This must be called in the init phase, not the pre- or post-init
- * phases.
- *
- * @param driver the driver to register.
- * @deprecated Use {@link SidedBlock} instead.
- */
- @Deprecated // TODO Remove in OC 1.7
- public static void add(final Block driver) {
- if (API.driver != null)
- API.driver.add(driver);
- }
-
/**
* Registers a new side-aware block driver.
*
@@ -138,30 +118,8 @@ public final class Driver {
*
* Note that several drivers for a single block can exist. Because of this
* block drivers are always encapsulated in a 'compound' driver, which is
- * what will be returned here. In other words, you should will not
- * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.Block)}.
- *
- * @param world the world containing the block.
- * @param pos the position of the block.
- * @return a driver for the block, or null if there is none.
- * @deprecated Use {@link #driverFor(World, BlockPos, EnumFacing)},
- * passing null if the side is to be ignored.
- */
- @Deprecated // TODO Remove in OC 1.7
- public static Block driverFor(World world, BlockPos pos) {
- if (API.driver != null)
- return API.driver.driverFor(world, pos);
- return null;
- }
-
- /**
- * Looks up a driver for the block at the specified position in the
- * specified world.
- *
- * Note that several drivers for a single block can exist. Because of this
- * block drivers are always encapsulated in a 'compound' driver, which is
- * what will be returned here. In other words, you should will not
- * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.Block)}.
+ * what will be returned here. In other words, you will not
+ * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.SidedBlock)}.
*
* @param world the world containing the block.
* @param pos the position of the block.
@@ -273,22 +231,6 @@ public final class Driver {
return null;
}
- /**
- * Get a list of all registered block drivers.
- *
- * This is intended to allow checking for particular drivers using more
- * customized logic.
- *
- * The returned collection is read-only.
- *
- * @return the list of all registered block drivers.
- */
- public static Collection blockDrivers() {
- if (API.driver != null)
- return API.driver.blockDrivers();
- return null;
- }
-
/**
* Get a list of all registered item drivers.
*
diff --git a/src/main/java/li/cil/oc/api/Items.java b/src/main/java/li/cil/oc/api/Items.java
index 1d0d8a7d3..3a3f55927 100644
--- a/src/main/java/li/cil/oc/api/Items.java
+++ b/src/main/java/li/cil/oc/api/Items.java
@@ -73,7 +73,7 @@ public final class Items {
public static ItemStack registerFloppy(String name, EnumDyeColor color, Callable factory) {
if (API.items != null)
return API.items.registerFloppy(name, color, factory);
- return null;
+ return ItemStack.EMPTY;
}
/**
@@ -104,7 +104,7 @@ public final class Items {
public static ItemStack registerFloppy(String name, EnumDyeColor color, Callable factory, boolean doRecipeCycling) {
if (API.items != null)
return API.items.registerFloppy(name, color, factory, doRecipeCycling);
- return null;
+ return ItemStack.EMPTY;
}
/**
@@ -126,7 +126,7 @@ public final class Items {
public static ItemStack registerEEPROM(String name, byte[] code, byte[] data, boolean readonly) {
if (API.items != null)
return API.items.registerEEPROM(name, code, data, readonly);
- return null;
+ return ItemStack.EMPTY;
}
// ----------------------------------------------------------------------- //
diff --git a/src/main/java/li/cil/oc/api/detail/DriverAPI.java b/src/main/java/li/cil/oc/api/detail/DriverAPI.java
index ad2fcd0fa..04207acef 100644
--- a/src/main/java/li/cil/oc/api/detail/DriverAPI.java
+++ b/src/main/java/li/cil/oc/api/detail/DriverAPI.java
@@ -1,6 +1,6 @@
package li.cil.oc.api.detail;
-import li.cil.oc.api.driver.Block;
+import jline.internal.Nullable;
import li.cil.oc.api.driver.Converter;
import li.cil.oc.api.driver.EnvironmentProvider;
import li.cil.oc.api.driver.InventoryProvider;
@@ -10,8 +10,8 @@ import li.cil.oc.api.network.EnvironmentHost;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
-import net.minecraft.util.math.BlockPos;
import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
@@ -19,22 +19,6 @@ import java.util.Collection;
import java.util.Set;
public interface DriverAPI {
- /**
- * Registers a new driver for a block component.
- *
- * Whenever the neighboring blocks of an Adapter block change, it checks if
- * there exists a driver for the changed block, and if it is configured to
- * interface that block type connects it to the component network.
- *
- * This must be called in the init phase, not the pre- or post-init
- * phases.
- *
- * @param driver the driver for a block component.
- * @deprecated Use {@link SidedBlock} instead.
- */
- @Deprecated // TODO Remove in OC 1.7
- void add(Block driver);
-
/**
* Registers a new side-aware block driver.
*
@@ -104,31 +88,14 @@ public interface DriverAPI {
* Note that several drivers for a single block can exist. Because of this
* block drivers are always encapsulated in a 'compound' driver, which is
* what will be returned here. In other words, you should will not
- * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.Block)}.
- *
- * @param world the world containing the block.
- * @param pos the position of the block.
- * @return a driver for the block, or null if there is none.
- * @deprecated Use {@link #driverFor(World, BlockPos, EnumFacing)},
- * passing null if the side is to be ignored.
- */
- @Deprecated // TODO Remove in OC 1.7
- Block driverFor(World world, BlockPos pos);
-
- /**
- * Looks up a driver for the block at the specified position in the
- * specified world.
- *
- * Note that several drivers for a single block can exist. Because of this
- * block drivers are always encapsulated in a 'compound' driver, which is
- * what will be returned here. In other words, you should will not
- * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.Block)}.
+ * get actual instances of drivers registered via {@link #add(li.cil.oc.api.driver.SidedBlock)}.
*
* @param world the world containing the block.
* @param pos the position of the block.
* @param side the side of the block.
* @return a driver for the block, or null if there is none.
*/
+ @Nullable
SidedBlock driverFor(World world, BlockPos pos, EnumFacing side);
/**
@@ -142,6 +109,7 @@ public interface DriverAPI {
* @param host the type that will host the environment created by returned driver.
* @return a driver for the item, or null if there is none.
*/
+ @Nullable
Item driverFor(ItemStack stack, Class extends EnvironmentHost> host);
/**
@@ -157,6 +125,7 @@ public interface DriverAPI {
* @param stack the item stack to get a driver for.
* @return a driver for the item, or null if there is none.
*/
+ @Nullable
Item driverFor(ItemStack stack);
/**
@@ -188,7 +157,8 @@ public interface DriverAPI {
/**
* @deprecated Use {@link #itemHandlerFor(ItemStack, EntityPlayer)} instead.
*/
- @Deprecated // TODO Remove in OC 1.7
+ @Deprecated
+ // TODO Remove in OC 1.7
IInventory inventoryFor(ItemStack stack, EntityPlayer player);
/**
@@ -207,18 +177,6 @@ public interface DriverAPI {
*/
IItemHandler itemHandlerFor(ItemStack stack, EntityPlayer player);
- /**
- * Get a list of all registered block drivers.
- *
- * This is intended to allow checking for particular drivers using more
- * customized logic.
- *
- * The returned collection is read-only.
- *
- * @return the list of all registered block drivers.
- */
- Collection blockDrivers();
-
/**
* Get a list of all registered item drivers.
*
diff --git a/src/main/java/li/cil/oc/api/detail/ItemAPI.java b/src/main/java/li/cil/oc/api/detail/ItemAPI.java
index 33beda68c..847f9fe69 100644
--- a/src/main/java/li/cil/oc/api/detail/ItemAPI.java
+++ b/src/main/java/li/cil/oc/api/detail/ItemAPI.java
@@ -1,5 +1,6 @@
package li.cil.oc.api.detail;
+import jline.internal.Nullable;
import li.cil.oc.api.FileSystem;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
@@ -19,6 +20,7 @@ public interface ItemAPI {
* @return the descriptor for the item with the specified name, or
* null if there is no such item.
*/
+ @Nullable
ItemInfo get(String name);
/**
@@ -29,6 +31,7 @@ public interface ItemAPI {
* @return the descriptor for the specified item stack, or null
* if the stack is not a valid OpenComputers item or block.
*/
+ @Nullable
ItemInfo get(ItemStack stack);
/**
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverBlock.java b/src/main/java/li/cil/oc/api/prefab/DriverBlock.java
deleted file mode 100644
index b672abccd..000000000
--- a/src/main/java/li/cil/oc/api/prefab/DriverBlock.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package li.cil.oc.api.prefab;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.item.ItemBlock;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraftforge.oredict.OreDictionary;
-
-/**
- * If you wish to create a block component for a third-party block, i.e. a block
- * for which you do not control the tile entity, such as vanilla blocks, you
- * will need a block driver.
- *
- * This prefab allows creating a driver that works for a specified list of item
- * stacks (to support different blocks with the same id but different metadata
- * values).
- *
- * You still have to provide the implementation for creating its environment, if
- * any.
- *
- * @see li.cil.oc.api.network.ManagedEnvironment
- * @deprecated Use {@link DriverSidedBlock} instead.
- */
-@Deprecated // TODO Remove in OC 1.7
-@SuppressWarnings("UnusedDeclaration")
-public abstract class DriverBlock implements li.cil.oc.api.driver.Block {
- protected final ItemStack[] blocks;
-
- protected DriverBlock(final ItemStack... blocks) {
- this.blocks = blocks.clone();
- }
-
- @Override
- public boolean worksWith(final World world, final BlockPos pos) {
- final IBlockState state = world.getBlockState(pos);
- final Block block = state.getBlock();
- return worksWith(block, block.getMetaFromState(state));
- }
-
- protected boolean worksWith(final Block referenceBlock, final int referenceMetadata) {
- for (ItemStack stack : blocks) {
- if (stack != null && stack.getItem() instanceof ItemBlock) {
- final ItemBlock item = (ItemBlock) stack.getItem();
- final Block supportedBlock = item.getBlock();
- final int supportedMetadata = item.getMetadata(stack.getItemDamage());
- if (referenceBlock == supportedBlock && (referenceMetadata == supportedMetadata || stack.getItemDamage() == OreDictionary.WILDCARD_VALUE)) {
- return true;
- }
- }
- }
- return false;
- }
-}
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverItem.java b/src/main/java/li/cil/oc/api/prefab/DriverItem.java
index 5b098a449..57001429c 100644
--- a/src/main/java/li/cil/oc/api/prefab/DriverItem.java
+++ b/src/main/java/li/cil/oc/api/prefab/DriverItem.java
@@ -28,9 +28,9 @@ public abstract class DriverItem implements li.cil.oc.api.driver.Item {
@Override
public boolean worksWith(final ItemStack stack) {
- if (stack != null) {
+ if (!stack.isEmpty()) {
for (ItemStack item : items) {
- if (item != null && item.isItemEqual(stack)) {
+ if (!item.isEmpty() && item.isItemEqual(stack)) {
return true;
}
}
diff --git a/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java
index 3f4db0ee5..60f2af3c9 100644
--- a/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java
+++ b/src/main/java/li/cil/oc/api/prefab/DriverSidedBlock.java
@@ -43,7 +43,7 @@ public abstract class DriverSidedBlock implements li.cil.oc.api.driver.SidedBloc
protected boolean worksWith(final Block referenceBlock, final int referenceMetadata) {
for (ItemStack stack : blocks) {
- if (stack != null && stack.getItem() instanceof ItemBlock) {
+ if (!stack.isEmpty() && stack.getItem() instanceof ItemBlock) {
final ItemBlock item = (ItemBlock) stack.getItem();
final Block supportedBlock = item.getBlock();
final int supportedMetadata = item.getMetadata(stack.getItemDamage());
diff --git a/src/main/resources/assets/opencomputers/blockstates/accessPoint.json b/src/main/resources/assets/opencomputers/blockstates/accesspoint.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/accessPoint.json
rename to src/main/resources/assets/opencomputers/blockstates/accesspoint.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/caseCreative.json b/src/main/resources/assets/opencomputers/blockstates/casecreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/caseCreative.json
rename to src/main/resources/assets/opencomputers/blockstates/casecreative.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/chameliumBlock.json b/src/main/resources/assets/opencomputers/blockstates/chameliumblock.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/chameliumBlock.json
rename to src/main/resources/assets/opencomputers/blockstates/chameliumblock.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/diskDrive.json b/src/main/resources/assets/opencomputers/blockstates/diskdrive.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/diskDrive.json
rename to src/main/resources/assets/opencomputers/blockstates/diskdrive.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/motionSensor.json b/src/main/resources/assets/opencomputers/blockstates/motionsensor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/motionSensor.json
rename to src/main/resources/assets/opencomputers/blockstates/motionsensor.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/powerConverter.json b/src/main/resources/assets/opencomputers/blockstates/powerconverter.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/powerConverter.json
rename to src/main/resources/assets/opencomputers/blockstates/powerconverter.json
diff --git a/src/main/resources/assets/opencomputers/blockstates/powerDistributor.json b/src/main/resources/assets/opencomputers/blockstates/powerdistributor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/blockstates/powerDistributor.json
rename to src/main/resources/assets/opencomputers/blockstates/powerdistributor.json
diff --git a/src/main/resources/assets/opencomputers/models/block/accessPoint.json b/src/main/resources/assets/opencomputers/models/block/accesspoint.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/accessPoint.json
rename to src/main/resources/assets/opencomputers/models/block/accesspoint.json
diff --git a/src/main/resources/assets/opencomputers/models/block/chameliumBlock.json b/src/main/resources/assets/opencomputers/models/block/chameliumblock.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/chameliumBlock.json
rename to src/main/resources/assets/opencomputers/models/block/chameliumblock.json
diff --git a/src/main/resources/assets/opencomputers/models/block/diskDrive.json b/src/main/resources/assets/opencomputers/models/block/diskdrive.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/diskDrive.json
rename to src/main/resources/assets/opencomputers/models/block/diskdrive.json
diff --git a/src/main/resources/assets/opencomputers/models/block/motionSensor.json b/src/main/resources/assets/opencomputers/models/block/motionsensor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/motionSensor.json
rename to src/main/resources/assets/opencomputers/models/block/motionsensor.json
diff --git a/src/main/resources/assets/opencomputers/models/block/powerConverter.json b/src/main/resources/assets/opencomputers/models/block/powerconverter.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/powerConverter.json
rename to src/main/resources/assets/opencomputers/models/block/powerconverter.json
diff --git a/src/main/resources/assets/opencomputers/models/block/powerDistributor.json b/src/main/resources/assets/opencomputers/models/block/powerdistributor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/block/powerDistributor.json
rename to src/main/resources/assets/opencomputers/models/block/powerdistributor.json
diff --git a/src/main/resources/assets/opencomputers/models/item/abstractBusCard.json b/src/main/resources/assets/opencomputers/models/item/abstractbuscard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/abstractBusCard.json
rename to src/main/resources/assets/opencomputers/models/item/abstractbuscard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/accessPoint.json b/src/main/resources/assets/opencomputers/models/item/accesspoint.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/accessPoint.json
rename to src/main/resources/assets/opencomputers/models/item/accesspoint.json
diff --git a/src/main/resources/assets/opencomputers/models/item/angelUpgrade.json b/src/main/resources/assets/opencomputers/models/item/angelupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/angelUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/angelupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/apuCreative.json b/src/main/resources/assets/opencomputers/models/item/apucreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/apuCreative.json
rename to src/main/resources/assets/opencomputers/models/item/apucreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/arrowKeys.json b/src/main/resources/assets/opencomputers/models/item/arrowkeys.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/arrowKeys.json
rename to src/main/resources/assets/opencomputers/models/item/arrowkeys.json
diff --git a/src/main/resources/assets/opencomputers/models/item/batteryUpgrade1.json b/src/main/resources/assets/opencomputers/models/item/batteryupgrade1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/batteryUpgrade1.json
rename to src/main/resources/assets/opencomputers/models/item/batteryupgrade1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/batteryUpgrade2.json b/src/main/resources/assets/opencomputers/models/item/batteryupgrade2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/batteryUpgrade2.json
rename to src/main/resources/assets/opencomputers/models/item/batteryupgrade2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/batteryUpgrade3.json b/src/main/resources/assets/opencomputers/models/item/batteryupgrade3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/batteryUpgrade3.json
rename to src/main/resources/assets/opencomputers/models/item/batteryupgrade3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/buttonGroup.json b/src/main/resources/assets/opencomputers/models/item/buttongroup.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/buttonGroup.json
rename to src/main/resources/assets/opencomputers/models/item/buttongroup.json
diff --git a/src/main/resources/assets/opencomputers/models/item/cardContainer1.json b/src/main/resources/assets/opencomputers/models/item/cardcontainer1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/cardContainer1.json
rename to src/main/resources/assets/opencomputers/models/item/cardcontainer1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/cardContainer2.json b/src/main/resources/assets/opencomputers/models/item/cardcontainer2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/cardContainer2.json
rename to src/main/resources/assets/opencomputers/models/item/cardcontainer2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/cardContainer3.json b/src/main/resources/assets/opencomputers/models/item/cardcontainer3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/cardContainer3.json
rename to src/main/resources/assets/opencomputers/models/item/cardcontainer3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/caseCreative.json b/src/main/resources/assets/opencomputers/models/item/casecreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/caseCreative.json
rename to src/main/resources/assets/opencomputers/models/item/casecreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/chameliumBlock.json b/src/main/resources/assets/opencomputers/models/item/chameliumblock.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/chameliumBlock.json
rename to src/main/resources/assets/opencomputers/models/item/chameliumblock.json
diff --git a/src/main/resources/assets/opencomputers/models/item/chipDiamond.json b/src/main/resources/assets/opencomputers/models/item/chipdiamond.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/chipDiamond.json
rename to src/main/resources/assets/opencomputers/models/item/chipdiamond.json
diff --git a/src/main/resources/assets/opencomputers/models/item/chunkloaderUpgrade.json b/src/main/resources/assets/opencomputers/models/item/chunkloaderupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/chunkloaderUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/chunkloaderupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/circuitBoard.json b/src/main/resources/assets/opencomputers/models/item/circuitboard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/circuitBoard.json
rename to src/main/resources/assets/opencomputers/models/item/circuitboard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/componentBus1.json b/src/main/resources/assets/opencomputers/models/item/componentbus1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/componentBus1.json
rename to src/main/resources/assets/opencomputers/models/item/componentbus1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/componentBus2.json b/src/main/resources/assets/opencomputers/models/item/componentbus2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/componentBus2.json
rename to src/main/resources/assets/opencomputers/models/item/componentbus2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/componentBus3.json b/src/main/resources/assets/opencomputers/models/item/componentbus3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/componentBus3.json
rename to src/main/resources/assets/opencomputers/models/item/componentbus3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/craftingUpgrade.json b/src/main/resources/assets/opencomputers/models/item/craftingupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/craftingUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/craftingupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/cuttingWire.json b/src/main/resources/assets/opencomputers/models/item/cuttingwire.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/cuttingWire.json
rename to src/main/resources/assets/opencomputers/models/item/cuttingwire.json
diff --git a/src/main/resources/assets/opencomputers/models/item/databaseUpgrade1.json b/src/main/resources/assets/opencomputers/models/item/databaseupgrade1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/databaseUpgrade1.json
rename to src/main/resources/assets/opencomputers/models/item/databaseupgrade1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/databaseUpgrade2.json b/src/main/resources/assets/opencomputers/models/item/databaseupgrade2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/databaseUpgrade2.json
rename to src/main/resources/assets/opencomputers/models/item/databaseupgrade2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/databaseUpgrade3.json b/src/main/resources/assets/opencomputers/models/item/databaseupgrade3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/databaseUpgrade3.json
rename to src/main/resources/assets/opencomputers/models/item/databaseupgrade3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/dataCard1.json b/src/main/resources/assets/opencomputers/models/item/datacard1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/dataCard1.json
rename to src/main/resources/assets/opencomputers/models/item/datacard1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/dataCard2.json b/src/main/resources/assets/opencomputers/models/item/datacard2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/dataCard2.json
rename to src/main/resources/assets/opencomputers/models/item/datacard2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/dataCard3.json b/src/main/resources/assets/opencomputers/models/item/datacard3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/dataCard3.json
rename to src/main/resources/assets/opencomputers/models/item/datacard3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/debugCard.json b/src/main/resources/assets/opencomputers/models/item/debugcard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/debugCard.json
rename to src/main/resources/assets/opencomputers/models/item/debugcard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/diskDrive.json b/src/main/resources/assets/opencomputers/models/item/diskdrive.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/diskDrive.json
rename to src/main/resources/assets/opencomputers/models/item/diskdrive.json
diff --git a/src/main/resources/assets/opencomputers/models/item/diskDriveMountable.json b/src/main/resources/assets/opencomputers/models/item/diskdrivemountable.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/diskDriveMountable.json
rename to src/main/resources/assets/opencomputers/models/item/diskdrivemountable.json
diff --git a/src/main/resources/assets/opencomputers/models/item/droneCase1.json b/src/main/resources/assets/opencomputers/models/item/dronecase1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/droneCase1.json
rename to src/main/resources/assets/opencomputers/models/item/dronecase1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/droneCase2.json b/src/main/resources/assets/opencomputers/models/item/dronecase2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/droneCase2.json
rename to src/main/resources/assets/opencomputers/models/item/dronecase2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/droneCaseCreative.json b/src/main/resources/assets/opencomputers/models/item/dronecasecreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/droneCaseCreative.json
rename to src/main/resources/assets/opencomputers/models/item/dronecasecreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/experienceUpgrade.json b/src/main/resources/assets/opencomputers/models/item/experienceupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/experienceUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/experienceupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/generatorUpgrade.json b/src/main/resources/assets/opencomputers/models/item/generatorupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/generatorUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/generatorupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/graphicsCard1.json b/src/main/resources/assets/opencomputers/models/item/graphicscard1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/graphicsCard1.json
rename to src/main/resources/assets/opencomputers/models/item/graphicscard1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/graphicsCard2.json b/src/main/resources/assets/opencomputers/models/item/graphicscard2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/graphicsCard2.json
rename to src/main/resources/assets/opencomputers/models/item/graphicscard2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/hoverBoots.json b/src/main/resources/assets/opencomputers/models/item/hoverboots.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/hoverBoots.json
rename to src/main/resources/assets/opencomputers/models/item/hoverboots.json
diff --git a/src/main/resources/assets/opencomputers/models/item/hoverUpgrade1.json b/src/main/resources/assets/opencomputers/models/item/hoverupgrade1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/hoverUpgrade1.json
rename to src/main/resources/assets/opencomputers/models/item/hoverupgrade1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/hoverUpgrade2.json b/src/main/resources/assets/opencomputers/models/item/hoverupgrade2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/hoverUpgrade2.json
rename to src/main/resources/assets/opencomputers/models/item/hoverupgrade2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/inkCartridge.json b/src/main/resources/assets/opencomputers/models/item/inkcartridge.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/inkCartridge.json
rename to src/main/resources/assets/opencomputers/models/item/inkcartridge.json
diff --git a/src/main/resources/assets/opencomputers/models/item/inkCartridgeEmpty.json b/src/main/resources/assets/opencomputers/models/item/inkcartridgeempty.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/inkCartridgeEmpty.json
rename to src/main/resources/assets/opencomputers/models/item/inkcartridgeempty.json
diff --git a/src/main/resources/assets/opencomputers/models/item/internetCard.json b/src/main/resources/assets/opencomputers/models/item/internetcard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/internetCard.json
rename to src/main/resources/assets/opencomputers/models/item/internetcard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/inventoryControllerUpgrade.json b/src/main/resources/assets/opencomputers/models/item/inventorycontrollerupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/inventoryControllerUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/inventorycontrollerupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/inventoryUpgrade.json b/src/main/resources/assets/opencomputers/models/item/inventoryupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/inventoryUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/inventoryupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/lanCard.json b/src/main/resources/assets/opencomputers/models/item/lancard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/lanCard.json
rename to src/main/resources/assets/opencomputers/models/item/lancard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/leashUpgrade.json b/src/main/resources/assets/opencomputers/models/item/leashupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/leashUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/leashupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/linkedCard.json b/src/main/resources/assets/opencomputers/models/item/linkedcard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/linkedCard.json
rename to src/main/resources/assets/opencomputers/models/item/linkedcard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/lootDisk.json b/src/main/resources/assets/opencomputers/models/item/lootdisk.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/lootDisk.json
rename to src/main/resources/assets/opencomputers/models/item/lootdisk.json
diff --git a/src/main/resources/assets/opencomputers/models/item/microcontrollerCase1.json b/src/main/resources/assets/opencomputers/models/item/microcontrollercase1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/microcontrollerCase1.json
rename to src/main/resources/assets/opencomputers/models/item/microcontrollercase1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/microcontrollerCase2.json b/src/main/resources/assets/opencomputers/models/item/microcontrollercase2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/microcontrollerCase2.json
rename to src/main/resources/assets/opencomputers/models/item/microcontrollercase2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/microcontrollerCaseCreative.json b/src/main/resources/assets/opencomputers/models/item/microcontrollercasecreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/microcontrollerCaseCreative.json
rename to src/main/resources/assets/opencomputers/models/item/microcontrollercasecreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/motionSensor.json b/src/main/resources/assets/opencomputers/models/item/motionsensor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/motionSensor.json
rename to src/main/resources/assets/opencomputers/models/item/motionsensor.json
diff --git a/src/main/resources/assets/opencomputers/models/item/navigationUpgrade.json b/src/main/resources/assets/opencomputers/models/item/navigationupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/navigationUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/navigationupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/nuggetIron.json b/src/main/resources/assets/opencomputers/models/item/nuggetiron.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/nuggetIron.json
rename to src/main/resources/assets/opencomputers/models/item/nuggetiron.json
diff --git a/src/main/resources/assets/opencomputers/models/item/numPad.json b/src/main/resources/assets/opencomputers/models/item/numpad.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/numPad.json
rename to src/main/resources/assets/opencomputers/models/item/numpad.json
diff --git a/src/main/resources/assets/opencomputers/models/item/pistonUpgrade.json b/src/main/resources/assets/opencomputers/models/item/pistonupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/pistonUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/pistonupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/powerConverter.json b/src/main/resources/assets/opencomputers/models/item/powerconverter.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/powerConverter.json
rename to src/main/resources/assets/opencomputers/models/item/powerconverter.json
diff --git a/src/main/resources/assets/opencomputers/models/item/powerDistributor.json b/src/main/resources/assets/opencomputers/models/item/powerdistributor.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/powerDistributor.json
rename to src/main/resources/assets/opencomputers/models/item/powerdistributor.json
diff --git a/src/main/resources/assets/opencomputers/models/item/printedCircuitBoard.json b/src/main/resources/assets/opencomputers/models/item/printedcircuitboard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/printedCircuitBoard.json
rename to src/main/resources/assets/opencomputers/models/item/printedcircuitboard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/rawCircuitBoard.json b/src/main/resources/assets/opencomputers/models/item/rawcircuitboard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/rawCircuitBoard.json
rename to src/main/resources/assets/opencomputers/models/item/rawcircuitboard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/redstoneCard1.json b/src/main/resources/assets/opencomputers/models/item/redstonecard1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/redstoneCard1.json
rename to src/main/resources/assets/opencomputers/models/item/redstonecard1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/redstoneCard2.json b/src/main/resources/assets/opencomputers/models/item/redstonecard2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/redstoneCard2.json
rename to src/main/resources/assets/opencomputers/models/item/redstonecard2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/serverCreative.json b/src/main/resources/assets/opencomputers/models/item/servercreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/serverCreative.json
rename to src/main/resources/assets/opencomputers/models/item/servercreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/signUpgrade.json b/src/main/resources/assets/opencomputers/models/item/signupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/signUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/signupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/solarGeneratorUpgrade.json b/src/main/resources/assets/opencomputers/models/item/solargeneratorupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/solarGeneratorUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/solargeneratorupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tabletCase1.json b/src/main/resources/assets/opencomputers/models/item/tabletcase1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tabletCase1.json
rename to src/main/resources/assets/opencomputers/models/item/tabletcase1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tabletCase2.json b/src/main/resources/assets/opencomputers/models/item/tabletcase2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tabletCase2.json
rename to src/main/resources/assets/opencomputers/models/item/tabletcase2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tabletCaseCreative.json b/src/main/resources/assets/opencomputers/models/item/tabletcasecreative.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tabletCaseCreative.json
rename to src/main/resources/assets/opencomputers/models/item/tabletcasecreative.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tankControllerUpgrade.json b/src/main/resources/assets/opencomputers/models/item/tankcontrollerupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tankControllerUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/tankcontrollerupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tankUpgrade.json b/src/main/resources/assets/opencomputers/models/item/tankupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tankUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/tankupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/terminalServer.json b/src/main/resources/assets/opencomputers/models/item/terminalserver.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/terminalServer.json
rename to src/main/resources/assets/opencomputers/models/item/terminalserver.json
diff --git a/src/main/resources/assets/opencomputers/models/item/texturePicker.json b/src/main/resources/assets/opencomputers/models/item/texturepicker.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/texturePicker.json
rename to src/main/resources/assets/opencomputers/models/item/texturepicker.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tractorBeamUpgrade.json b/src/main/resources/assets/opencomputers/models/item/tractorbeamupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tractorBeamUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/tractorbeamupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/tradingUpgrade.json b/src/main/resources/assets/opencomputers/models/item/tradingupgrade.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/tradingUpgrade.json
rename to src/main/resources/assets/opencomputers/models/item/tradingupgrade.json
diff --git a/src/main/resources/assets/opencomputers/models/item/upgradeContainer1.json b/src/main/resources/assets/opencomputers/models/item/upgradecontainer1.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/upgradeContainer1.json
rename to src/main/resources/assets/opencomputers/models/item/upgradecontainer1.json
diff --git a/src/main/resources/assets/opencomputers/models/item/upgradeContainer2.json b/src/main/resources/assets/opencomputers/models/item/upgradecontainer2.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/upgradeContainer2.json
rename to src/main/resources/assets/opencomputers/models/item/upgradecontainer2.json
diff --git a/src/main/resources/assets/opencomputers/models/item/upgradeContainer3.json b/src/main/resources/assets/opencomputers/models/item/upgradecontainer3.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/upgradeContainer3.json
rename to src/main/resources/assets/opencomputers/models/item/upgradecontainer3.json
diff --git a/src/main/resources/assets/opencomputers/models/item/wlanCard.json b/src/main/resources/assets/opencomputers/models/item/wlancard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/wlanCard.json
rename to src/main/resources/assets/opencomputers/models/item/wlancard.json
diff --git a/src/main/resources/assets/opencomputers/models/item/worldSensorCard.json b/src/main/resources/assets/opencomputers/models/item/worldsensorcard.json
similarity index 100%
rename from src/main/resources/assets/opencomputers/models/item/worldSensorCard.json
rename to src/main/resources/assets/opencomputers/models/item/worldsensorcard.json
diff --git a/src/main/scala/li/cil/oc/client/PacketHandler.scala b/src/main/scala/li/cil/oc/client/PacketHandler.scala
index 5ffdfe38c..1de3aa265 100644
--- a/src/main/scala/li/cil/oc/client/PacketHandler.scala
+++ b/src/main/scala/li/cil/oc/client/PacketHandler.scala
@@ -318,7 +318,7 @@ object PacketHandler extends CommonPacketHandler {
def onLootDisk(p: PacketParser) = {
val stack = p.readItemStack()
- if (stack != null) {
+ if (!stack.isEmpty) {
Loot.disksForClient += stack
}
if(Mods.JustEnoughItems.isAvailable) {
@@ -333,7 +333,7 @@ object PacketHandler extends CommonPacketHandler {
def onCyclingDisk(p: PacketParser) = {
val stack = p.readItemStack()
- if (stack != null) {
+ if (!stack.isEmpty) {
Loot.disksForCyclingClient += stack
}
}
diff --git a/src/main/scala/li/cil/oc/client/gui/Assembler.scala b/src/main/scala/li/cil/oc/client/gui/Assembler.scala
index 85f64fb9f..60146d69c 100644
--- a/src/main/scala/li/cil/oc/client/gui/Assembler.scala
+++ b/src/main/scala/li/cil/oc/client/gui/Assembler.scala
@@ -55,7 +55,7 @@ class Assembler(playerInventory: InventoryPlayer, val assembler: tileentity.Asse
add(buttonList, runButton)
}
- override def drawSecondaryForegroundLayer(mouseX: Int, mouseY: Int) = {
+ override def drawSecondaryForegroundLayer(mouseX: Int, mouseY: Int): Unit = {
RenderState.pushAttrib()
if (!inventoryContainer.isAssembling) {
val message =
diff --git a/src/main/scala/li/cil/oc/client/gui/DynamicGuiContainer.scala b/src/main/scala/li/cil/oc/client/gui/DynamicGuiContainer.scala
index 8a488d1be..bd4a44acb 100644
--- a/src/main/scala/li/cil/oc/client/gui/DynamicGuiContainer.scala
+++ b/src/main/scala/li/cil/oc/client/gui/DynamicGuiContainer.scala
@@ -93,7 +93,7 @@ abstract class DynamicGuiContainer[C <: Container](container: C) extends CustomG
*/
if (Mods.JustEnoughItems.isAvailable) {
- drawJEIHighlights()
+// drawJEIHighlights()
}
}
@@ -129,7 +129,7 @@ abstract class DynamicGuiContainer[C <: Container](container: C) extends CustomG
}
protected def drawSlotHighlight(slot: Slot) {
- if (mc.player.inventory.getItemStack == null) slot match {
+ if (mc.player.inventory.getItemStack.isEmpty) slot match {
case component: ComponentSlot if component.slot == common.Slot.None || component.tier == common.Tier.None => // Ignore.
case _ =>
val currentIsInPlayerInventory = isInPlayerInventory(slot)
@@ -187,7 +187,7 @@ abstract class DynamicGuiContainer[C <: Container](container: C) extends CustomG
override def onGuiClosed(): Unit = {
super.onGuiClosed()
if(Mods.JustEnoughItems.isAvailable) {
- resetJEIHighlights()
+// resetJEIHighlights()
}
}
/* TODO NEI
diff --git a/src/main/scala/li/cil/oc/client/renderer/block/ModelInitialization.scala b/src/main/scala/li/cil/oc/client/renderer/block/ModelInitialization.scala
index 4988badc6..e94caf842 100644
--- a/src/main/scala/li/cil/oc/client/renderer/block/ModelInitialization.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/block/ModelInitialization.scala
@@ -86,13 +86,13 @@ object ModelInitialization {
ModelLoader.setCustomModelResourceLocation(stack.getItem, stack.getMetadata, itemLocation)
ModelLoader.setCustomStateMapper(block, new StateMapperBase {
- override def getModelResourceLocation(state: IBlockState) = blockLocation
+ override def getModelResourceLocation(state: IBlockState): ModelResourceLocation = blockLocation
})
}
private def registerItems(): Unit = {
val meshDefinition = new ItemMeshDefinition {
- override def getModelLocation(stack: ItemStack) = {
+ override def getModelLocation(stack: ItemStack): ModelResourceLocation = {
Option(api.Items.get(stack)) match {
case Some(descriptor) =>
val location = Settings.resourceDomain + ":" + descriptor.name()
diff --git a/src/main/scala/li/cil/oc/client/renderer/markdown/segment/render/OreDictImageProvider.scala b/src/main/scala/li/cil/oc/client/renderer/markdown/segment/render/OreDictImageProvider.scala
index 084ede5e3..0bad3914f 100644
--- a/src/main/scala/li/cil/oc/client/renderer/markdown/segment/render/OreDictImageProvider.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/markdown/segment/render/OreDictImageProvider.scala
@@ -10,7 +10,7 @@ import scala.collection.convert.WrapAsScala._
object OreDictImageProvider extends ImageProvider {
override def getImage(data: String): ImageRenderer = {
- val stacks = OreDictionary.getOres(data).filter(stack => stack != null && stack.getItem != null)
+ val stacks = OreDictionary.getOres(data).filter(stack => !stack.isEmpty && stack.getItem != null)
if (stacks != null && stacks.nonEmpty) new ItemStackImageRenderer(stacks.toArray)
else new TextureImageRenderer(Textures.GUI.ManualMissingItem) with InteractiveImageRenderer {
override def getTooltip(tooltip: String): String = "oc:gui.Manual.Warning.OreDictMissing"
diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala
index c2eb1ea40..0866fad97 100644
--- a/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/DiskDriveRenderer.scala
@@ -33,7 +33,7 @@ object DiskDriveRenderer extends TileEntitySpecialRenderer[DiskDrive] {
}
drive.items(0) match {
- case Some(stack) =>
+ case stack if !stack.isEmpty =>
GlStateManager.pushMatrix()
GlStateManager.translate(0, 3.5f / 16, 6 / 16f)
GlStateManager.rotate(90, -1, 0, 0)
diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/RackRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/RackRenderer.scala
index 4863f0031..d1c9290a2 100644
--- a/src/main/scala/li/cil/oc/client/renderer/tileentity/RackRenderer.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/RackRenderer.scala
@@ -34,7 +34,7 @@ object RackRenderer extends TileEntitySpecialRenderer[Rack] {
// Note: we manually sync the rack inventory for this to work.
for (i <- 0 until rack.getSizeInventory) {
- if (rack.getStackInSlot(i) != null) {
+ if (!rack.getStackInSlot(i).isEmpty) {
GlStateManager.pushMatrix()
RenderState.pushAttrib()
diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala
index 91134ea1a..a149c89c4 100644
--- a/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/RobotRenderer.scala
@@ -420,7 +420,7 @@ object RobotRenderer extends TileEntitySpecialRenderer[tileentity.RobotProxy] {
lazy val slotMapping = Array.fill(mountPoints.length)(null: (ItemStack, UpgradeRenderer))
val renderers = (robot.componentSlots ++ robot.containerSlots).map(robot.getStackInSlot).
- collect { case stack if stack != null && stack.getItem.isInstanceOf[UpgradeRenderer] => (stack, stack.getItem.asInstanceOf[UpgradeRenderer]) }
+ collect { case stack if !stack.isEmpty && stack.getItem.isInstanceOf[UpgradeRenderer] => (stack, stack.getItem.asInstanceOf[UpgradeRenderer]) }
for ((stack, renderer) <- renderers) {
val preferredSlot = renderer.computePreferredMountPoint(stack, robot, availableSlots)
diff --git a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala
index 303b4bfd9..deee40c16 100644
--- a/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala
+++ b/src/main/scala/li/cil/oc/client/renderer/tileentity/ScreenRenderer.scala
@@ -122,7 +122,7 @@ object ScreenRenderer extends TileEntitySpecialRenderer[Screen] {
private def drawOverlay() = if (screen.facing == EnumFacing.UP || screen.facing == EnumFacing.DOWN) {
// Show up vector overlay when holding same screen block.
val stack = Minecraft.getMinecraft.player.getHeldItemMainhand
- if (stack != null) {
+ if (!stack.isEmpty) {
if (Wrench.holdsApplicableWrench(Minecraft.getMinecraft.player, screen.getPos) || screens.contains(api.Items.get(stack))) {
GlStateManager.pushMatrix()
transform()
diff --git a/src/main/scala/li/cil/oc/common/Achievement.scala b/src/main/scala/li/cil/oc/common/Achievement.scala
index ca02165f6..ae8c4a686 100644
--- a/src/main/scala/li/cil/oc/common/Achievement.scala
+++ b/src/main/scala/li/cil/oc/common/Achievement.scala
@@ -297,7 +297,7 @@ object Achievement {
}
for (requirement <- customCrafting) {
- if (requirement != null) {
+ if (!requirement.isEmpty) {
Achievement.CustomCraftingMap += requirement -> achievement
}
}
diff --git a/src/main/scala/li/cil/oc/common/EventHandler.scala b/src/main/scala/li/cil/oc/common/EventHandler.scala
index 9836418e3..8b0fba099 100644
--- a/src/main/scala/li/cil/oc/common/EventHandler.scala
+++ b/src/main/scala/li/cil/oc/common/EventHandler.scala
@@ -315,7 +315,7 @@ object EventHandler {
didRecraft = recraft(e, tablet, stack => {
// Restore EEPROM currently used in tablet.
- new TabletData(stack).items.collect { case Some(item) => item }.find(api.Items.get(_) == eeprom)
+ new TabletData(stack).items.collect { case item if !item.isEmpty => item }.find(api.Items.get(_) == eeprom)
}) || didRecraft
// Presents?
diff --git a/src/main/scala/li/cil/oc/common/PacketBuilder.scala b/src/main/scala/li/cil/oc/common/PacketBuilder.scala
index b88dc29bb..27d0bb801 100644
--- a/src/main/scala/li/cil/oc/common/PacketBuilder.scala
+++ b/src/main/scala/li/cil/oc/common/PacketBuilder.scala
@@ -43,7 +43,7 @@ abstract class PacketBuilder(stream: OutputStream) extends DataOutputStream(stre
}
def writeItemStack(stack: ItemStack) = {
- val haveStack = stack != null && stack.getCount > 0
+ val haveStack = !stack.isEmpty && stack.getCount > 0
writeBoolean(haveStack)
if (haveStack) {
writeNBT(stack.writeToNBT(new NBTTagCompound()))
diff --git a/src/main/scala/li/cil/oc/common/PacketHandler.scala b/src/main/scala/li/cil/oc/common/PacketHandler.scala
index 0145fcccb..392a0591c 100644
--- a/src/main/scala/li/cil/oc/common/PacketHandler.scala
+++ b/src/main/scala/li/cil/oc/common/PacketHandler.scala
@@ -16,6 +16,7 @@ import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.item.ItemStack
import net.minecraft.nbt.CompressedStreamTools
+import net.minecraft.nbt.NBTTagCompound
import net.minecraft.network.INetHandler
import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
@@ -123,20 +124,20 @@ abstract class PacketHandler {
getEntity[T](dimension, id)
}
- def readDirection() = readByte() match {
+ def readDirection(): Option[EnumFacing] = readByte() match {
case id if id < 0 => None
case id => Option(EnumFacing.getFront(id))
}
- def readItemStack() = {
+ def readItemStack(): ItemStack = {
val haveStack = readBoolean()
if (haveStack) {
new ItemStack(readNBT())
}
- else null
+ else ItemStack.EMPTY
}
- def readNBT() = {
+ def readNBT(): NBTTagCompound = {
val haveNbt = readBoolean()
if (haveNbt) {
CompressedStreamTools.read(this)
diff --git a/src/main/scala/li/cil/oc/common/block/Cable.scala b/src/main/scala/li/cil/oc/common/block/Cable.scala
index 3009d730d..16ec2c4d3 100644
--- a/src/main/scala/li/cil/oc/common/block/Cable.scala
+++ b/src/main/scala/li/cil/oc/common/block/Cable.scala
@@ -54,7 +54,7 @@ class Cable(protected implicit val tileTag: ClassTag[tileentity.Cable]) extends
override def getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer) =
world.getTileEntity(pos) match {
case t: tileentity.Cable => t.createItemStack()
- case _ => null
+ case _ => ItemStack.EMPTY
}
override def getBoundingBox(state: IBlockState, world: IBlockAccess, pos: BlockPos): AxisAlignedBB = Cable.bounds(world, pos)
diff --git a/src/main/scala/li/cil/oc/common/block/DiskDrive.scala b/src/main/scala/li/cil/oc/common/block/DiskDrive.scala
index be0f18a1c..be637f9da 100644
--- a/src/main/scala/li/cil/oc/common/block/DiskDrive.scala
+++ b/src/main/scala/li/cil/oc/common/block/DiskDrive.scala
@@ -33,13 +33,13 @@ class DiskDrive extends SimpleBlock with traits.GUI {
override def getComparatorInputOverride(state: IBlockState, world: World, pos: BlockPos): Int =
world.getTileEntity(pos) match {
- case drive: tileentity.DiskDrive if drive.getStackInSlot(0) != null => 15
+ case drive: tileentity.DiskDrive if !drive.getStackInSlot(0).isEmpty => 15
case _ => 0
}
// ----------------------------------------------------------------------- //
- override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
+ override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean = {
// Behavior: sneaking -> Insert[+Eject], not sneaking -> GUI.
if (player.isSneaking) world.getTileEntity(pos) match {
case drive: tileentity.DiskDrive =>
diff --git a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala
index 6c9bd3645..d7efa81ca 100644
--- a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala
+++ b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala
@@ -19,6 +19,7 @@ import net.minecraft.block.state.BlockStateContainer
import net.minecraft.block.state.IBlockState
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.util.EnumFacing
import net.minecraft.util.EnumHand
@@ -43,7 +44,7 @@ class Microcontroller(protected implicit val tileTag: ClassTag[tileentity.Microc
override def getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack =
world.getTileEntity(pos) match {
case mcu: tileentity.Microcontroller => mcu.info.copyItemStack()
- case _ => null
+ case _ => ItemStack.EMPTY
}
// ----------------------------------------------------------------------- //
@@ -52,26 +53,26 @@ class Microcontroller(protected implicit val tileTag: ClassTag[tileentity.Microc
super.tooltipTail(metadata, stack, player, tooltip, advanced)
if (KeyBindings.showExtendedTooltips) {
val info = new MicrocontrollerData(stack)
- for (component <- info.components if component != null) {
+ for (component <- info.components if !component.isEmpty) {
tooltip.add("- " + component.getDisplayName)
}
}
}
- override def rarity(stack: ItemStack) = {
+ override def rarity(stack: ItemStack): EnumRarity = {
val data = new MicrocontrollerData(stack)
Rarity.byTier(data.tier)
}
// ----------------------------------------------------------------------- //
- override def energyThroughput = Settings.get.caseRate(Tier.One)
+ override def energyThroughput: Double = Settings.get.caseRate(Tier.One)
override def createNewTileEntity(world: World, metadata: Int) = new tileentity.Microcontroller()
// ----------------------------------------------------------------------- //
- override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
+ override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean = {
if (!Wrench.holdsApplicableWrench(player, pos)) {
if (!player.isSneaking) {
if (!world.isRemote) {
diff --git a/src/main/scala/li/cil/oc/common/block/Print.scala b/src/main/scala/li/cil/oc/common/block/Print.scala
index 529bc3b26..0906eeca7 100644
--- a/src/main/scala/li/cil/oc/common/block/Print.scala
+++ b/src/main/scala/li/cil/oc/common/block/Print.scala
@@ -94,7 +94,7 @@ class Print(protected implicit val tileTag: ClassTag[tileentity.Print]) extends
override def shouldSideBeRendered(state: IBlockState, world: IBlockAccess, pos: BlockPos, side: EnumFacing) = true
- override def isBlockSolid(world: IBlockAccess, pos: BlockPos, side: EnumFacing) =
+ override def isBlockSolid(world: IBlockAccess, pos: BlockPos, side: EnumFacing): Boolean =
world.getTileEntity(pos) match {
case print: tileentity.Print => print.isSideSolid(side)
case _ => false
@@ -106,7 +106,7 @@ class Print(protected implicit val tileTag: ClassTag[tileentity.Print]) extends
override def getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack = {
world.getTileEntity(pos) match {
case print: tileentity.Print => print.data.createItemStack()
- case _ => null
+ case _ => ItemStack.EMPTY
}
}
diff --git a/src/main/scala/li/cil/oc/common/block/Raid.scala b/src/main/scala/li/cil/oc/common/block/Raid.scala
index 49dee2d1f..273251323 100644
--- a/src/main/scala/li/cil/oc/common/block/Raid.scala
+++ b/src/main/scala/li/cil/oc/common/block/Raid.scala
@@ -30,7 +30,7 @@ class Raid(protected implicit val tileTag: ClassTag[tileentity.Raid]) extends Si
super.tooltipTail(metadata, stack, player, tooltip, advanced)
if (KeyBindings.showExtendedTooltips) {
val data = new RaidData(stack)
- for (disk <- data.disks if disk != null) {
+ for (disk <- data.disks if !disk.isEmpty) {
tooltip.add("- " + disk.getDisplayName)
}
}
@@ -70,9 +70,9 @@ class Raid(protected implicit val tileTag: ClassTag[tileentity.Raid]) extends Si
override protected def doCustomDrops(tileEntity: tileentity.Raid, player: EntityPlayer, willHarvest: Boolean): Unit = {
super.doCustomDrops(tileEntity, player, willHarvest)
val stack = createItemStack()
- if (tileEntity.items.exists(_.isDefined)) {
+ if (tileEntity.items.exists(!_.isEmpty)) {
val data = new RaidData()
- data.disks = tileEntity.items.map(_.orNull)
+ data.disks = tileEntity.items.clone()
tileEntity.filesystem.foreach(_.save(data.filesystem))
data.label = Option(tileEntity.label.getLabel)
data.save(stack)
diff --git a/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala b/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala
index b0f33f3f7..7d8e890da 100644
--- a/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala
+++ b/src/main/scala/li/cil/oc/common/block/RobotAfterimage.scala
@@ -40,7 +40,7 @@ class RobotAfterimage extends SimpleBlock {
override def getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack =
findMovingRobot(world, pos) match {
case Some(robot) => robot.info.createItemStack()
- case _ => null
+ case _ => ItemStack.EMPTY
}
override def getBoundingBox(state: IBlockState, world: IBlockAccess, pos: BlockPos): AxisAlignedBB = {
diff --git a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala
index 4217e5798..5d0ae93f0 100644
--- a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala
+++ b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala
@@ -21,6 +21,7 @@ import net.minecraft.block.state.IBlockState
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.util._
import net.minecraft.util.math.AxisAlignedBB
@@ -56,7 +57,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
override def getPickBlock(state: IBlockState, target: RayTraceResult, world: World, pos: BlockPos, player: EntityPlayer): ItemStack =
world.getTileEntity(pos) match {
case proxy: tileentity.RobotProxy => proxy.robot.info.copyItemStack()
- case _ => null
+ case _ => ItemStack.EMPTY
}
override def getBoundingBox(state: IBlockState, world: IBlockAccess, pos: BlockPos): AxisAlignedBB = {
@@ -78,7 +79,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
// ----------------------------------------------------------------------- //
- override def rarity(stack: ItemStack) = {
+ override def rarity(stack: ItemStack): EnumRarity = {
val data = new RobotData(stack)
Rarity.byTier(data.tier)
}
@@ -126,7 +127,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
// ----------------------------------------------------------------------- //
- override def createNewTileEntity(world: World, metadata: Int) = {
+ override def createNewTileEntity(world: World, metadata: Int): tileentity.RobotProxy = {
moving.get match {
case Some(robot) => new tileentity.RobotProxy(robot)
case _ => new tileentity.RobotProxy()
@@ -137,7 +138,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
override def getExplosionResistance(entity: Entity) = 10f
- override def getDrops(world: IBlockAccess, pos: BlockPos, state: IBlockState, fortune: Int) = {
+ override def getDrops(world: IBlockAccess, pos: BlockPos, state: IBlockState, fortune: Int): util.ArrayList[ItemStack] = {
val list = new java.util.ArrayList[ItemStack]()
// Superspecial hack... usually this will not work, because Minecraft calls
@@ -177,7 +178,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
private def gettingDropsForActualDrop = new Exception().getStackTrace.exists(element => getDropForRealDropCallers.contains(element.getClassName + "." + element.getMethodName))
- override def collisionRayTrace(state: IBlockState, world: World, pos: BlockPos, start: Vec3d, end: Vec3d) = {
+ override def collisionRayTrace(state: IBlockState, world: World, pos: BlockPos, start: Vec3d, end: Vec3d): RayTraceResult = {
val bounds = getCollisionBoundingBox(state, world, pos)
world.getTileEntity(pos) match {
case proxy: tileentity.RobotProxy if proxy.robot.animationTicksLeft <= 0 && bounds.isVecInside(start) => null
@@ -187,7 +188,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
// ----------------------------------------------------------------------- //
- override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
+ override def localOnBlockActivated(world: World, pos: BlockPos, player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Boolean = {
if (!player.isSneaking) {
if (!world.isRemote) {
// We only send slot changes to nearby players, so if there was no slot
@@ -202,7 +203,7 @@ class RobotProxy extends RedstoneAware with traits.StateAware {
}
true
}
- else if (heldItem == null) {
+ else if (heldItem.isEmpty) {
if (!world.isRemote) {
world.getTileEntity(pos) match {
case proxy: tileentity.RobotProxy if !proxy.machine.isRunning && proxy.isUsableByPlayer(player) => proxy.machine.start()
diff --git a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala
index 2abfb97de..aecfdaf95 100644
--- a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala
+++ b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala
@@ -891,7 +891,7 @@ object TextBuffer {
override def copyToAnalyzer(line: Int, player: EntityPlayer): Unit = {
val stack = player.getHeldItem(EnumHand.MAIN_HAND)
- if (stack != null) {
+ if (!stack.isEmpty) {
if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound())
}
diff --git a/src/main/scala/li/cil/oc/common/container/Drone.scala b/src/main/scala/li/cil/oc/common/container/Drone.scala
index 6158906a1..a5da73716 100644
--- a/src/main/scala/li/cil/oc/common/container/Drone.scala
+++ b/src/main/scala/li/cil/oc/common/container/Drone.scala
@@ -5,6 +5,7 @@ import li.cil.oc.common
import li.cil.oc.common.entity
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.inventory.IInventory
+import net.minecraft.item.ItemStack
import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly
@@ -33,7 +34,7 @@ class Drone(playerInventory: InventoryPlayer, drone: entity.Drone) extends Playe
override def getStack = {
if (isValid) super.getStack
- else null
+ else ItemStack.EMPTY
}
}
diff --git a/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala b/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala
index 9b5dba116..09f1a8277 100644
--- a/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala
+++ b/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala
@@ -7,27 +7,28 @@ import li.cil.oc.util.InventoryUtils
import li.cil.oc.util.SideTracker
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory
+import net.minecraft.util.ResourceLocation
class DynamicComponentSlot(val container: Player, inventory: IInventory, index: Int, x: Int, y: Int, val info: DynamicComponentSlot => InventorySlot, val containerTierGetter: () => Int) extends ComponentSlot(inventory, index, x, y) {
- override def tier = {
+ override def tier: Int = {
val mainTier = containerTierGetter()
if (mainTier >= 0) info(this).tier
else mainTier
}
- def tierIcon = Textures.Icons.get(tier)
+ def tierIcon: ResourceLocation = Textures.Icons.get(tier)
- def slot = {
+ def slot: String = {
val mainTier = containerTierGetter()
if (mainTier >= 0) info(this).slot
else common.Slot.None
}
- override def hasBackground = Textures.Icons.get(slot) != null
+ override def hasBackground: Boolean = Textures.Icons.get(slot) != null
- override def getBackgroundLocation = Option(Textures.Icons.get(slot)).getOrElse(super.getBackgroundLocation)
+ override def getBackgroundLocation: ResourceLocation = Option(Textures.Icons.get(slot)).getOrElse(super.getBackgroundLocation)
- override def getSlotStackLimit =
+ override def getSlotStackLimit: Int =
slot match {
case common.Slot.Tool | common.Slot.Any | common.Slot.Filtered => super.getSlotStackLimit
case common.Slot.None => 0
diff --git a/src/main/scala/li/cil/oc/common/container/Player.scala b/src/main/scala/li/cil/oc/common/container/Player.scala
index b09d08aec..200a2d13b 100644
--- a/src/main/scala/li/cil/oc/common/container/Player.scala
+++ b/src/main/scala/li/cil/oc/common/container/Player.scala
@@ -37,8 +37,7 @@ abstract class Player(val playerInventory: InventoryPlayer, val otherInventory:
// because stacks can change their... "character" just by being inserted in
// certain containers - by being assigned an address.
}
- if (result != null && result.getCount > 0) result
- else null
+ result
}
override def transferStackInSlot(player: EntityPlayer, index: Int): ItemStack = {
@@ -49,7 +48,7 @@ abstract class Player(val playerInventory: InventoryPlayer, val otherInventory:
detectAndSendChanges()
}
}
- null
+ ItemStack.EMPTY
}
protected def tryTransferStackInSlot(from: Slot, intoPlayerInventory: Boolean) {
diff --git a/src/main/scala/li/cil/oc/common/container/Rack.scala b/src/main/scala/li/cil/oc/common/container/Rack.scala
index 32bc54c23..7c3fe1900 100644
--- a/src/main/scala/li/cil/oc/common/container/Rack.scala
+++ b/src/main/scala/li/cil/oc/common/container/Rack.scala
@@ -18,7 +18,7 @@ class Rack(playerInventory: InventoryPlayer, val rack: tileentity.Rack) extends
addPlayerInventorySlots(8, 128)
final val MaxConnections = 4
- val nodePresence = Array.fill(4)(Array.fill(4)(false))
+ val nodePresence: Array[Array[Boolean]] = Array.fill(4)(Array.fill(4)(false))
override def updateCustomData(nbt: NBTTagCompound): Unit = {
super.updateCustomData(nbt)
diff --git a/src/main/scala/li/cil/oc/common/container/Robot.scala b/src/main/scala/li/cil/oc/common/container/Robot.scala
index bd37e0abb..b4fe73a15 100644
--- a/src/main/scala/li/cil/oc/common/container/Robot.scala
+++ b/src/main/scala/li/cil/oc/common/container/Robot.scala
@@ -7,17 +7,19 @@ import li.cil.oc.common.tileentity
import li.cil.oc.util.SideTracker
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.inventory.IInventory
+import net.minecraft.item.ItemStack
+import net.minecraft.util.ResourceLocation
import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly
class Robot(playerInventory: InventoryPlayer, robot: tileentity.Robot) extends Player(playerInventory, robot) {
- val hasScreen = robot.components.exists {
+ val hasScreen: Boolean = robot.components.exists {
case Some(buffer: api.internal.TextBuffer) => true
case _ => false
}
private val withScreenHeight = 256
private val noScreenHeight = 108
- val deltaY = if (hasScreen) 0 else withScreenHeight - noScreenHeight
+ val deltaY: Int = if (hasScreen) 0 else withScreenHeight - noScreenHeight
addSlotToContainer(170 + 0 * slotSize, 232 - deltaY, common.Slot.Tool)
addSlotToContainer(170 + 1 * slotSize, 232 - deltaY, robot.containerSlotType(1), robot.containerSlotTier(1))
@@ -76,18 +78,18 @@ class Robot(playerInventory: InventoryPlayer, robot: tileentity.Robot) extends P
}
class InventorySlot(container: Player, inventory: IInventory, index: Int, x: Int, y: Int) extends StaticComponentSlot(container, inventory, index, x, y, common.Slot.Any, common.Tier.Any) {
- def isValid = robot.isInventorySlot(getSlotIndex)
+ def isValid: Boolean = robot.isInventorySlot(getSlotIndex)
@SideOnly(Side.CLIENT) override
- def canBeHovered = isValid && super.canBeHovered
+ def canBeHovered: Boolean = isValid && super.canBeHovered
- override def getBackgroundLocation =
+ override def getBackgroundLocation: ResourceLocation =
if (isValid) super.getBackgroundLocation
else Textures.Icons.get(common.Tier.None)
- override def getStack = {
+ override def getStack: ItemStack = {
if (isValid) super.getStack
- else null
+ else ItemStack.EMPTY
}
}
diff --git a/src/main/scala/li/cil/oc/common/entity/Drone.scala b/src/main/scala/li/cil/oc/common/entity/Drone.scala
index 3fc19c347..0ec1af3de 100644
--- a/src/main/scala/li/cil/oc/common/entity/Drone.scala
+++ b/src/main/scala/li/cil/oc/common/entity/Drone.scala
@@ -1,5 +1,6 @@
package li.cil.oc.common.entity
+import java.lang
import java.lang.Iterable
import java.util.UUID
@@ -13,6 +14,7 @@ import li.cil.oc.api.Machine
import li.cil.oc.api.driver.item
import li.cil.oc.api.internal
import li.cil.oc.api.internal.MultiTank
+import li.cil.oc.api.machine
import li.cil.oc.api.machine.Context
import li.cil.oc.api.machine.MachineHost
import li.cil.oc.api.network._
@@ -36,6 +38,7 @@ import net.minecraft.entity.item.EntityItem
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
+import net.minecraft.network.datasync.DataParameter
import net.minecraft.network.datasync.DataSerializers
import net.minecraft.network.datasync.EntityDataManager
import net.minecraft.util.EnumFacing
@@ -48,24 +51,24 @@ import net.minecraftforge.fluids.IFluidTank
import scala.collection.convert.WrapAsJava._
object Drone {
- val DataRunning = EntityDataManager.createKey(classOf[Drone], DataSerializers.BOOLEAN)
- val DataTargetX = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
- val DataTargetY = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
- val DataTargetZ = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
- val DataMaxAcceleration = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
- val DataSelectedSlot = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
- val DataCurrentEnergy = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
- val DataMaxEnergy = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
- val DataStatusText = EntityDataManager.createKey(classOf[Drone], DataSerializers.STRING)
- val DataInventorySize = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
- val DataLightColor = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
+ val DataRunning: DataParameter[lang.Boolean] = EntityDataManager.createKey(classOf[Drone], DataSerializers.BOOLEAN)
+ val DataTargetX: DataParameter[lang.Float] = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
+ val DataTargetY: DataParameter[lang.Float] = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
+ val DataTargetZ: DataParameter[lang.Float] = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
+ val DataMaxAcceleration: DataParameter[lang.Float] = EntityDataManager.createKey(classOf[Drone], DataSerializers.FLOAT)
+ val DataSelectedSlot: DataParameter[Integer] = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
+ val DataCurrentEnergy: DataParameter[Integer] = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
+ val DataMaxEnergy: DataParameter[Integer] = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
+ val DataStatusText: DataParameter[String] = EntityDataManager.createKey(classOf[Drone], DataSerializers.STRING)
+ val DataInventorySize: DataParameter[Integer] = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
+ val DataLightColor: DataParameter[Integer] = EntityDataManager.createKey(classOf[Drone], DataSerializers.VARINT)
}
// internal.Rotatable is also in internal.Drone, but it wasn't since the start
// so this is to ensure it is implemented here, in the very unlikely case that
// someone decides to ship that specific version of the API.
class Drone(world: World) extends Entity(world) with MachineHost with internal.Drone with internal.Rotatable with Analyzable with Context {
- override def world = getEntityWorld
+ override def world: World = getEntityWorld
// Some basic constants.
val gravity = 0.05f
@@ -78,28 +81,28 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
isImmuneToFire = true
// Rendering stuff, purely eyecandy.
- val targetFlapAngles = Array.fill(4, 2)(0f)
- val flapAngles = Array.fill(4, 2)(0f)
+ val targetFlapAngles: Array[Array[Float]] = Array.fill(4, 2)(0f)
+ val flapAngles: Array[Array[Float]] = Array.fill(4, 2)(0f)
var nextFlapChange = 0
- var bodyAngle = math.random.toFloat * 90
+ var bodyAngle: Float = math.random.toFloat * 90
var angularVelocity = 0f
var nextAngularVelocityChange = 0
var lastEnergyUpdate = 0
// Logic stuff, components, machine and such.
val info = new DroneData()
- val machine = if (!world.isRemote) {
+ val machine: api.machine.Machine = if (!world.isRemote) {
val m = Machine.create(this)
m.node.asInstanceOf[Connector].setLocalBufferSize(0)
m
} else null
- val control = if (!world.isRemote) new component.Drone(this) else null
+ val control: component.Drone = if (!world.isRemote) new component.Drone(this) else null
val components = new ComponentInventory {
- override def host = Drone.this
+ override def host: Drone = Drone.this
- override def items = info.components.map(Option(_))
+ override def items: Array[ItemStack] = info.components
- override def getSizeInventory = info.components.length
+ override def getSizeInventory: Int = info.components.length
override def markDirty() {}
@@ -107,7 +110,7 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def isUsableByPlayer(player: EntityPlayer) = true
- override def node = Option(machine).map(_.node).orNull
+ override def node: Node = Option(machine).map(_.node).orNull
override def onConnect(node: Node) {}
@@ -116,7 +119,7 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def onMessage(message: Message) {}
}
val equipmentInventory = new Inventory {
- val items = Array.empty[Option[ItemStack]]
+ val items = Array.empty[ItemStack]
override def getSizeInventory = 0
@@ -129,20 +132,20 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def isUsableByPlayer(player: EntityPlayer) = false
}
val mainInventory = new Inventory {
- val items = Array.fill[Option[ItemStack]](8)(None)
+ val items: Array[ItemStack] = Array.fill[ItemStack](8)(ItemStack.EMPTY)
- override def getSizeInventory = inventorySize
+ override def getSizeInventory: Int = inventorySize
override def getInventoryStackLimit = 64
override def markDirty() {} // TODO update client GUI?
- override def isItemValidForSlot(slot: Int, stack: ItemStack) = slot >= 0 && slot < getSizeInventory
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean = slot >= 0 && slot < getSizeInventory
- override def isUsableByPlayer(player: EntityPlayer) = player.getDistanceSqToEntity(Drone.this) < 64
+ override def isUsableByPlayer(player: EntityPlayer): Boolean = player.getDistanceSqToEntity(Drone.this) < 64
}
val tank = new MultiTank {
- override def tankCount = components.components.count {
+ override def tankCount: Int = components.components.count {
case Some(tank: IFluidTank) => true
case _ => false
}
@@ -155,20 +158,20 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def setSelectedTank(index: Int): Unit = selectedTank = index
- override def tier = info.tier
+ override def tier: Int = info.tier
override def player(): EntityPlayer = {
agent.Player.updatePositionAndRotation(player_, facing, facing)
player_
}
- override def name = info.name
+ override def name: String = info.name
override def setName(name: String): Unit = info.name = name
- var ownerName = Settings.get.fakePlayerName
+ var ownerName: String = Settings.get.fakePlayerName
- var ownerUUID = Settings.get.fakePlayerProfile.getId
+ var ownerUUID: UUID = Settings.get.fakePlayerProfile.getId
private lazy val player_ = new agent.Player(this)
@@ -176,21 +179,21 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
// Forward context stuff to our machine. Interface needed for some components
// to work correctly (such as the chunkloader upgrade).
- override def node = machine.node
+ override def node: Node = machine.node
- override def canInteract(player: String) = machine.canInteract(player)
+ override def canInteract(player: String): Boolean = machine.canInteract(player)
- override def isPaused = machine.isPaused
+ override def isPaused: Boolean = machine.isPaused
- override def start() = machine.start()
+ override def start(): Boolean = machine.start()
- override def pause(seconds: Double) = machine.pause(seconds)
+ override def pause(seconds: Double): Boolean = machine.pause(seconds)
- override def stop() = machine.stop()
+ override def stop(): Boolean = machine.stop()
- override def consumeCallBudget(callCost: Double) = machine.consumeCallBudget(callCost)
+ override def consumeCallBudget(callCost: Double): Unit = machine.consumeCallBudget(callCost)
- override def signal(name: String, args: AnyRef*) = machine.signal(name, args: _*)
+ override def signal(name: String, args: AnyRef*): Boolean = machine.signal(name, args: _*)
// ----------------------------------------------------------------------- //
@@ -212,11 +215,11 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
// ----------------------------------------------------------------------- //
- override def xPosition = posX
+ override def xPosition: Double = posX
- override def yPosition = posY
+ override def yPosition: Double = posY
- override def zPosition = posZ
+ override def zPosition: Double = posZ
override def markChanged() {}
@@ -224,9 +227,9 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def facing = EnumFacing.SOUTH
- override def toLocal(value: EnumFacing) = value
+ override def toLocal(value: EnumFacing): EnumFacing = value
- override def toGlobal(value: EnumFacing) = value
+ override def toGlobal(value: EnumFacing): EnumFacing = value
// ----------------------------------------------------------------------- //
@@ -236,13 +239,13 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
override def internalComponents(): Iterable[ItemStack] = asJavaIterable(info.components)
- override def componentSlot(address: String) = components.components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
+ override def componentSlot(address: String): Int = components.components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
override def onMachineConnect(node: Node) {}
override def onMachineDisconnect(node: Node) {}
- def computeInventorySize() = math.min(maxInventorySize, info.components.foldLeft(0)((acc, component) => acc + (Option(component) match {
+ def computeInventorySize(): Int = math.min(maxInventorySize, info.components.foldLeft(0)((acc, component) => acc + (Option(component) match {
case Some(stack) => Option(Driver.driverFor(stack, getClass)) match {
case Some(driver: item.Inventory) => math.max(1, driver.inventoryCapacity(stack) / 4)
case _ => 0
@@ -290,29 +293,29 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
components.connectComponents()
}
- def isRunning = getDataManager.get(Drone.DataRunning)
+ def isRunning: Boolean = getDataManager.get(Drone.DataRunning)
- def targetX = getDataManager.get(Drone.DataTargetX)
+ def targetX: lang.Float = getDataManager.get(Drone.DataTargetX)
- def targetY = getDataManager.get(Drone.DataTargetY)
+ def targetY: lang.Float = getDataManager.get(Drone.DataTargetY)
- def targetZ = getDataManager.get(Drone.DataTargetZ)
+ def targetZ: lang.Float = getDataManager.get(Drone.DataTargetZ)
- def targetAcceleration = getDataManager.get(Drone.DataMaxAcceleration)
+ def targetAcceleration: lang.Float = getDataManager.get(Drone.DataMaxAcceleration)
- def selectedSlot = getDataManager.get(Drone.DataSelectedSlot) & 0xFF
+ def selectedSlot: Int = getDataManager.get(Drone.DataSelectedSlot) & 0xFF
- def globalBuffer = getDataManager.get(Drone.DataCurrentEnergy)
+ def globalBuffer: Integer = getDataManager.get(Drone.DataCurrentEnergy)
- def globalBufferSize = getDataManager.get(Drone.DataMaxEnergy)
+ def globalBufferSize: Integer = getDataManager.get(Drone.DataMaxEnergy)
- def statusText = getDataManager.get(Drone.DataStatusText)
+ def statusText: String = getDataManager.get(Drone.DataStatusText)
- def inventorySize = getDataManager.get(Drone.DataInventorySize) & 0xFF
+ def inventorySize: Int = getDataManager.get(Drone.DataInventorySize) & 0xFF
- def lightColor = getDataManager.get(Drone.DataLightColor)
+ def lightColor: Integer = getDataManager.get(Drone.DataLightColor)
- def setRunning(value: Boolean) = getDataManager.set(Drone.DataRunning, Boolean.box(value))
+ def setRunning(value: Boolean): Unit = getDataManager.set(Drone.DataRunning, Boolean.box(value))
// Round target values to low accuracy to avoid floating point errors accumulating.
def targetX_=(value: Float): Unit = getDataManager.set(Drone.DataTargetX, Float.box(math.round(value * 4) / 4f))
@@ -323,17 +326,17 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
def targetAcceleration_=(value: Float): Unit = getDataManager.set(Drone.DataMaxAcceleration, Float.box(math.max(0, math.min(maxAcceleration, value))))
- def setSelectedSlot(value: Int) = getDataManager.set(Drone.DataSelectedSlot, Int.box(value.toByte))
+ def setSelectedSlot(value: Int): Unit = getDataManager.set(Drone.DataSelectedSlot, Int.box(value.toByte))
- def globalBuffer_=(value: Int) = getDataManager.set(Drone.DataCurrentEnergy, Int.box(value))
+ def globalBuffer_=(value: Int): Unit = getDataManager.set(Drone.DataCurrentEnergy, Int.box(value))
- def globalBufferSize_=(value: Int) = getDataManager.set(Drone.DataMaxEnergy, Int.box(value))
+ def globalBufferSize_=(value: Int): Unit = getDataManager.set(Drone.DataMaxEnergy, Int.box(value))
- def statusText_=(value: String) = getDataManager.set(Drone.DataStatusText, Option(value).fold("")(_.lines.map(_.take(10)).take(2).mkString("\n")))
+ def statusText_=(value: String): Unit = getDataManager.set(Drone.DataStatusText, Option(value).fold("")(_.lines.map(_.take(10)).take(2).mkString("\n")))
- def inventorySize_=(value: Int) = getDataManager.set(Drone.DataInventorySize, Int.box(value.toByte))
+ def inventorySize_=(value: Int): Unit = getDataManager.set(Drone.DataInventorySize, Int.box(value.toByte))
- def lightColor_=(value: Int) = getDataManager.set(Drone.DataLightColor, Int.box(value))
+ def lightColor_=(value: Int): Unit = getDataManager.set(Drone.DataLightColor, Int.box(value))
override def setPositionAndRotationDirect(x: Double, y: Double, z: Double, yaw: Float, pitch: Float, posRotationIncrements: Int, teleport: Boolean): Unit = {
// Only set exact position if we're too far away from the server's
@@ -458,7 +461,7 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
}
}
- override def hitByEntity(entity: Entity) = {
+ override def hitByEntity(entity: Entity): Boolean = {
if (isRunning) {
val direction = new Vec3d(entity.posX - posX, entity.posY + entity.getEyeHeight - posY, entity.posZ - posZ).normalize()
if (!world.isRemote) {
@@ -560,9 +563,9 @@ class Drone(world: World) extends Entity(world) with MachineHost with internal.D
}
}
- override def getName = Localization.localizeImmediately("entity.oc.Drone.name")
+ override def getName: String = Localization.localizeImmediately("entity.oc.Drone.name")
- override def handleWaterMovement() = {
+ override def handleWaterMovement(): Boolean = {
inWater = world.handleMaterialAcceleration(getEntityBoundingBox, Material.WATER, this)
inWater
}
diff --git a/src/main/scala/li/cil/oc/common/event/HoverBootsHandler.scala b/src/main/scala/li/cil/oc/common/event/HoverBootsHandler.scala
index dcd4d7aa1..d990c8f34 100644
--- a/src/main/scala/li/cil/oc/common/event/HoverBootsHandler.scala
+++ b/src/main/scala/li/cil/oc/common/event/HoverBootsHandler.scala
@@ -75,5 +75,5 @@ object HoverBootsHandler {
case _ => // Ignore.
}
- private def equippedArmor(player: EntityPlayer) = player.getArmorInventoryList.filter(_ != null)
+ private def equippedArmor(player: EntityPlayer) = player.getArmorInventoryList.filter(!_.isEmpty)
}
diff --git a/src/main/scala/li/cil/oc/common/event/RackMountableRenderHandler.scala b/src/main/scala/li/cil/oc/common/event/RackMountableRenderHandler.scala
index 58de1995b..ec3e40954 100644
--- a/src/main/scala/li/cil/oc/common/event/RackMountableRenderHandler.scala
+++ b/src/main/scala/li/cil/oc/common/event/RackMountableRenderHandler.scala
@@ -37,7 +37,7 @@ object RackMountableRenderHandler {
if (e.data.hasKey("disk")) {
val stack = new ItemStack(e.data.getCompoundTag("disk"))
- if (stack != null) {
+ if (!stack.isEmpty) {
GlStateManager.pushMatrix()
GlStateManager.scale(1, -1, 1)
GlStateManager.translate(10 / 16f, -(3.5f + e.mountable * 3f) / 16f, -2 / 16f)
diff --git a/src/main/scala/li/cil/oc/common/init/Items.scala b/src/main/scala/li/cil/oc/common/init/Items.scala
index d2bfee734..6eea8972e 100644
--- a/src/main/scala/li/cil/oc/common/init/Items.scala
+++ b/src/main/scala/li/cil/oc/common/init/Items.scala
@@ -1,6 +1,5 @@
package li.cil.oc.common.init
-import java.util
import java.util.concurrent.Callable
import li.cil.oc.Constants
@@ -23,7 +22,6 @@ import li.cil.oc.common.item.data.TabletData
import li.cil.oc.common.item.traits.Delegate
import li.cil.oc.common.item.traits.SimpleItem
import li.cil.oc.common.recipe.Recipes
-import li.cil.oc.integration.Mods
import net.minecraft.block.Block
import net.minecraft.creativetab.CreativeTabs
import net.minecraft.item.EnumDyeColor
@@ -36,6 +34,7 @@ import net.minecraft.util.ResourceLocation
import net.minecraftforge.fml.common.registry.GameRegistry
import scala.collection.mutable
+import scala.collection.mutable.ArrayBuffer
object Items extends ItemAPI {
val descriptors = mutable.Map.empty[String, ItemInfo]
@@ -48,12 +47,12 @@ object Items extends ItemAPI {
override def get(name: String): ItemInfo = descriptors.get(name).orNull
- override def get(stack: ItemStack) = names.get(getBlockOrItem(stack)) match {
+ override def get(stack: ItemStack): ItemInfo = names.get(getBlockOrItem(stack)) match {
case Some(name) => get(name)
case _ => null
}
- def registerBlock[T <: Block](instance: T, id: String) = {
+ def registerBlock[T <: Block](instance: T, id: String): T = {
if (!descriptors.contains(id)) {
instance match {
case simple: SimpleBlock =>
@@ -70,13 +69,13 @@ object Items extends ItemAPI {
case _ =>
}
descriptors += id -> new ItemInfo {
- override def name = id
+ override def name: String = id
- override def block = instance
+ override def block: T = instance
override def item = null
- override def createItemStack(size: Int) = instance match {
+ override def createItemStack(size: Int): ItemStack = instance match {
case simple: SimpleBlock => simple.createItemStack(size)
case _ => new ItemStack(instance, size)
}
@@ -86,24 +85,24 @@ object Items extends ItemAPI {
instance
}
- def registerItem[T <: Delegate](delegate: T, id: String) = {
+ def registerItem[T <: Delegate](delegate: T, id: String): T = {
if (!descriptors.contains(id)) {
OpenComputers.proxy.registerModel(delegate, id)
descriptors += id -> new ItemInfo {
- override def name = id
+ override def name: String = id
override def block = null
- override def item = delegate.parent
+ override def item: Delegator = delegate.parent
- override def createItemStack(size: Int) = delegate.createItemStack(size)
+ override def createItemStack(size: Int): ItemStack = delegate.createItemStack(size)
}
names += delegate -> id
}
delegate
}
- def registerItem(instance: Item, id: String) = {
+ def registerItem(instance: Item, id: String): Item = {
if (!descriptors.contains(id)) {
instance match {
case simple: SimpleItem =>
@@ -113,13 +112,13 @@ object Items extends ItemAPI {
case _ =>
}
descriptors += id -> new ItemInfo {
- override def name = id
+ override def name: String = id
override def block = null
- override def item = instance
+ override def item: Item = instance
- override def createItemStack(size: Int) = instance match {
+ override def createItemStack(size: Int): ItemStack = instance match {
case simple: SimpleItem => simple.createItemStack(size)
case _ => new ItemStack(instance, size)
}
@@ -129,10 +128,10 @@ object Items extends ItemAPI {
instance
}
- def registerStack(stack: ItemStack, id: String) = {
+ def registerStack(stack: ItemStack, id: String): ItemStack = {
val immutableStack = stack.copy()
descriptors += id -> new ItemInfo {
- override def name = id
+ override def name: String = id
override def block = null
@@ -142,13 +141,13 @@ object Items extends ItemAPI {
copy
}
- override def item = immutableStack.getItem
+ override def item: Item = immutableStack.getItem
}
stack
}
private def getBlockOrItem(stack: ItemStack): Any =
- if (stack == null) null
+ if (stack.isEmpty) null
else Delegator.subItem(stack).getOrElse(stack.getItem match {
case block: ItemBlock => block.getBlock
case item => item
@@ -156,7 +155,7 @@ object Items extends ItemAPI {
// ----------------------------------------------------------------------- //
- val registeredItems = mutable.ArrayBuffer.empty[ItemStack]
+ val registeredItems: ArrayBuffer[ItemStack] = mutable.ArrayBuffer.empty[ItemStack]
@Deprecated
override def registerFloppy(name: String, color: EnumDyeColor, factory: Callable[FileSystem]): ItemStack =
@@ -198,7 +197,7 @@ object Items extends ItemAPI {
private def safeGetStack(name: String) = Option(get(name)).map(_.createItemStack(1)).orNull
- def createConfiguredDrone() = {
+ def createConfiguredDrone(): ItemStack = {
val data = new DroneData()
data.name = "Crecopter"
@@ -222,7 +221,7 @@ object Items extends ItemAPI {
data.createItemStack()
}
- def createConfiguredMicrocontroller() = {
+ def createConfiguredMicrocontroller(): ItemStack = {
val data = new MicrocontrollerData()
data.tier = Tier.Four
@@ -242,7 +241,7 @@ object Items extends ItemAPI {
data.createItemStack()
}
- def createConfiguredRobot() = {
+ def createConfiguredRobot(): ItemStack = {
val data = new RobotData()
data.name = "Creatix"
@@ -283,39 +282,39 @@ object Items extends ItemAPI {
data.createItemStack()
}
- def createConfiguredTablet() = {
+ def createConfiguredTablet(): ItemStack = {
val data = new TabletData()
data.tier = Tier.Four
data.energy = Settings.get.bufferTablet
data.maxEnergy = data.energy
data.items = Array(
- Option(safeGetStack(Constants.BlockName.ScreenTier1)),
- Option(safeGetStack(Constants.BlockName.Keyboard)),
+ safeGetStack(Constants.BlockName.ScreenTier1),
+ safeGetStack(Constants.BlockName.Keyboard),
- Option(safeGetStack(Constants.ItemName.SignUpgrade)),
- Option(safeGetStack(Constants.ItemName.PistonUpgrade)),
- Option(safeGetStack(Constants.BlockName.Geolyzer)),
- Option(safeGetStack(Constants.ItemName.NavigationUpgrade)),
+ safeGetStack(Constants.ItemName.SignUpgrade),
+ safeGetStack(Constants.ItemName.PistonUpgrade),
+ safeGetStack(Constants.BlockName.Geolyzer),
+ safeGetStack(Constants.ItemName.NavigationUpgrade),
- Option(safeGetStack(Constants.ItemName.GraphicsCardTier2)),
- Option(safeGetStack(Constants.ItemName.RedstoneCardTier2)),
- Option(safeGetStack(Constants.ItemName.WirelessNetworkCard)),
+ safeGetStack(Constants.ItemName.GraphicsCardTier2),
+ safeGetStack(Constants.ItemName.RedstoneCardTier2),
+ safeGetStack(Constants.ItemName.WirelessNetworkCard),
- Option(safeGetStack(Constants.ItemName.CPUTier3)),
- Option(safeGetStack(Constants.ItemName.RAMTier6)),
- Option(safeGetStack(Constants.ItemName.RAMTier6)),
+ safeGetStack(Constants.ItemName.CPUTier3),
+ safeGetStack(Constants.ItemName.RAMTier6),
+ safeGetStack(Constants.ItemName.RAMTier6),
- Option(safeGetStack(Constants.ItemName.LuaBios)),
- Option(safeGetStack(Constants.ItemName.HDDTier3))
- ).padTo(32, None)
- data.items(31) = Option(safeGetStack(Constants.ItemName.OpenOS))
- data.container = Option(safeGetStack(Constants.BlockName.DiskDrive))
+ safeGetStack(Constants.ItemName.LuaBios),
+ safeGetStack(Constants.ItemName.HDDTier3)
+ ).padTo(32, ItemStack.EMPTY)
+ data.items(31) = safeGetStack(Constants.ItemName.OpenOS)
+ data.container = safeGetStack(Constants.BlockName.DiskDrive)
data.createItemStack()
}
- def createChargedHoverBoots() = {
+ def createChargedHoverBoots(): ItemStack = {
val data = new HoverBootsData()
data.charge = Settings.get.bufferHoverBoots
diff --git a/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala b/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala
index c1107abd5..aa0b84227 100644
--- a/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala
+++ b/src/main/scala/li/cil/oc/common/inventory/ComponentInventory.scala
@@ -46,7 +46,7 @@ trait ComponentInventory extends Inventory with network.Environment {
def connectComponents() {
for (slot <- 0 until getSizeInventory if slot >= 0 && slot < components.length) {
val stack = getStackInSlot(slot)
- if (stack != null && components(slot).isEmpty && isComponentSlot(slot, stack)) {
+ if (!stack.isEmpty && components(slot).isEmpty && isComponentSlot(slot, stack)) {
components(slot) = Option(Driver.driverFor(stack)) match {
case Some(driver) =>
Option(driver.createEnvironment(stack, host)) match {
@@ -98,7 +98,7 @@ trait ComponentInventory extends Inventory with network.Environment {
def saveComponents() {
for (slot <- 0 until getSizeInventory) {
val stack = getStackInSlot(slot)
- if (stack != null) {
+ if (!stack.isEmpty) {
components(slot) match {
case Some(component) =>
// We're guaranteed to have a driver for entries.
diff --git a/src/main/scala/li/cil/oc/common/inventory/Inventory.scala b/src/main/scala/li/cil/oc/common/inventory/Inventory.scala
index 64a9bb7db..6f6cd2f97 100644
--- a/src/main/scala/li/cil/oc/common/inventory/Inventory.scala
+++ b/src/main/scala/li/cil/oc/common/inventory/Inventory.scala
@@ -7,50 +7,50 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.util.Constants.NBT
trait Inventory extends SimpleInventory {
- def items: Array[Option[ItemStack]]
+ def items: Array[ItemStack]
- def updateItems(slot: Int, stack: ItemStack) = items(slot) = Option(stack)
+ def updateItems(slot: Int, stack: ItemStack): Unit = items(slot) = stack
// ----------------------------------------------------------------------- //
- override def getStackInSlot(slot: Int) =
- if (slot >= 0 && slot < getSizeInventory) items(slot).orNull
- else null
+ override def getStackInSlot(slot: Int): ItemStack =
+ if (slot >= 0 && slot < getSizeInventory) items(slot)
+ else ItemStack.EMPTY
override def setInventorySlotContents(slot: Int, stack: ItemStack): Unit = {
if (slot >= 0 && slot < getSizeInventory) {
- if (stack == null && items(slot).isEmpty) {
+ if (stack.isEmpty && items(slot).isEmpty) {
return
}
- if (items(slot).contains(stack)) {
+ if (items(slot) == stack) {
return
}
val oldStack = items(slot)
- updateItems(slot, null)
- if (oldStack.isDefined) {
- onItemRemoved(slot, oldStack.get)
+ updateItems(slot, ItemStack.EMPTY)
+ if (!oldStack.isEmpty) {
+ onItemRemoved(slot, oldStack)
}
- if (stack != null && stack.getCount >= getInventoryStackRequired) {
+ if (!stack.isEmpty && stack.getCount >= getInventoryStackRequired) {
if (stack.getCount > getInventoryStackLimit) {
stack.setCount(getInventoryStackLimit)
}
updateItems(slot, stack)
}
- if (items(slot).isDefined) {
- onItemAdded(slot, items(slot).get)
+ if (!items(slot).isEmpty) {
+ onItemAdded(slot, items(slot))
}
markDirty()
}
}
- override def getName = Settings.namespace + "container." + inventoryName
+ override def getName: String = Settings.namespace + "container." + inventoryName
- protected def inventoryName = getClass.getSimpleName
+ protected def inventoryName: String = getClass.getSimpleName
- override def isEmpty: Boolean = items.isEmpty || items.flatten.isEmpty
+ override def isEmpty: Boolean = items.forall(_.isEmpty)
// ----------------------------------------------------------------------- //
@@ -59,9 +59,6 @@ trait Inventory extends SimpleInventory {
private final val ItemTag = "item"
def load(nbt: NBTTagCompound) {
- // Implicit slot numbers are compatibility code for loading old server save format.
- // TODO 1.7 remove compat code.
- var count = 0
nbt.getTagList(ItemsTag, NBT.TAG_COMPOUND).foreach((tag: NBTTagCompound) => {
if (tag.hasKey(SlotTag)) {
val slot = tag.getByte(SlotTag)
@@ -69,20 +66,13 @@ trait Inventory extends SimpleInventory {
updateItems(slot, new ItemStack(tag.getCompoundTag(ItemTag)))
}
}
- else {
- val slot = count
- if (slot >= 0 && slot < items.length) {
- updateItems(slot, new ItemStack(tag))
- }
- }
- count += 1
})
}
def save(nbt: NBTTagCompound) {
nbt.setNewTagList(ItemsTag,
items.zipWithIndex collect {
- case (Some(stack), slot) => (stack, slot)
+ case (stack, slot) if !stack.isEmpty => (stack, slot)
} map {
case (stack, slot) =>
val slotNbt = new NBTTagCompound()
diff --git a/src/main/scala/li/cil/oc/common/inventory/InventoryProxy.scala b/src/main/scala/li/cil/oc/common/inventory/InventoryProxy.scala
index d3a2af313..020f62ec5 100644
--- a/src/main/scala/li/cil/oc/common/inventory/InventoryProxy.scala
+++ b/src/main/scala/li/cil/oc/common/inventory/InventoryProxy.scala
@@ -3,6 +3,7 @@ package li.cil.oc.common.inventory
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory
import net.minecraft.item.ItemStack
+import net.minecraft.util.text.ITextComponent
trait InventoryProxy extends IInventory {
def inventory: IInventory
@@ -11,59 +12,59 @@ trait InventoryProxy extends IInventory {
override def isEmpty: Boolean = inventory.isEmpty
- override def getSizeInventory = inventory.getSizeInventory
+ override def getSizeInventory: Int = inventory.getSizeInventory
- override def getInventoryStackLimit = inventory.getInventoryStackLimit
+ override def getInventoryStackLimit: Int = inventory.getInventoryStackLimit
- override def getName = inventory.getName
+ override def getName: String = inventory.getName
- override def getDisplayName = inventory.getDisplayName
+ override def getDisplayName: ITextComponent = inventory.getDisplayName
- override def hasCustomName = inventory.hasCustomName
+ override def hasCustomName: Boolean = inventory.hasCustomName
- override def isUsableByPlayer(player: EntityPlayer) = inventory.isUsableByPlayer(player)
+ override def isUsableByPlayer(player: EntityPlayer): Boolean = inventory.isUsableByPlayer(player)
- override def isItemValidForSlot(slot: Int, stack: ItemStack) = {
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean = {
val offsetSlot = slot + offset
isValidSlot(offsetSlot) && inventory.isItemValidForSlot(offsetSlot, stack)
}
- override def getStackInSlot(slot: Int) = {
+ override def getStackInSlot(slot: Int): ItemStack = {
val offsetSlot = slot + offset
if (isValidSlot(offsetSlot)) inventory.getStackInSlot(offsetSlot)
- else null
+ else ItemStack.EMPTY
}
- override def decrStackSize(slot: Int, amount: Int) = {
+ override def decrStackSize(slot: Int, amount: Int): ItemStack = {
val offsetSlot = slot + offset
if (isValidSlot(offsetSlot)) inventory.decrStackSize(offsetSlot, amount)
- else null
+ else ItemStack.EMPTY
}
- override def removeStackFromSlot(slot: Int) = {
+ override def removeStackFromSlot(slot: Int): ItemStack = {
val offsetSlot = slot + offset
if (isValidSlot(offsetSlot)) inventory.removeStackFromSlot(offsetSlot)
- else null
+ else ItemStack.EMPTY
}
- override def setInventorySlotContents(slot: Int, stack: ItemStack) = {
+ override def setInventorySlotContents(slot: Int, stack: ItemStack): Unit = {
val offsetSlot = slot + offset
if (isValidSlot(offsetSlot)) inventory.setInventorySlotContents(offsetSlot, stack)
}
- override def markDirty() = inventory.markDirty()
+ override def markDirty(): Unit = inventory.markDirty()
- override def openInventory(player: EntityPlayer) = inventory.openInventory(player)
+ override def openInventory(player: EntityPlayer): Unit = inventory.openInventory(player)
- override def closeInventory(player: EntityPlayer) = inventory.closeInventory(player)
+ override def closeInventory(player: EntityPlayer): Unit = inventory.closeInventory(player)
- override def setField(id: Int, value: Int) = inventory.setField(id, value)
+ override def setField(id: Int, value: Int): Unit = inventory.setField(id, value)
- override def clear() = inventory.clear()
+ override def clear(): Unit = inventory.clear()
- override def getFieldCount = inventory.getFieldCount
+ override def getFieldCount: Int = inventory.getFieldCount
- override def getField(id: Int) = inventory.getField(id)
+ override def getField(id: Int): Int = inventory.getField(id)
private def isValidSlot(slot: Int) = slot >= offset && slot < getSizeInventory + offset
}
diff --git a/src/main/scala/li/cil/oc/common/inventory/ItemStackInventory.scala b/src/main/scala/li/cil/oc/common/inventory/ItemStackInventory.scala
index 891840b13..626afc3f1 100644
--- a/src/main/scala/li/cil/oc/common/inventory/ItemStackInventory.scala
+++ b/src/main/scala/li/cil/oc/common/inventory/ItemStackInventory.scala
@@ -7,19 +7,19 @@ trait ItemStackInventory extends Inventory {
// The item stack that provides the inventory.
def container: ItemStack
- private lazy val inventory = Array.fill[Option[ItemStack]](getSizeInventory)(None)
+ private lazy val inventory = Array.fill[ItemStack](getSizeInventory)(ItemStack.EMPTY)
override def items = inventory
// Initialize the list automatically if we have a container.
- if (container != null) {
+ if (!container.isEmpty) {
reinitialize()
}
// Load items from tag.
def reinitialize() {
for (i <- items.indices) {
- updateItems(i, null)
+ updateItems(i, ItemStack.EMPTY)
}
if (!container.hasTagCompound) {
container.setTagCompound(new NBTTagCompound())
diff --git a/src/main/scala/li/cil/oc/common/inventory/SimpleInventory.scala b/src/main/scala/li/cil/oc/common/inventory/SimpleInventory.scala
index 782d9b50d..34113b728 100644
--- a/src/main/scala/li/cil/oc/common/inventory/SimpleInventory.scala
+++ b/src/main/scala/li/cil/oc/common/inventory/SimpleInventory.scala
@@ -24,33 +24,33 @@ trait SimpleInventory extends IInventory {
if (slot >= 0 && slot < getSizeInventory) {
(getStackInSlot(slot) match {
case stack: ItemStack if stack.getCount - amount < getInventoryStackRequired =>
- setInventorySlotContents(slot, null)
+ setInventorySlotContents(slot, ItemStack.EMPTY)
stack
case stack: ItemStack =>
val result = stack.splitStack(amount)
markDirty()
result
- case _ => null
+ case _ => ItemStack.EMPTY
}) match {
case stack: ItemStack if stack.getCount > 0 => stack
- case _ => null
+ case _ => ItemStack.EMPTY
}
}
- else null
+ else ItemStack.EMPTY
}
override def removeStackFromSlot(slot: Int) = {
if (slot >= 0 && slot < getSizeInventory) {
val stack = getStackInSlot(slot)
- setInventorySlotContents(slot, null)
+ setInventorySlotContents(slot, ItemStack.EMPTY)
stack
}
- else null
+ else ItemStack.EMPTY
}
override def clear(): Unit = {
for (slot <- 0 until getSizeInventory) {
- setInventorySlotContents(slot, null)
+ setInventorySlotContents(slot, ItemStack.EMPTY)
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/Acid.scala b/src/main/scala/li/cil/oc/common/item/Acid.scala
index 47adbcc8a..0ba9912f2 100644
--- a/src/main/scala/li/cil/oc/common/item/Acid.scala
+++ b/src/main/scala/li/cil/oc/common/item/Acid.scala
@@ -39,7 +39,7 @@ class Acid(val parent: Delegator) extends traits.Delegate {
}
stack.shrink(1)
if (stack.getCount > 0) stack
- else null
+ else ItemStack.EMPTY
case _ => stack
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/Chamelium.scala b/src/main/scala/li/cil/oc/common/item/Chamelium.scala
index 6f09583c1..7486f2fac 100644
--- a/src/main/scala/li/cil/oc/common/item/Chamelium.scala
+++ b/src/main/scala/li/cil/oc/common/item/Chamelium.scala
@@ -31,6 +31,6 @@ class Chamelium(val parent: Delegator) extends traits.Delegate {
}
stack.shrink(1)
if (stack.getCount > 0) stack
- else null
+ else ItemStack.EMPTY
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/Delegator.scala b/src/main/scala/li/cil/oc/common/item/Delegator.scala
index d169e9ac3..f905be2ad 100644
--- a/src/main/scala/li/cil/oc/common/item/Delegator.scala
+++ b/src/main/scala/li/cil/oc/common/item/Delegator.scala
@@ -33,7 +33,7 @@ import scala.collection.mutable
object Delegator {
def subItem(stack: ItemStack) =
- if (stack != null) stack.getItem match {
+ if (!stack.isEmpty) stack.getItem match {
case delegator: Delegator => delegator.subItem(stack.getItemDamage)
case _ => None
}
diff --git a/src/main/scala/li/cil/oc/common/item/Nanomachines.scala b/src/main/scala/li/cil/oc/common/item/Nanomachines.scala
index ee5a98ce5..d45ab8b4b 100644
--- a/src/main/scala/li/cil/oc/common/item/Nanomachines.scala
+++ b/src/main/scala/li/cil/oc/common/item/Nanomachines.scala
@@ -64,7 +64,7 @@ class Nanomachines(val parent: Delegator) extends traits.Delegate {
}
stack.shrink(1)
if (stack.getCount > 0) stack
- else null
+ else ItemStack.EMPTY
case _ => stack
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/Present.scala b/src/main/scala/li/cil/oc/common/item/Present.scala
index f72d1cfa3..fd333ea59 100644
--- a/src/main/scala/li/cil/oc/common/item/Present.scala
+++ b/src/main/scala/li/cil/oc/common/item/Present.scala
@@ -133,5 +133,5 @@ object Present {
private val rng = new Random()
- def nextPresent() = Presents(rng.nextInt(Presents.length)).copy()
+ def nextPresent(): ItemStack = Presents(rng.nextInt(Presents.length)).copy()
}
diff --git a/src/main/scala/li/cil/oc/common/item/Server.scala b/src/main/scala/li/cil/oc/common/item/Server.scala
index 151e1a0b5..fb6e20ecd 100644
--- a/src/main/scala/li/cil/oc/common/item/Server.scala
+++ b/src/main/scala/li/cil/oc/common/item/Server.scala
@@ -9,6 +9,7 @@ import li.cil.oc.common.inventory.ServerInventory
import li.cil.oc.util.Rarity
import li.cil.oc.util.Tooltip
import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.util.ActionResult
import net.minecraft.util.EnumActionResult
@@ -18,16 +19,16 @@ import net.minecraft.world.World
import scala.collection.mutable
class Server(val parent: Delegator, val tier: Int) extends traits.Delegate {
- override val unlocalizedName = super.unlocalizedName + tier
+ override val unlocalizedName: String = super.unlocalizedName + tier
override protected def tooltipName = Option(super.unlocalizedName)
- override def rarity(stack: ItemStack) = Rarity.byTier(tier)
+ override def rarity(stack: ItemStack): EnumRarity = Rarity.byTier(tier)
override def maxStackSize = 1
private object HelperInventory extends ServerInventory {
- var container: ItemStack = null
+ var container = ItemStack.EMPTY
}
override protected def tooltipExtended(stack: ItemStack, tooltip: util.List[String]) {
@@ -35,15 +36,15 @@ class Server(val parent: Delegator, val tier: Int) extends traits.Delegate {
if (KeyBindings.showExtendedTooltips) {
HelperInventory.container = stack
HelperInventory.reinitialize()
- val items = mutable.Map.empty[String, Int]
- for (item <- (0 until HelperInventory.getSizeInventory).map(HelperInventory.getStackInSlot) if item != null) {
- val itemName = item.getDisplayName
- items += itemName -> (if (items.contains(itemName)) items(itemName) + 1 else 1)
+ val stacks = mutable.Map.empty[String, Int]
+ for (aStack <- (0 until HelperInventory.getSizeInventory).map(HelperInventory.getStackInSlot) if !aStack.isEmpty) {
+ val displayName = aStack.getDisplayName
+ stacks += displayName -> (if (stacks.contains(displayName)) stacks(displayName) + 1 else 1)
}
- if (items.nonEmpty) {
+ if (stacks.nonEmpty) {
tooltip.addAll(Tooltip.get("Server.Components"))
- for (itemName <- items.keys.toArray.sorted) {
- tooltip.add("- " + items(itemName) + "x " + itemName)
+ for (itemName <- stacks.keys.toArray.sorted) {
+ tooltip.add("- " + stacks(itemName) + "x " + itemName)
}
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/Tablet.scala b/src/main/scala/li/cil/oc/common/item/Tablet.scala
index afe0e5c33..5f7bcb9b3 100644
--- a/src/main/scala/li/cil/oc/common/item/Tablet.scala
+++ b/src/main/scala/li/cil/oc/common/item/Tablet.scala
@@ -6,9 +6,11 @@ import java.util.UUID
import java.util.concurrent.Callable
import java.util.concurrent.TimeUnit
+import com.google.common.cache
import com.google.common.cache.CacheBuilder
import com.google.common.cache.RemovalListener
import com.google.common.cache.RemovalNotification
+import com.google.common.collect.ImmutableMap
import li.cil.oc.Constants
import li.cil.oc.Localization
import li.cil.oc.OpenComputers
@@ -19,6 +21,7 @@ import li.cil.oc.api.Machine
import li.cil.oc.api.driver.item.Chargeable
import li.cil.oc.api.driver.item.Container
import li.cil.oc.api.internal
+import li.cil.oc.api.machine
import li.cil.oc.api.machine.MachineHost
import li.cil.oc.api.network.Connector
import li.cil.oc.api.network.Message
@@ -43,6 +46,7 @@ import net.minecraft.client.renderer.block.model.ModelResourceLocation
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.server.integrated.IntegratedServer
@@ -77,20 +81,20 @@ class Tablet(val parent: Delegator) extends traits.Delegate with CustomModel wit
if (components.length > 1) {
tooltip.addAll(Tooltip.get("Server.Components"))
components.collect {
- case Some(component) => tooltip.add("- " + component.getDisplayName)
+ case component if !component.isEmpty => tooltip.add("- " + component.getDisplayName)
}
}
}
}
- override def rarity(stack: ItemStack) = {
+ override def rarity(stack: ItemStack): EnumRarity = {
val data = new TabletData(stack)
Rarity.byTier(data.tier)
}
override def showDurabilityBar(stack: ItemStack) = true
- override def durability(stack: ItemStack) = {
+ override def durability(stack: ItemStack): Double = {
if (stack.hasTagCompound) {
val data = new TabletData()
data.load(stack.getTagCompound)
@@ -143,7 +147,7 @@ class Tablet(val parent: Delegator) extends traits.Delegate with CustomModel wit
// ----------------------------------------------------------------------- //
- override def update(stack: ItemStack, world: World, entity: Entity, slot: Int, selected: Boolean) =
+ override def update(stack: ItemStack, world: World, entity: Entity, slot: Int, selected: Boolean): Unit =
entity match {
case player: EntityPlayer =>
// Play an audio cue to let players know when they finished analyzing a block.
@@ -229,13 +233,13 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
// Remember our *original* world, so we know which tablets to clear on dimension
// changes of players holding tablets - since the player entity instance may be
// kept the same and components are not required to properly handle world changes.
- val world = player.world
+ val world: World = player.world
- lazy val machine = if (world.isRemote) null else Machine.create(this)
+ lazy val machine: api.machine.Machine = if (world.isRemote) null else Machine.create(this)
val data = new TabletData()
- val tablet = if (world.isRemote) null else new component.Tablet(this)
+ val tablet: component.Tablet = if (world.isRemote) null else new component.Tablet(this)
var autoSave = true
@@ -243,16 +247,16 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
private var lastRunning = false
- def isCreative = data.tier == Tier.Four
+ def isCreative: Boolean = data.tier == Tier.Four
- def items = data.items
+ def items: Array[ItemStack] = data.items
- override def facing = RotationHelper.fromYaw(player.rotationYaw)
+ override def facing: EnumFacing = RotationHelper.fromYaw(player.rotationYaw)
- override def toLocal(value: EnumFacing) =
+ override def toLocal(value: EnumFacing): EnumFacing =
RotationHelper.toLocal(EnumFacing.NORTH, facing, value)
- override def toGlobal(value: EnumFacing) =
+ override def toGlobal(value: EnumFacing): EnumFacing =
RotationHelper.toGlobal(EnumFacing.NORTH, facing, value)
def readFromNBT() {
@@ -332,11 +336,11 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
override def onMessage(message: Message) {}
- override def host = this
+ override def host: TabletWrapper = this
- override def getSizeInventory = items.length
+ override def getSizeInventory: Int = items.length
- override def isItemValidForSlot(slot: Int, stack: ItemStack) = slot == getSizeInventory - 1 && (Option(Driver.driverFor(stack, getClass)) match {
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean = slot == getSizeInventory - 1 && (Option(Driver.driverFor(stack, getClass)) match {
case Some(driver) =>
// Same special cases, similar as in robot, but allow keyboards,
// because clip-on keyboards kinda seem to make sense, I guess.
@@ -346,7 +350,7 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
case _ => false
})
- override def isUsableByPlayer(player: EntityPlayer) = machine != null && machine.canInteract(player.getName)
+ override def isUsableByPlayer(player: EntityPlayer): Boolean = machine != null && machine.canInteract(player.getName)
override def markDirty(): Unit = {
data.save(stack)
@@ -355,41 +359,43 @@ class TabletWrapper(var stack: ItemStack, var player: EntityPlayer) extends Comp
// ----------------------------------------------------------------------- //
- override def xPosition = player.posX
+ override def xPosition: Double = player.posX
- override def yPosition = player.posY + player.getEyeHeight
+ override def yPosition: Double = player.posY + player.getEyeHeight
- override def zPosition = player.posZ
+ override def zPosition: Double = player.posZ
override def markChanged() {}
// ----------------------------------------------------------------------- //
- def containerSlotType = data.container.fold(Slot.None)(stack =>
- Option(Driver.driverFor(stack, getClass)) match {
+ def containerSlotType: String =
+ if (data.container.isEmpty) Slot.None
+ else Option(Driver.driverFor(data.container, getClass)) match {
case Some(driver: Container) => driver.providedSlot(stack)
case _ => Slot.None
- })
+ }
- def containerSlotTier = data.container.fold(Tier.None)(stack =>
- Option(Driver.driverFor(stack, getClass)) match {
+ def containerSlotTier: Int =
+ if (data.container.isEmpty) Tier.None
+ else Option(Driver.driverFor(stack, getClass)) match {
case Some(driver: Container) => driver.providedTier(stack)
case _ => Tier.None
- })
+ }
override def internalComponents(): Iterable[ItemStack] = (0 until getSizeInventory).collect {
- case slot if getStackInSlot(slot) != null && isComponentSlot(slot, getStackInSlot(slot)) => getStackInSlot(slot)
+ case slot if !getStackInSlot(slot).isEmpty && isComponentSlot(slot, getStackInSlot(slot)) => getStackInSlot(slot)
}
- override def componentSlot(address: String) = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
+ override def componentSlot(address: String): Int = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
- override def onMachineConnect(node: Node) = onConnect(node)
+ override def onMachineConnect(node: Node): Unit = onConnect(node)
- override def onMachineDisconnect(node: Node) = onDisconnect(node)
+ override def onMachineDisconnect(node: Node): Unit = onDisconnect(node)
// ----------------------------------------------------------------------- //
- override def node = Option(machine).fold(null: Node)(_.node)
+ override def node: Node = Option(machine).fold(null: Node)(_.node)
// ----------------------------------------------------------------------- //
@@ -442,7 +448,7 @@ object Tablet {
// with storing context information for analyzing a block in the singleton.
var currentlyAnalyzing: Option[(BlockPosition, EnumFacing, Float, Float, Float)] = None
- def getId(stack: ItemStack) = {
+ def getId(stack: ItemStack): String = {
if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound())
@@ -453,7 +459,7 @@ object Tablet {
stack.getTagCompound.getString(Settings.namespace + "tablet")
}
- def get(stack: ItemStack, holder: EntityPlayer) = {
+ def get(stack: ItemStack, holder: EntityPlayer): TabletWrapper = {
if (holder.world.isRemote) Client.get(stack, holder)
else Server.get(stack, holder)
}
@@ -488,7 +494,7 @@ object Tablet {
}
abstract class Cache extends Callable[TabletWrapper] with RemovalListener[String, TabletWrapper] {
- val cache = com.google.common.cache.CacheBuilder.newBuilder().
+ val cache: com.google.common.cache.Cache[String, TabletWrapper] = com.google.common.cache.CacheBuilder.newBuilder().
expireAfterAccess(timeout, TimeUnit.SECONDS).
removalListener(this).
asInstanceOf[CacheBuilder[String, TabletWrapper]].
@@ -501,7 +507,7 @@ object Tablet {
private var currentHolder: EntityPlayer = _
- def get(stack: ItemStack, holder: EntityPlayer) = {
+ def get(stack: ItemStack, holder: EntityPlayer): TabletWrapper = {
val id = getId(stack)
cache.synchronized {
currentStack = stack
@@ -524,7 +530,7 @@ object Tablet {
}
}
- def call = {
+ def call: TabletWrapper = {
new TabletWrapper(currentStack, currentHolder)
}
@@ -553,7 +559,7 @@ object Tablet {
cache.synchronized(cache.cleanUp())
}
- def keepAlive() = {
+ def keepAlive(): ImmutableMap[String, TabletWrapper] = {
// Just touching to update last access time.
cache.getAllPresent(asJavaIterable(cache.asMap.keys))
}
@@ -562,7 +568,7 @@ object Tablet {
object Client extends Cache {
override protected def timeout = 5
- def get(stack: ItemStack) = {
+ def get(stack: ItemStack): Option[TabletWrapper] = {
if (stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "tablet")) {
val id = stack.getTagCompound.getString(Settings.namespace + "tablet")
cache.synchronized(Option(cache.getIfPresent(id)))
diff --git a/src/main/scala/li/cil/oc/common/item/data/ItemData.scala b/src/main/scala/li/cil/oc/common/item/data/ItemData.scala
index 18bff6614..4fa2a58f5 100644
--- a/src/main/scala/li/cil/oc/common/item/data/ItemData.scala
+++ b/src/main/scala/li/cil/oc/common/item/data/ItemData.scala
@@ -22,7 +22,7 @@ abstract class ItemData(val itemName: String) extends Persistable {
}
def createItemStack() = {
- if (itemName == null) null
+ if (itemName == null) ItemStack.EMPTY
else {
val stack = api.Items.get(itemName).createItemStack(1)
save(stack)
diff --git a/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala b/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala
index 8607df66d..9d1f47036 100644
--- a/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala
+++ b/src/main/scala/li/cil/oc/common/item/data/MicrocontrollerData.scala
@@ -17,7 +17,7 @@ class MicrocontrollerData(itemName: String = Constants.BlockName.Microcontroller
var tier = Tier.One
- var components = Array[ItemStack](null)
+ var components: Array[ItemStack] = Array[ItemStack](ItemStack.EMPTY)
var storedEnergy = 0
@@ -28,23 +28,23 @@ class MicrocontrollerData(itemName: String = Constants.BlockName.Microcontroller
override def load(nbt: NBTTagCompound) {
tier = nbt.getByte(TierTag)
components = nbt.getTagList(ComponentsTag, NBT.TAG_COMPOUND).
- toArray[NBTTagCompound].map(new ItemStack(_)).filter(_ != null)
+ toArray[NBTTagCompound].map(new ItemStack(_)).filter(!_.isEmpty)
storedEnergy = nbt.getInteger(StoredEnergyTag)
// Reserve slot for EEPROM if necessary, avoids having to resize the
// components array in the MCU tile entity, which isn't possible currently.
if (!components.exists(stack => api.Items.get(stack) == api.Items.get(Constants.ItemName.EEPROM))) {
- components :+= null
+ components :+= ItemStack.EMPTY
}
}
override def save(nbt: NBTTagCompound) {
nbt.setByte(TierTag, tier.toByte)
- nbt.setNewTagList(ComponentsTag, components.filter(_ != null).toIterable)
+ nbt.setNewTagList(ComponentsTag, components.filter(!_.isEmpty).toIterable)
nbt.setInteger(StoredEnergyTag, storedEnergy)
}
- def copyItemStack() = {
+ def copyItemStack(): ItemStack = {
val stack = createItemStack()
val newInfo = new MicrocontrollerData(stack)
newInfo.save(stack)
diff --git a/src/main/scala/li/cil/oc/common/item/data/TabletData.scala b/src/main/scala/li/cil/oc/common/item/data/TabletData.scala
index 96087603f..7830d0a43 100644
--- a/src/main/scala/li/cil/oc/common/item/data/TabletData.scala
+++ b/src/main/scala/li/cil/oc/common/item/data/TabletData.scala
@@ -14,12 +14,12 @@ class TabletData extends ItemData(Constants.ItemName.Tablet) {
load(stack)
}
- var items = Array.fill[Option[ItemStack]](32)(None)
+ var items = Array.fill[ItemStack](32)(ItemStack.EMPTY)
var isRunning = false
var energy = 0.0
var maxEnergy = 0.0
var tier = Tier.One
- var container: Option[ItemStack] = None
+ var container = ItemStack.EMPTY
private final val ItemsTag = Settings.namespace + "items"
private final val SlotTag = "slot"
@@ -34,7 +34,7 @@ class TabletData extends ItemData(Constants.ItemName.Tablet) {
nbt.getTagList(ItemsTag, NBT.TAG_COMPOUND).foreach((slotNbt: NBTTagCompound) => {
val slot = slotNbt.getByte(SlotTag)
if (slot >= 0 && slot < items.length) {
- items(slot) = Option(new ItemStack(slotNbt.getCompoundTag(ItemTag)))
+ items(slot) = new ItemStack(slotNbt.getCompoundTag(ItemTag))
}
})
isRunning = nbt.getBoolean(IsRunningTag)
@@ -42,14 +42,14 @@ class TabletData extends ItemData(Constants.ItemName.Tablet) {
maxEnergy = nbt.getDouble(MaxEnergyTag)
tier = nbt.getInteger(TierTag)
if (nbt.hasKey(ContainerTag)) {
- container = Option(new ItemStack(nbt.getCompoundTag(ContainerTag)))
+ container = new ItemStack(nbt.getCompoundTag(ContainerTag))
}
}
override def save(nbt: NBTTagCompound) {
nbt.setNewTagList(ItemsTag,
items.zipWithIndex collect {
- case (Some(stack), slot) => (stack, slot)
+ case (stack, slot) if !stack.isEmpty => (stack, slot)
} map {
case (stack, slot) =>
val slotNbt = new NBTTagCompound()
@@ -60,6 +60,6 @@ class TabletData extends ItemData(Constants.ItemName.Tablet) {
nbt.setDouble(EnergyTag, energy)
nbt.setDouble(MaxEnergyTag, maxEnergy)
nbt.setInteger(TierTag, tier)
- container.foreach(stack => nbt.setNewCompoundTag(ContainerTag, stack.writeToNBT))
+ if (!container.isEmpty) nbt.setNewCompoundTag(ContainerTag, container.writeToNBT)
}
}
diff --git a/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala b/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala
index ca96b6ea7..4eac02a82 100644
--- a/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala
+++ b/src/main/scala/li/cil/oc/common/item/traits/Delegate.scala
@@ -1,7 +1,6 @@
package li.cil.oc.common.item.traits
import java.util
-import javax.annotation.Nonnull
import li.cil.oc.Localization
import li.cil.oc.Settings
@@ -16,6 +15,7 @@ import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumAction
+import net.minecraft.item.EnumRarity
import net.minecraft.item.ItemStack
import net.minecraft.util.ActionResult
import net.minecraft.util.EnumActionResult
@@ -29,7 +29,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
trait Delegate {
def parent: Delegator
- def unlocalizedName = getClass.getSimpleName
+ def unlocalizedName: String = getClass.getSimpleName
protected def tooltipName = Option(unlocalizedName)
@@ -37,7 +37,7 @@ trait Delegate {
var showInItemList = true
- val itemId = parent.add(this)
+ val itemId: Int = parent.add(this)
def maxStackSize = 64
@@ -65,9 +65,9 @@ trait Delegate {
// ----------------------------------------------------------------------- //
- def rarity(stack: ItemStack) = Rarity.byTier(tierFromDriver(stack))
+ def rarity(stack: ItemStack): EnumRarity = Rarity.byTier(tierFromDriver(stack))
- protected def tierFromDriver(stack: ItemStack) =
+ protected def tierFromDriver(stack: ItemStack): Int =
api.Driver.driverFor(stack) match {
case driver: api.driver.Item => driver.tier(stack)
case _ => 0
diff --git a/src/main/scala/li/cil/oc/common/item/traits/SimpleItem.scala b/src/main/scala/li/cil/oc/common/item/traits/SimpleItem.scala
index 655eff9db..58ef3d7ea 100644
--- a/src/main/scala/li/cil/oc/common/item/traits/SimpleItem.scala
+++ b/src/main/scala/li/cil/oc/common/item/traits/SimpleItem.scala
@@ -24,7 +24,7 @@ trait SimpleItem extends Item {
override def isBookEnchantable(stack: ItemStack, book: ItemStack) = false
- override def doesSneakBypassUse(stack: ItemStack, world: IBlockAccess, pos: BlockPos, player: EntityPlayer) = {
+ override def doesSneakBypassUse(stack: ItemStack, world: IBlockAccess, pos: BlockPos, player: EntityPlayer): Boolean = {
world.getTileEntity(pos) match {
case drive: tileentity.DiskDrive => true
case _ => super.doesSneakBypassUse(stack, world, pos, player)
diff --git a/src/main/scala/li/cil/oc/common/nanomachines/Nanomachines.scala b/src/main/scala/li/cil/oc/common/nanomachines/Nanomachines.scala
index bfd68536c..c166b696a 100644
--- a/src/main/scala/li/cil/oc/common/nanomachines/Nanomachines.scala
+++ b/src/main/scala/li/cil/oc/common/nanomachines/Nanomachines.scala
@@ -14,10 +14,10 @@ import scala.collection.mutable
object Nanomachines extends api.detail.NanomachinesAPI {
val providers = mutable.Set.empty[BehaviorProvider]
- val serverControllers = mutable.WeakHashMap.empty[EntityPlayer, ControllerImpl]
- val clientControllers = mutable.WeakHashMap.empty[EntityPlayer, ControllerImpl]
+ val serverControllers: mutable.WeakHashMap[EntityPlayer, ControllerImpl] = mutable.WeakHashMap.empty[EntityPlayer, ControllerImpl]
+ val clientControllers: mutable.WeakHashMap[EntityPlayer, ControllerImpl] = mutable.WeakHashMap.empty[EntityPlayer, ControllerImpl]
- def controllers(player: EntityPlayer) = if (player.getEntityWorld.isRemote) clientControllers else serverControllers
+ def controllers(player: EntityPlayer): mutable.WeakHashMap[EntityPlayer, ControllerImpl] = if (player.getEntityWorld.isRemote) clientControllers else serverControllers
override def addProvider(provider: BehaviorProvider): Unit = providers += provider
@@ -28,11 +28,11 @@ object Nanomachines extends api.detail.NanomachinesAPI {
else null
}
- def hasController(player: EntityPlayer) = {
+ def hasController(player: EntityPlayer): Boolean = {
PlayerUtils.persistedData(player).getBoolean(Settings.namespace + "hasNanomachines")
}
- def installController(player: EntityPlayer) = {
+ def installController(player: EntityPlayer): Controller = {
if (!hasController(player)) {
PlayerUtils.persistedData(player).setBoolean(Settings.namespace + "hasNanomachines", true)
}
diff --git a/src/main/scala/li/cil/oc/common/nanomachines/provider/MagnetProvider.scala b/src/main/scala/li/cil/oc/common/nanomachines/provider/MagnetProvider.scala
index 116c40943..0dbfac3bb 100644
--- a/src/main/scala/li/cil/oc/common/nanomachines/provider/MagnetProvider.scala
+++ b/src/main/scala/li/cil/oc/common/nanomachines/provider/MagnetProvider.scala
@@ -24,7 +24,7 @@ object MagnetProvider extends ScalaProvider("9324d5ec-71f1-41c2-b51c-406e527668f
val actualRange = Settings.get.nanomachineMagnetRange * api.Nanomachines.getController(player).getInputCount(this)
val items = world.getEntitiesWithinAABB(classOf[EntityItem], player.getEntityBoundingBox.expand(actualRange, actualRange, actualRange))
items.collect {
- case item: EntityItem if !item.cannotPickup && item.getEntityItem != null && player.inventory.mainInventory.exists(stack => stack == null || stack.getCount < stack.getMaxStackSize && stack.isItemEqual(item.getEntityItem)) =>
+ case item: EntityItem if !item.cannotPickup && !item.getEntityItem.isEmpty && player.inventory.mainInventory.exists(stack => stack.isEmpty || stack.getCount < stack.getMaxStackSize && stack.isItemEqual(item.getEntityItem)) =>
val dx = player.posX - item.posX
val dy = player.posY - item.posY
val dz = player.posZ - item.posZ
diff --git a/src/main/scala/li/cil/oc/common/recipe/ColorizeRecipe.scala b/src/main/scala/li/cil/oc/common/recipe/ColorizeRecipe.scala
index 202394a86..9c0327e10 100644
--- a/src/main/scala/li/cil/oc/common/recipe/ColorizeRecipe.scala
+++ b/src/main/scala/li/cil/oc/common/recipe/ColorizeRecipe.scala
@@ -16,8 +16,8 @@ class ColorizeRecipe(target: Item, source: Array[Item] = null) extends Container
def this(target: Block, source: Array[Item]) = this(Item.getItemFromBlock(target), source)
def this(target: Block) = this(target, null)
- val targetItem = target
- val sourceItems = if (source != null) source else Array(targetItem)
+ val targetItem: Item = target
+ val sourceItems: Array[Item] = if (source != null) source else Array(targetItem)
override def matches(crafting: InventoryCrafting, world: World): Boolean = {
val stacks = (0 until crafting.getSizeInventory).flatMap(i => Option(crafting.getStackInSlot(i)))
@@ -40,7 +40,7 @@ class ColorizeRecipe(target: Item, source: Array[Item] = null) extends Container
} else {
val dye = Color.findDye(stack)
if (dye.isEmpty)
- return null
+ return ItemStack.EMPTY
val itemColor = EntitySheep.getDyeRgb(Color.byOreName(dye.get))
val red = (itemColor(0) * 255.0F).toInt
@@ -54,7 +54,7 @@ class ColorizeRecipe(target: Item, source: Array[Item] = null) extends Container
}
}
- if (targetStack == null) return null
+ if (targetStack.isEmpty) return ItemStack.EMPTY
if (targetItem == targetStack.getItem) {
if (ItemColorizer.hasColor(targetStack)) {
diff --git a/src/main/scala/li/cil/oc/common/recipe/DecolorizeRecipe.scala b/src/main/scala/li/cil/oc/common/recipe/DecolorizeRecipe.scala
index 919006744..760bde638 100644
--- a/src/main/scala/li/cil/oc/common/recipe/DecolorizeRecipe.scala
+++ b/src/main/scala/li/cil/oc/common/recipe/DecolorizeRecipe.scala
@@ -31,11 +31,11 @@ class DecolorizeRecipe(target: Item) extends ContainerItemAwareRecipe {
targetStack = stack.copy()
targetStack.setCount(1)
} else if (stack.getItem != Items.WATER_BUCKET) {
- return null
+ return ItemStack.EMPTY
}
}
- if (targetStack == null) return null
+ if (targetStack.isEmpty) return ItemStack.EMPTY
ItemColorizer.removeColor(targetStack)
targetStack
diff --git a/src/main/scala/li/cil/oc/common/recipe/ExtendedRecipe.scala b/src/main/scala/li/cil/oc/common/recipe/ExtendedRecipe.scala
index 7957a791c..4c02be80b 100644
--- a/src/main/scala/li/cil/oc/common/recipe/ExtendedRecipe.scala
+++ b/src/main/scala/li/cil/oc/common/recipe/ExtendedRecipe.scala
@@ -11,7 +11,6 @@ import li.cil.oc.common.item.data.MicrocontrollerData
import li.cil.oc.common.item.data.PrintData
import li.cil.oc.common.item.data.RobotData
import li.cil.oc.common.item.data.TabletData
-import li.cil.oc.integration.Mods
import li.cil.oc.util.Color
import li.cil.oc.util.ExtendedNBT._
import li.cil.oc.util.SideTracker
@@ -129,21 +128,21 @@ object ExtendedRecipe {
if (beaconBlocks.exists(_.isItemEqual(stack))) {
if (data.isBeaconBase) {
// Crafting wouldn't change anything, prevent accidental resource loss.
- return null
+ return ItemStack.EMPTY
}
data.isBeaconBase = true
}
if (glowstoneDust.isItemEqual(stack)) {
if (data.lightLevel == 15) {
// Crafting wouldn't change anything, prevent accidental resource loss.
- return null
+ return ItemStack.EMPTY
}
data.lightLevel = math.min(15, data.lightLevel + 1)
}
if (glowstone.isItemEqual(stack)) {
if (data.lightLevel == 15) {
// Crafting wouldn't change anything, prevent accidental resource loss.
- return null
+ return ItemStack.EMPTY
}
data.lightLevel = math.min(15, data.lightLevel + 4)
}
@@ -179,7 +178,7 @@ object ExtendedRecipe {
craftedStack
}
- private def getItems(inventory: InventoryCrafting) = (0 until inventory.getSizeInventory).map(inventory.getStackInSlot).filter(_ != null)
+ private def getItems(inventory: InventoryCrafting) = (0 until inventory.getSizeInventory).map(inventory.getStackInSlot).filter(!_.isEmpty)
private def recraft(craftedStack: ItemStack, inventory: InventoryCrafting, descriptor: ItemInfo, dataFactory: (ItemStack) => ItemDataWrapper) {
if (api.Items.get(craftedStack) == descriptor) {
@@ -216,40 +215,40 @@ object ExtendedRecipe {
private class MCUDataWrapper(val stack: ItemStack) extends ItemDataWrapper {
val data = new MicrocontrollerData(stack)
- override def components = data.components
+ override def components: Array[ItemStack] = data.components
- override def components_=(value: Array[ItemStack]) = data.components = value
+ override def components_=(value: Array[ItemStack]): Unit = data.components = value
- override def save(stack: ItemStack) = data.save(stack)
+ override def save(stack: ItemStack): Unit = data.save(stack)
}
private class DroneDataWrapper(val stack: ItemStack) extends ItemDataWrapper {
val data = new DroneData(stack)
- override def components = data.components
+ override def components: Array[ItemStack] = data.components
- override def components_=(value: Array[ItemStack]) = data.components = value
+ override def components_=(value: Array[ItemStack]): Unit = data.components = value
- override def save(stack: ItemStack) = data.save(stack)
+ override def save(stack: ItemStack): Unit = data.save(stack)
}
private class RobotDataWrapper(val stack: ItemStack) extends ItemDataWrapper {
val data = new RobotData(stack)
- override def components = data.components
+ override def components: Array[ItemStack] = data.components
- override def components_=(value: Array[ItemStack]) = data.components = value
+ override def components_=(value: Array[ItemStack]): Unit = data.components = value
- override def save(stack: ItemStack) = data.save(stack)
+ override def save(stack: ItemStack): Unit = data.save(stack)
}
private class TabletDataWrapper(val stack: ItemStack) extends ItemDataWrapper {
val data = new TabletData(stack)
- var components = data.items.collect { case Some(item) => item }
+ var components: Array[ItemStack] = data.items.filter(!_.isEmpty)
- override def save(stack: ItemStack) = {
- data.items = components.map(stack => Option(stack))
+ override def save(stack: ItemStack): Unit = {
+ data.items = components.clone()
data.save(stack)
}
}
diff --git a/src/main/scala/li/cil/oc/common/recipe/LootDiskCyclingRecipe.scala b/src/main/scala/li/cil/oc/common/recipe/LootDiskCyclingRecipe.scala
index 513ecf8e3..1793944a8 100644
--- a/src/main/scala/li/cil/oc/common/recipe/LootDiskCyclingRecipe.scala
+++ b/src/main/scala/li/cil/oc/common/recipe/LootDiskCyclingRecipe.scala
@@ -9,6 +9,8 @@ import net.minecraft.item.crafting.IRecipe
import net.minecraft.util.NonNullList
import net.minecraft.world.World
+import scala.collection.immutable
+
class LootDiskCyclingRecipe extends IRecipe {
override def matches(crafting: InventoryCrafting, world: World): Boolean = {
val stacks = collectStacks(crafting).toArray
@@ -23,17 +25,17 @@ class LootDiskCyclingRecipe extends IRecipe {
val oldIndex = lootDiskStacks.indexWhere(s => getLootFactoryName(s) == lootFactoryName)
val newIndex = (oldIndex + 1) % lootDiskStacks.length
lootDiskStacks(newIndex).copy()
- case _ => null
+ case _ => ItemStack.EMPTY
}
}
- def getLootFactoryName(stack: ItemStack) = stack.getTagCompound.getString(Settings.namespace + "lootFactory")
+ def getLootFactoryName(stack: ItemStack): String = stack.getTagCompound.getString(Settings.namespace + "lootFactory")
- def collectStacks(crafting: InventoryCrafting) = (0 until crafting.getSizeInventory).flatMap(i => Option(crafting.getStackInSlot(i)))
+ def collectStacks(crafting: InventoryCrafting): immutable.IndexedSeq[ItemStack] = (0 until crafting.getSizeInventory).flatMap(i => Option(crafting.getStackInSlot(i)))
override def getRecipeSize: Int = 2
- override def getRecipeOutput: ItemStack = null
+ override def getRecipeOutput: ItemStack = ItemStack.EMPTY
override def getRemainingItems(crafting: InventoryCrafting): NonNullList[ItemStack] = {
val result = NonNullList.withSize[ItemStack](crafting.getSizeInventory, ItemStack.EMPTY)
diff --git a/src/main/scala/li/cil/oc/common/recipe/Recipes.scala b/src/main/scala/li/cil/oc/common/recipe/Recipes.scala
index 37d79ac18..b42096677 100644
--- a/src/main/scala/li/cil/oc/common/recipe/Recipes.scala
+++ b/src/main/scala/li/cil/oc/common/recipe/Recipes.scala
@@ -34,16 +34,16 @@ import scala.collection.convert.WrapAsScala._
import scala.collection.mutable
object Recipes {
- val list = mutable.LinkedHashMap.empty[ItemStack, String]
- val oreDictEntries = mutable.LinkedHashMap.empty[String, ItemStack]
+ val list: mutable.LinkedHashMap[ItemStack, String] = mutable.LinkedHashMap.empty[ItemStack, String]
+ val oreDictEntries: mutable.LinkedHashMap[String, ItemStack] = mutable.LinkedHashMap.empty[String, ItemStack]
var hadErrors = false
- val recipeHandlers = mutable.LinkedHashMap.empty[String, (ItemStack, Config) => Unit]
+ val recipeHandlers: mutable.LinkedHashMap[String, (ItemStack, Config) => Unit] = mutable.LinkedHashMap.empty[String, (ItemStack, Config) => Unit]
def registerRecipeHandler(name: String, recipe: (ItemStack, Config) => Unit): Unit = {
recipeHandlers += name -> recipe
}
- def addBlock(instance: Block, name: String, oreDict: String*) = {
+ def addBlock(instance: Block, name: String, oreDict: String*): Block = {
Items.registerBlock(instance, name)
addRecipe(new ItemStack(instance), name)
register(instance match {
@@ -53,14 +53,14 @@ object Recipes {
instance
}
- def addSubItem[T <: Delegate](delegate: T, name: String, oreDict: String*) = {
+ def addSubItem[T <: Delegate](delegate: T, name: String, oreDict: String*): T = {
Items.registerItem(delegate, name)
addRecipe(delegate.createItemStack(), name)
register(delegate.createItemStack(), oreDict: _*)
delegate
}
- def addItem(instance: Item, name: String, oreDict: String*) = {
+ def addItem(instance: Item, name: String, oreDict: String*): Item = {
Items.registerItem(instance, name)
addRecipe(new ItemStack(instance), name)
register(instance match {
@@ -70,7 +70,7 @@ object Recipes {
instance
}
- def addSubItem[T <: common.item.traits.Delegate](delegate: T, name: String, registerRecipe: Boolean, oreDict: String*) = {
+ def addSubItem[T <: common.item.traits.Delegate](delegate: T, name: String, registerRecipe: Boolean, oreDict: String*): T = {
Items.registerItem(delegate, name)
if (registerRecipe) {
addRecipe(delegate.createItemStack(), name)
@@ -82,7 +82,7 @@ object Recipes {
delegate
}
- def addStack(stack: ItemStack, name: String, oreDict: String*) = {
+ def addStack(stack: ItemStack, name: String, oreDict: String*): ItemStack = {
Items.registerStack(stack, name)
addRecipe(stack, name)
register(stack, oreDict: _*)
@@ -130,14 +130,14 @@ object Recipes {
setIncluder(new ConfigIncluder with ConfigIncluderFile {
var fallback: ConfigIncluder = _
- override def withFallback(fallback: ConfigIncluder) = {
+ override def withFallback(fallback: ConfigIncluder): ConfigIncluder = {
this.fallback = fallback
this
}
- override def include(context: ConfigIncludeContext, what: String) = fallback.include(context, what)
+ override def include(context: ConfigIncludeContext, what: String): ConfigObject = fallback.include(context, what)
- override def includeFile(context: ConfigIncludeContext, what: File) = {
+ override def includeFile(context: ConfigIncludeContext, what: File): ConfigObject = {
val in = if (what.isAbsolute) new FileReader(what) else new FileReader(new File(userRecipes.getParentFile, what.getPath))
val result = ConfigFactory.parseReader(in, config)
in.close()
@@ -376,7 +376,7 @@ object Recipes {
hadErrors = true
}
- def tryGetCount(recipe: Config) = if (recipe.hasPath("output")) recipe.getInt("output") else 1
+ def tryGetCount(recipe: Config): Int = if (recipe.hasPath("output")) recipe.getInt("output") else 1
def parseIngredient(entry: AnyRef): AnyRef = entry match {
case map: java.util.Map[AnyRef, AnyRef]@unchecked =>
diff --git a/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala b/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala
index 6b6623ac4..dfa7644d8 100644
--- a/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala
+++ b/src/main/scala/li/cil/oc/common/template/AssemblerTemplates.scala
@@ -43,7 +43,7 @@ object AssemblerTemplates {
}
def select(stack: ItemStack) = {
- if (stack != null && templateFilters.forall(IMC.tryInvokeStatic(_, stack)(true)))
+ if (!stack.isEmpty && templateFilters.forall(IMC.tryInvokeStatic(_, stack)(true)))
templates.find(_.select(stack))
else
None
diff --git a/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala b/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala
index cf1220126..1ba28adb2 100644
--- a/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala
+++ b/src/main/scala/li/cil/oc/common/template/DroneTemplate.scala
@@ -34,7 +34,7 @@ object DroneTemplate extends Template {
val data = new DroneData()
data.tier = caseTier(inventory)
data.name = RobotData.randomName
- data.components = items.drop(1).filter(_ != null).toArray
+ data.components = items.drop(1).filter(!_.isEmpty).toArray
data.storedEnergy = Settings.get.bufferDrone.toInt
val stack = api.Items.get(Constants.ItemName.Drone).createItemStack(1)
data.save(stack)
diff --git a/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala b/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala
index 5acb5ba82..333eab517 100644
--- a/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala
+++ b/src/main/scala/li/cil/oc/common/template/MicrocontrollerTemplate.scala
@@ -4,6 +4,7 @@ import li.cil.oc.Constants
import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.internal
+import li.cil.oc.api.internal.Microcontroller
import li.cil.oc.common.Slot
import li.cil.oc.common.Tier
import li.cil.oc.common.item.data.MicrocontrollerData
@@ -17,21 +18,21 @@ object MicrocontrollerTemplate extends Template {
override protected val suggestedComponents = Array(
"BIOS" -> hasComponent("eeprom") _)
- override protected def hostClass = classOf[internal.Microcontroller]
+ override protected def hostClass: Class[Microcontroller] = classOf[internal.Microcontroller]
- def selectTier1(stack: ItemStack) = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier1)
+ def selectTier1(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier1)
- def selectTier2(stack: ItemStack) = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier2)
+ def selectTier2(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseTier2)
- def selectTierCreative(stack: ItemStack) = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseCreative)
+ def selectTierCreative(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.ItemName.MicrocontrollerCaseCreative)
def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory)
- def assemble(inventory: IInventory) = {
+ def assemble(inventory: IInventory): Array[Object] = {
val items = (0 until inventory.getSizeInventory).map(inventory.getStackInSlot)
val data = new MicrocontrollerData()
data.tier = caseTier(inventory)
- data.components = items.drop(1).filter(_ != null).toArray
+ data.components = items.drop(1).filter(!_.isEmpty).toArray
data.storedEnergy = Settings.get.bufferMicrocontroller.toInt
val stack = data.createItemStack()
val energy = Settings.get.microcontrollerBaseCost + complexity(inventory) * Settings.get.microcontrollerComplexityCost
@@ -39,9 +40,9 @@ object MicrocontrollerTemplate extends Template {
Array(stack, Double.box(energy))
}
- def selectDisassembler(stack: ItemStack) = api.Items.get(stack) == api.Items.get(Constants.BlockName.Microcontroller)
+ def selectDisassembler(stack: ItemStack): Boolean = api.Items.get(stack) == api.Items.get(Constants.BlockName.Microcontroller)
- def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = {
+ def disassemble(stack: ItemStack, ingredients: Array[ItemStack]): Array[ItemStack] = {
val info = new MicrocontrollerData(stack)
val itemName = Constants.ItemName.MicrocontrollerCase(info.tier)
@@ -127,10 +128,10 @@ object MicrocontrollerTemplate extends Template {
"li.cil.oc.common.template.MicrocontrollerTemplate.disassemble")
}
- override protected def maxComplexity(inventory: IInventory) =
+ override protected def maxComplexity(inventory: IInventory): Int =
if (caseTier(inventory) == Tier.Two) 5
else if (caseTier(inventory) == Tier.Four) 9001 // Creative
else 4
- override protected def caseTier(inventory: IInventory) = ItemUtils.caseTier(inventory.getStackInSlot(0))
+ override protected def caseTier(inventory: IInventory): Int = ItemUtils.caseTier(inventory.getStackInSlot(0))
}
diff --git a/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala b/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala
index 8428b3481..59ae9f1b7 100644
--- a/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala
+++ b/src/main/scala/li/cil/oc/common/template/RobotTemplate.scala
@@ -33,8 +33,8 @@ object RobotTemplate extends Template {
data.name = RobotData.randomName
data.robotEnergy = Settings.get.bufferRobot.toInt
data.totalEnergy = data.robotEnergy
- data.containers = items.take(3).filter(_ != null).toArray
- data.components = items.drop(3).filter(_ != null).toArray
+ data.containers = items.take(3).filter(!_.isEmpty).toArray
+ data.components = items.drop(3).filter(!_.isEmpty).toArray
val stack = data.createItemStack()
val energy = Settings.get.robotBaseCost + complexity(inventory) * Settings.get.robotComplexityCost
diff --git a/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala b/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala
index 457c89c61..13bd1c04d 100644
--- a/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala
+++ b/src/main/scala/li/cil/oc/common/template/TabletTemplate.scala
@@ -38,11 +38,11 @@ object TabletTemplate extends Template {
def validate(inventory: IInventory): Array[AnyRef] = validateComputer(inventory)
def assemble(inventory: IInventory): Array[AnyRef] = {
- val items = (1 until inventory.getSizeInventory).map(slot => Option(inventory.getStackInSlot(slot)))
+ val items = (1 until inventory.getSizeInventory).map(slot => inventory.getStackInSlot(slot))
val data = new TabletData()
data.tier = ItemUtils.caseTier(inventory.getStackInSlot(0))
- data.container = items.headOption.getOrElse(None)
- data.items = Array(Option(api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1))) ++ items.drop(if (data.tier == Tier.One) 0 else 1).filter(_.isDefined)
+ data.container = items.headOption.getOrElse(ItemStack.EMPTY)
+ data.items = Array(api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1)) ++ items.drop(if (data.tier == Tier.One) 0 else 1).filter(!_.isEmpty)
data.energy = Settings.get.bufferTablet
data.maxEnergy = data.energy
val stack = api.Items.get(Constants.ItemName.Tablet).createItemStack(1)
@@ -57,9 +57,7 @@ object TabletTemplate extends Template {
def disassemble(stack: ItemStack, ingredients: Array[ItemStack]) = {
val info = new TabletData(stack)
val itemName = Constants.ItemName.TabletCase(info.tier)
- (Array(api.Items.get(itemName).createItemStack(1), info.container.orNull) ++ info.items.collect {
- case Some(item) => item
- }.drop(1) /* Screen */).filter(_ != null)
+ (Array(api.Items.get(itemName).createItemStack(1), info.container) ++ info.items.filter(!_.isEmpty).drop(1) /* Screen */).filter(!_.isEmpty)
}
def register() {
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala b/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala
index 27a7053d3..cc8d2f637 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala
@@ -84,7 +84,7 @@ class Assembler extends traits.Environment with traits.PowerAcceptor with traits
case Some(template) if !isAssembling && output.isEmpty && template.validate(this)._1 =>
for (slot <- 0 until getSizeInventory) {
val stack = getStackInSlot(slot)
- if (stack != null && !isItemValidForSlot(slot, stack)) return false
+ if (!stack.isEmpty && !isItemValidForSlot(slot, stack)) return false
}
val (stack, energy) = template.assemble(this)
output = Some(stack)
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Charger.scala b/src/main/scala/li/cil/oc/common/tileentity/Charger.scala
index 8f6918354..6842931e8 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Charger.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Charger.scala
@@ -103,7 +103,7 @@ class Charger extends traits.Environment with traits.PowerAcceptor with traits.R
val charge = Settings.get.chargeRateTablet * chargeSpeed * Settings.get.tickFrequency
canCharge ||= charge > 0 && node.globalBuffer >= charge * 0.5
if (canCharge) {
- (0 until getSizeInventory).map(getStackInSlot).foreach(stack => if (stack != null) {
+ (0 until getSizeInventory).map(getStackInSlot).foreach(stack => if (!stack.isEmpty) {
val offered = charge + node.changeBuffer(-charge)
val surplus = ItemCharge.charge(stack, offered)
node.changeBuffer(surplus)
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala b/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala
index 31addcd0c..3098bcd60 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala
@@ -8,7 +8,9 @@ import li.cil.oc.api.driver.DeviceInfo.DeviceClass
import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.driver.DeviceInfo
+import li.cil.oc.api.network.Connector
import li.cil.oc.api.network.Visibility
+import li.cil.oc.api.util.StateAware
import li.cil.oc.common.template.DisassemblerTemplates
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import li.cil.oc.util.BlockPosition
@@ -25,15 +27,16 @@ import net.minecraftforge.fml.relauncher.SideOnly
import scala.collection.convert.WrapAsJava._
import scala.collection.mutable
+import scala.collection.mutable.ArrayBuffer
class Disassembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.StateAware with traits.PlayerInputAware with traits.Tickable with DeviceInfo {
- val node = api.Network.newNode(this, Visibility.None).
+ val node: Connector = api.Network.newNode(this, Visibility.None).
withConnector(Settings.get.bufferConverter).
create()
var isActive = false
- val queue = mutable.ArrayBuffer.empty[ItemStack]
+ val queue: ArrayBuffer[ItemStack] = mutable.ArrayBuffer.empty[ItemStack]
var totalRequiredEnergy = 0.0
@@ -41,7 +44,7 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
var disassembleNextInstantly = false
- def progress = if (queue.isEmpty) 0.0 else (1 - (queue.size * Settings.get.disassemblerItemCost - buffer) / totalRequiredEnergy) * 100
+ def progress: Double = if (queue.isEmpty) 0.0 else (1 - (queue.size * Settings.get.disassemblerItemCost - buffer) / totalRequiredEnergy) * 100
private def setActive(value: Boolean) = if (value != isActive) {
isActive = value
@@ -61,13 +64,13 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
// ----------------------------------------------------------------------- //
@SideOnly(Side.CLIENT)
- override protected def hasConnector(side: EnumFacing) = side != EnumFacing.UP
+ override protected def hasConnector(side: EnumFacing): Boolean = side != EnumFacing.UP
override protected def connector(side: EnumFacing) = Option(if (side != EnumFacing.UP) node else null)
- override def energyThroughput = Settings.get.disassemblerRate
+ override def energyThroughput: Double = Settings.get.disassemblerRate
- override def getCurrentState = {
+ override def getCurrentState: util.EnumSet[StateAware.State] = {
if (isActive) util.EnumSet.of(api.util.StateAware.State.IsWorking)
else if (queue.nonEmpty) util.EnumSet.of(api.util.StateAware.State.CanWork)
else util.EnumSet.noneOf(classOf[api.util.StateAware.State])
@@ -126,7 +129,7 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
}
private def drop(stack: ItemStack) {
- if (stack != null) {
+ if (!stack.isEmpty) {
for (side <- EnumFacing.values if stack.getCount > 0) {
InventoryUtils.insertIntoInventoryAt(stack, BlockPosition(this).offset(side), Some(side.getOpposite))
}
@@ -175,12 +178,12 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
override def getSizeInventory = 1
- override def isItemValidForSlot(i: Int, stack: ItemStack) =
+ override def isItemValidForSlot(i: Int, stack: ItemStack): Boolean =
allowDisassembling(stack) &&
(((Settings.get.disassembleAllTheThings || api.Items.get(stack) != null) && ItemUtils.getIngredients(stack).nonEmpty) ||
DisassemblerTemplates.select(stack).isDefined)
- private def allowDisassembling(stack: ItemStack) = stack != null && (!stack.hasTagCompound || !stack.getTagCompound.getBoolean(Settings.namespace + "undisassemblable"))
+ private def allowDisassembling(stack: ItemStack) = !stack.isEmpty && (!stack.hasTagCompound || !stack.getTagCompound.getBoolean(Settings.namespace + "undisassemblable"))
override def setInventorySlotContents(slot: Int, stack: ItemStack): Unit = {
super.setInventorySlotContents(slot, stack)
@@ -191,7 +194,7 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
override def onSetInventorySlotContents(player: EntityPlayer, slot: Int, stack: ItemStack): Unit = {
if (!getWorld.isRemote) {
- disassembleNextInstantly = stack != null && slot == 0 && player.capabilities.isCreativeMode
+ disassembleNextInstantly = !stack.isEmpty && slot == 0 && player.capabilities.isCreativeMode
}
}
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala b/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala
index b871a2b6a..25725e44f 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala
@@ -34,7 +34,7 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
// Used on client side to check whether to render disk activity indicators.
var lastAccess = 0L
- def filesystemNode = components(0) match {
+ def filesystemNode: Option[Node] = components(0) match {
case Some(environment) => Option(environment.node)
case _ => None
}
@@ -51,7 +51,7 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
// ----------------------------------------------------------------------- //
// Environment
- val node = api.Network.newNode(this, Visibility.Network).
+ val node: Component = api.Network.newNode(this, Visibility.Network).
withComponent("disk_drive").
create()
@@ -64,7 +64,7 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
def eject(context: Context, args: Arguments): Array[AnyRef] = {
val velocity = args.optDouble(0, 0) max 0 min 1
val ejected = decrStackSize(0, 1)
- if (ejected != null && ejected.getCount > 0) {
+ if (!ejected.isEmpty) {
val entity = InventoryUtils.spawnStackInWorld(position, ejected, Option(facing))
if (entity != null) {
val vx = facing.getFrontOffsetX * velocity
@@ -80,14 +80,14 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
// ----------------------------------------------------------------------- //
// Analyzable
- override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = filesystemNode.fold(null: Array[Node])(Array(_))
+ override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Array[Node] = filesystemNode.fold(null: Array[Node])(Array(_))
// ----------------------------------------------------------------------- //
// IInventory
override def getSizeInventory = 1
- override def isItemValidForSlot(slot: Int, stack: ItemStack) = (slot, Option(Driver.driverFor(stack, getClass))) match {
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean = (slot, Option(Driver.driverFor(stack, getClass))) match {
case (0, Some(driver)) => driver.slot(stack) == Slot.Floppy
case _ => false
}
@@ -132,6 +132,6 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
override def writeToNBTForClient(nbt: NBTTagCompound) {
super.writeToNBTForClient(nbt)
- items(0).foreach(stack => nbt.setNewCompoundTag(DiskTag, stack.writeToNBT))
+ if (!items(0).isEmpty) nbt.setNewCompoundTag(DiskTag, items(0).writeToNBT)
}
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala
index 02c95bb19..382fd512e 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala
@@ -32,14 +32,14 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
override def node = null
- val outputSides = Array.fill(6)(true)
+ val outputSides: Array[Boolean] = Array.fill(6)(true)
- val snooperNode = api.Network.newNode(this, Visibility.Network).
+ val snooperNode: ComponentConnector = api.Network.newNode(this, Visibility.Network).
withComponent("microcontroller").
withConnector(Settings.get.bufferMicrocontroller).
create()
- val componentNodes = Array.fill(6)(api.Network.newNode(this, Visibility.Network).
+ val componentNodes: Array[Component] = Array.fill(6)(api.Network.newNode(this, Visibility.Network).
withComponent("microcontroller").
create())
@@ -48,7 +48,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
machine.setCostPerTick(Settings.get.microcontrollerCost)
}
- override def tier = info.tier
+ override def tier: Int = info.tier
override protected def runSound = None // Microcontrollers are silent.
@@ -65,16 +65,16 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
// ----------------------------------------------------------------------- //
@SideOnly(Side.CLIENT)
- override def canConnect(side: EnumFacing) = side != facing
+ override def canConnect(side: EnumFacing): Boolean = side != facing
override def sidedNode(side: EnumFacing): Node = if (side != facing) super.sidedNode(side) else null
@SideOnly(Side.CLIENT)
- override protected def hasConnector(side: EnumFacing) = side != facing
+ override protected def hasConnector(side: EnumFacing): Boolean = side != facing
override protected def connector(side: EnumFacing) = Option(if (side != facing) snooperNode else null)
- override def energyThroughput = Settings.get.caseRate(Tier.One)
+ override def energyThroughput: Double = Settings.get.caseRate(Tier.One)
// ----------------------------------------------------------------------- //
@@ -90,7 +90,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
override def internalComponents(): java.lang.Iterable[ItemStack] = asJavaIterable(info.components)
- override def componentSlot(address: String) = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
+ override def componentSlot(address: String): Int = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
// ----------------------------------------------------------------------- //
@@ -242,11 +242,11 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
// ----------------------------------------------------------------------- //
- override def items = info.components.map(Option(_))
+ override def items: Array[ItemStack] = info.components
override def updateItems(slot: Int, stack: ItemStack): Unit = info.components(slot) = stack
- override def getSizeInventory = info.components.length
+ override def getSizeInventory: Int = info.components.length
override def isItemValidForSlot(slot: Int, stack: ItemStack) = false
@@ -254,13 +254,13 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
override def setInventorySlotContents(slot: Int, stack: ItemStack) {}
// Nope.
- override def decrStackSize(slot: Int, amount: Int) = null
+ override def decrStackSize(slot: Int, amount: Int) = ItemStack.EMPTY
// Nope.
- override def removeStackFromSlot(slot: Int) = null
+ override def removeStackFromSlot(slot: Int) = ItemStack.EMPTY
// For hotswapping EEPROMs.
- def changeEEPROM(newEeprom: ItemStack) = {
+ def changeEEPROM(newEeprom: ItemStack): Option[ItemStack] = {
val oldEepromIndex = info.components.indexWhere(api.Items.get(_) == api.Items.get(Constants.ItemName.EEPROM))
if (oldEepromIndex >= 0) {
val oldEeprom = info.components(oldEepromIndex)
@@ -268,7 +268,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
Some(oldEeprom)
}
else {
- assert(info.components(getSizeInventory - 1) == null)
+ assert(info.components(getSizeInventory - 1).isEmpty)
super.setInventorySlotContents(getSizeInventory - 1, newEeprom)
None
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala b/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala
index 21f9d5f26..12984473d 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala
@@ -17,14 +17,14 @@ class PowerDistributor extends traits.Environment with traits.PowerBalancer with
withConnector(Settings.get.bufferDistributor).
create())
- override protected def isConnected = nodes.exists(node => node.address != null && node.network != null)
+ override protected def isConnected: Boolean = nodes.exists(node => node.address != null && node.network != null)
// ----------------------------------------------------------------------- //
@SideOnly(Side.CLIENT)
override def canConnect(side: EnumFacing) = true
- override def sidedNode(side: EnumFacing) = nodes(side.ordinal)
+ override def sidedNode(side: EnumFacing): Connector = nodes(side.ordinal)
// ----------------------------------------------------------------------- //
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Printer.scala b/src/main/scala/li/cil/oc/common/tileentity/Printer.scala
index 324b61e61..366b85778 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Printer.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Printer.scala
@@ -12,6 +12,7 @@ import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network._
+import li.cil.oc.api.util.StateAware
import li.cil.oc.common.item.data.PrintData
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import li.cil.oc.util.ExtendedNBT._
@@ -26,7 +27,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
import scala.collection.convert.WrapAsJava._
class Printer extends traits.Environment with traits.Inventory with traits.Rotatable with SidedEnvironment with traits.StateAware with traits.Tickable with ISidedInventory with DeviceInfo {
- val node = api.Network.newNode(this, Visibility.Network).
+ val node: ComponentConnector = api.Network.newNode(this, Visibility.Network).
withComponent("printer3d").
withConnector(Settings.get.bufferConverter).
create()
@@ -59,11 +60,11 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
// ----------------------------------------------------------------------- //
@SideOnly(Side.CLIENT)
- override def canConnect(side: EnumFacing) = side != EnumFacing.UP
+ override def canConnect(side: EnumFacing): Boolean = side != EnumFacing.UP
- override def sidedNode(side: EnumFacing) = if (side != EnumFacing.UP) node else null
+ override def sidedNode(side: EnumFacing): ComponentConnector = if (side != EnumFacing.UP) node else null
- override def getCurrentState = {
+ override def getCurrentState: util.EnumSet[StateAware.State] = {
if (isPrinting) util.EnumSet.of(api.util.StateAware.State.IsWorking)
else if (canPrint) util.EnumSet.of(api.util.StateAware.State.CanWork)
else util.EnumSet.noneOf(classOf[api.util.StateAware.State])
@@ -71,13 +72,13 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
// ----------------------------------------------------------------------- //
- def canPrint = data.stateOff.nonEmpty && data.stateOff.size <= Settings.get.maxPrintComplexity && data.stateOn.size <= Settings.get.maxPrintComplexity
+ def canPrint: Boolean = data.stateOff.nonEmpty && data.stateOff.size <= Settings.get.maxPrintComplexity && data.stateOn.size <= Settings.get.maxPrintComplexity
- def isPrinting = output.isDefined
+ def isPrinting: Boolean = output.isDefined
- def progress = (1 - requiredEnergy / totalRequiredEnergy) * 100
+ def progress: Double = (1 - requiredEnergy / totalRequiredEnergy) * 100
- def timeRemaining = (requiredEnergy / Settings.get.assemblerTickAmount / 20).toInt
+ def timeRemaining: Int = (requiredEnergy / Settings.get.assemblerTickAmount / 20).toInt
// ----------------------------------------------------------------------- //
@@ -234,7 +235,7 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
def canMergeOutput = {
val presentStack = getStackInSlot(slotOutput)
val outputStack = data.createItemStack()
- presentStack == null || (presentStack.isItemEqual(outputStack) && ItemStack.areItemStackTagsEqual(presentStack, outputStack))
+ presentStack.isEmpty || (presentStack.isItemEqual(outputStack) && ItemStack.areItemStackTagsEqual(presentStack, outputStack))
}
if (isActive && output.isEmpty && canMergeOutput) {
@@ -263,7 +264,7 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
requiredEnergy -= have
if (requiredEnergy <= 0) {
val result = getStackInSlot(slotOutput)
- if (result == null) {
+ if (result.isEmpty) {
setInventorySlotContents(slotOutput, output.get)
}
else if (result.getCount < result.getMaxStackSize && canMergeOutput /* Should never fail, but just in case... */ ) {
@@ -356,7 +357,7 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
override def getSizeInventory = 3
- override def isItemValidForSlot(slot: Int, stack: ItemStack) =
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean =
if (slot == slotMaterial)
PrintData.materialValue(stack) > 0
else if (slot == slotInk)
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Rack.scala b/src/main/scala/li/cil/oc/common/tileentity/Rack.scala
index 7bed2f888..99510eefc 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Rack.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Rack.scala
@@ -14,6 +14,7 @@ import li.cil.oc.api.network.Message
import li.cil.oc.api.network.Node
import li.cil.oc.api.network.Packet
import li.cil.oc.api.network.Visibility
+import li.cil.oc.api.util.StateAware
import li.cil.oc.common.Slot
import li.cil.oc.integration.opencomputers.DriverRedstoneCard
import li.cil.oc.server.{PacketSender => ServerPacketSender}
@@ -32,7 +33,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalancer with traits.ComponentInventory with traits.Rotatable with traits.BundledRedstoneAware with Analyzable with internal.Rack with traits.StateAware {
var isRelayEnabled = true
val lastData = new Array[NBTTagCompound](getSizeInventory)
- val hasChanged = Array.fill(getSizeInventory)(true)
+ val hasChanged: Array[Boolean] = Array.fill(getSizeInventory)(true)
// Map node connections for each installed mountable. Each mountable may
// have up to four outgoing connections, with the first one always being
@@ -41,8 +42,8 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
// The other nodes are "secondary" connections and merely transfer network
// messages.
// mountable -> connectable -> side
- val nodeMapping = Array.fill(getSizeInventory)(Array.fill[Option[EnumFacing]](4)(None))
- val snifferNodes = Array.fill(getSizeInventory)(Array.fill(3)(api.Network.newNode(this, Visibility.Neighbors).create()))
+ val nodeMapping: Array[Array[Option[EnumFacing]]] = Array.fill(getSizeInventory)(Array.fill[Option[EnumFacing]](4)(None))
+ val snifferNodes: Array[Array[Node]] = Array.fill(getSizeInventory)(Array.fill(3)(api.Network.newNode(this, Visibility.Neighbors).create()))
def connect(slot: Int, connectableIndex: Int, side: Option[EnumFacing]): Unit = {
val newSide = side match {
@@ -223,7 +224,7 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
// ----------------------------------------------------------------------- //
// SidedEnvironment
- override def canConnect(side: EnumFacing) = side != facing
+ override def canConnect(side: EnumFacing): Boolean = side != facing
override def sidedNode(side: EnumFacing): Node = if (side != facing) super.sidedNode(side) else null
@@ -231,11 +232,11 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
// power.Common
@SideOnly(Side.CLIENT)
- override protected def hasConnector(side: EnumFacing) = side != facing
+ override protected def hasConnector(side: EnumFacing): Boolean = side != facing
override protected def connector(side: EnumFacing) = Option(if (side != facing) sidedNode(side).asInstanceOf[Connector] else null)
- override def energyThroughput = Settings.get.serverRackRate
+ override def energyThroughput: Double = Settings.get.serverRackRate
// ----------------------------------------------------------------------- //
// Analyzable
@@ -270,7 +271,7 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
// ----------------------------------------------------------------------- //
// StateAware
- override def getCurrentState = {
+ override def getCurrentState: util.EnumSet[StateAware.State] = {
val result = util.EnumSet.noneOf(classOf[api.util.StateAware.State])
components.collect {
case Some(mountable: RackMountable) => result.addAll(mountable.getCurrentState)
@@ -436,7 +437,7 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
// ----------------------------------------------------------------------- //
- def slotAt(side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
+ def slotAt(side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Option[Int] = {
if (side == facing) {
val globalY = (hitY * 16).toInt // [0, 15]
val l = 2
@@ -447,9 +448,9 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
else None
}
- def isWorking(mountable: RackMountable) = mountable.getCurrentState.contains(api.util.StateAware.State.IsWorking)
+ def isWorking(mountable: RackMountable): Boolean = mountable.getCurrentState.contains(api.util.StateAware.State.IsWorking)
- def hasRedstoneCard = components.exists {
+ def hasRedstoneCard: Boolean = components.exists {
case Some(mountable: EnvironmentHost with RackMountable with IInventory) if isWorking(mountable) =>
mountable.exists(stack => DriverRedstoneCard.worksWith(stack, mountable.getClass))
case _ => false
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Raid.scala b/src/main/scala/li/cil/oc/common/tileentity/Raid.scala
index 84fda513c..c9b1e286d 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Raid.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Raid.scala
@@ -59,7 +59,7 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
override def markDirty() {
super.markDirty()
// Makes the implementation of the comparator output easier.
- items.map(_.isDefined).copyToArray(presence)
+ items.map(!_.isEmpty).copyToArray(presence)
}
override protected def onItemRemoved(slot: Int, stack: ItemStack) {
@@ -77,7 +77,7 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
}
def tryCreateRaid(id: String) {
- if (items.count(_.isDefined) == items.length && filesystem.fold(true)(fs => fs.node == null || fs.node.address != id)) {
+ if (items.count(!_.isEmpty) == items.length && filesystem.fold(true)(fs => fs.node == null || fs.node.address != id)) {
filesystem.foreach(fs => if (fs.node != null) fs.node.remove())
val fs = api.FileSystem.asManagedEnvironment(
api.FileSystem.fromSaveDirectory(id, wipeDisksAndComputeSpace, Settings.get.bufferChanges),
@@ -95,7 +95,7 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
}
private def wipeDisksAndComputeSpace = items.foldLeft(0L) {
- case (acc, Some(hdd)) => acc + (Option(api.Driver.driverFor(hdd)) match {
+ case (acc, hdd) if !hdd.isEmpty => acc + (Option(api.Driver.driverFor(hdd)) match {
case Some(driver) => driver.createEnvironment(hdd, this) match {
case fs: FileSystem =>
val nbt = driver.dataTag(hdd)
@@ -108,7 +108,7 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
}
case _ => 0L
})
- case (acc, None) => acc
+ case (acc, ItemStack.EMPTY) => acc
}
// ----------------------------------------------------------------------- //
@@ -144,7 +144,7 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
override def writeToNBTForClient(nbt: NBTTagCompound) {
super.writeToNBTForClient(nbt)
- nbt.setTag(PresenceTag, items.map(_.isDefined))
+ nbt.setTag(PresenceTag, items.map(!_.isEmpty))
if (label.getLabel != null)
nbt.setString(LabelTag, label.getLabel)
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala b/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala
index 96785309c..f44dc9063 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala
@@ -2,22 +2,25 @@ package li.cil.oc.common.tileentity
import li.cil.oc.Settings
import li.cil.oc.api
+import li.cil.oc.api.network.Component
+import li.cil.oc.api.network.Node
import li.cil.oc.api.network.Visibility
import li.cil.oc.integration.util.BundledRedstone
import li.cil.oc.server.component
+import li.cil.oc.server.component.RedstoneVanilla
import li.cil.oc.util.ExtendedNBT._
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.util.EnumFacing
class Redstone extends traits.Environment with traits.BundledRedstoneAware with traits.Tickable {
- val instance =
+ val instance: RedstoneVanilla =
if (BundledRedstone.isAvailable)
new component.Redstone.Bundled(this)
else
new component.Redstone.Vanilla(this)
instance.wakeNeighborsOnly = false
- val node = instance.node
- val dummyNode = if (node != null) {
+ val node: Component = instance.node
+ val dummyNode: Node = if (node != null) {
node.setVisibility(Visibility.Network)
_isOutputEnabled = true
api.Network.newNode(this, Visibility.None).create()
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Relay.scala b/src/main/scala/li/cil/oc/common/tileentity/Relay.scala
index a48fa9fee..d1d9e6ecf 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Relay.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Relay.scala
@@ -1,6 +1,8 @@
package li.cil.oc.common.tileentity
import com.google.common.base.Charsets
+import li.cil.oc.api.detail.ItemInfo
+import li.cil.oc.api.network.Component
//import dan200.computercraft.api.peripheral.IComputerAccess
import li.cil.oc.Constants
import li.cil.oc.Localization
@@ -33,10 +35,10 @@ import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly
class Relay extends traits.SwitchLike with traits.ComponentInventory with traits.PowerAcceptor with Analyzable with WirelessEndpoint with QuantumNetwork.QuantumNode {
- lazy final val WirelessNetworkCard = api.Items.get(Constants.ItemName.WirelessNetworkCard)
- lazy final val LinkedCard = api.Items.get(Constants.ItemName.LinkedCard)
+ lazy final val WirelessNetworkCard: ItemInfo = api.Items.get(Constants.ItemName.WirelessNetworkCard)
+ lazy final val LinkedCard: ItemInfo = api.Items.get(Constants.ItemName.LinkedCard)
- var strength = Settings.get.maxWirelessRange
+ var strength: Double = Settings.get.maxWirelessRange
var isRepeater = true
@@ -46,7 +48,7 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
var tunnel = "creative"
- val componentNodes = Array.fill(6)(api.Network.newNode(this, Visibility.Network).
+ val componentNodes: Array[Component] = Array.fill(6)(api.Network.newNode(this, Visibility.Network).
withComponent("relay").
create())
@@ -55,12 +57,12 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
@SideOnly(Side.CLIENT)
override protected def hasConnector(side: EnumFacing) = true
- override protected def connector(side: EnumFacing) = sidedNode(side) match {
+ override protected def connector(side: EnumFacing): Option[Connector] = sidedNode(side) match {
case connector: Connector => Option(connector)
case _ => None
}
- override def energyThroughput = Settings.get.accessPointRate
+ override def energyThroughput: Double = Settings.get.accessPointRate
// ----------------------------------------------------------------------- //
@@ -152,7 +154,7 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
// ----------------------------------------------------------------------- //
- override protected def createNode(plug: Plug) = api.Network.newNode(plug, Visibility.Network).
+ override protected def createNode(plug: Plug): Connector = api.Network.newNode(plug, Visibility.Network).
withConnector(math.round(Settings.get.bufferAccessPoint)).
create()
@@ -226,9 +228,9 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
}
}
- override def getSizeInventory = InventorySlots.relay.length
+ override def getSizeInventory: Int = InventorySlots.relay.length
- override def isItemValidForSlot(slot: Int, stack: ItemStack) =
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean =
Option(Driver.driverFor(stack, getClass)).fold(false)(driver => {
val provided = InventorySlots.relay(slot)
val tierSatisfied = driver.slot(stack) == provided.slot && driver.tier(stack) <= provided.tier
@@ -244,8 +246,8 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
override def readFromNBTForServer(nbt: NBTTagCompound) {
super.readFromNBTForServer(nbt)
- for (slot <- items.indices) items(slot) collect {
- case stack => updateLimits(slot, stack)
+ for (slot <- items.indices) if (!items(slot).isEmpty) {
+ updateLimits(slot, items(slot))
}
if (nbt.hasKey(StrengthTag)) {
@@ -260,7 +262,7 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
}
}
- override def writeToNBTForServer(nbt: NBTTagCompound) = {
+ override def writeToNBTForServer(nbt: NBTTagCompound): Unit = {
super.writeToNBTForServer(nbt)
nbt.setDouble(StrengthTag, strength)
nbt.setBoolean(IsRepeaterTag, isRepeater)
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Robot.scala b/src/main/scala/li/cil/oc/common/tileentity/Robot.scala
index 45bff803e..27dc8908f 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Robot.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Robot.scala
@@ -22,6 +22,7 @@ import li.cil.oc.integration.opencomputers.DriverKeyboard
import li.cil.oc.integration.opencomputers.DriverRedstoneCard
import li.cil.oc.integration.opencomputers.DriverScreen
import li.cil.oc.server.agent
+import li.cil.oc.server.agent.Player
import li.cil.oc.server.component
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import li.cil.oc.util.BlockPosition
@@ -64,7 +65,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
val info = new RobotData()
- val bot = if (isServer) new component.Robot(this) else null
+ val bot: component.Robot = if (isServer) new component.Robot(this) else null
if (isServer) {
machine.setCostPerTick(Settings.get.robotCost)
@@ -80,30 +81,30 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
super.getCapability(capability, facing)
}
- override def tier = info.tier
+ override def tier: Int = info.tier
- def isCreative = tier == Tier.Four
+ def isCreative: Boolean = tier == Tier.Four
val equipmentInventory = new InventoryProxy {
- override def inventory = Robot.this
+ override def inventory: Robot = Robot.this
override def getSizeInventory = 4
}
// Wrapper for the part of the inventory that is mutable.
val mainInventory = new InventoryProxy {
- override def inventory = Robot.this
+ override def inventory: Robot = Robot.this
- override def getSizeInventory = Robot.this.inventorySize
+ override def getSizeInventory: Int = Robot.this.inventorySize
- override def offset = equipmentInventory.getSizeInventory
+ override def offset: Int = equipmentInventory.getSizeInventory
}
val actualInventorySize = 100
- def maxInventorySize = actualInventorySize - equipmentInventory.getSizeInventory - componentCount
+ def maxInventorySize: Int = actualInventorySize - equipmentInventory.getSizeInventory - componentCount
- var inventorySize = -1
+ var inventorySize: Int = -1
var selectedSlot = 0
@@ -115,9 +116,9 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
val tank = new internal.MultiTank {
- override def tankCount = Robot.this.tankCount
+ override def tankCount: Int = Robot.this.tankCount
- override def getFluidTank(index: Int) = Robot.this.getFluidTank(index)
+ override def getFluidTank(index: Int): ManagedEnvironment with IFluidTank = Robot.this.getFluidTank(index)
}
var selectedTank = 0
@@ -127,16 +128,16 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// For client.
var renderingErrored = false
- override def componentCount = info.components.length
+ override def componentCount: Int = info.components.length
- override def getComponentInSlot(index: Int) = components(index).orNull
+ override def getComponentInSlot(index: Int): ManagedEnvironment = components(index).orNull
- override def player = {
+ override def player: Player = {
agent.Player.updatePositionAndRotation(player_, facing, facing)
player_
}
- override def synchronizeSlot(slot: Int) = if (slot >= 0 && slot < getSizeInventory) this.synchronized {
+ override def synchronizeSlot(slot: Int): Unit = if (slot >= 0 && slot < getSizeInventory) this.synchronized {
val stack = getStackInSlot(slot)
components(slot) match {
case Some(component) =>
@@ -147,9 +148,9 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
ServerPacketSender.sendRobotInventory(this, slot, stack)
}
- def containerSlots = 1 to info.containers.length
+ def containerSlots: Range.Inclusive = 1 to info.containers.length
- def componentSlots = getSizeInventory - componentCount until getSizeInventory
+ def componentSlots: Range = getSizeInventory - componentCount until getSizeInventory
def inventorySlots: Range = equipmentInventory.getSizeInventory until (equipmentInventory.getSizeInventory + mainInventory.getSizeInventory)
@@ -158,19 +159,19 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
ServerPacketSender.sendRobotLightChange(this)
}
- override def shouldAnimate = isRunning
+ override def shouldAnimate: Boolean = isRunning
// ----------------------------------------------------------------------- //
- override def node = if (isServer) machine.node else null
+ override def node: Node = if (isServer) machine.node else null
var globalBuffer, globalBufferSize = 0.0
val maxComponents = 32
- var ownerName = Settings.get.fakePlayerName
+ var ownerName: String = Settings.get.fakePlayerName
- var ownerUUID = Settings.get.fakePlayerProfile.getId
+ var ownerUUID: UUID = Settings.get.fakePlayerProfile.getId
var animationTicksLeft = 0
@@ -188,11 +189,11 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- override def name = info.name
+ override def name: String = info.name
override def setName(name: String): Unit = info.name = name
- override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
+ override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Array[Node] = {
player.sendMessage(Localization.Analyzer.RobotOwner(ownerName))
player.sendMessage(Localization.Analyzer.RobotName(player_.getName))
MinecraftForge.EVENT_BUS.post(new RobotAnalyzeEvent(this, player))
@@ -280,18 +281,18 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- def isAnimatingMove = animationTicksLeft > 0 && moveFrom.isDefined
+ def isAnimatingMove: Boolean = animationTicksLeft > 0 && moveFrom.isDefined
- def isAnimatingSwing = animationTicksLeft > 0 && swingingTool
+ def isAnimatingSwing: Boolean = animationTicksLeft > 0 && swingingTool
- def isAnimatingTurn = animationTicksLeft > 0 && turnAxis != 0
+ def isAnimatingTurn: Boolean = animationTicksLeft > 0 && turnAxis != 0
- def animateSwing(duration: Double) = if (items(0).isDefined) {
+ def animateSwing(duration: Double): Unit = if (!items(0).isEmpty) {
setAnimateSwing((duration * 20).toInt)
ServerPacketSender.sendRobotAnimateSwing(this)
}
- def animateTurn(clockwise: Boolean, duration: Double) = {
+ def animateTurn(clockwise: Boolean, duration: Double): Unit = {
setAnimateTurn(if (clockwise) 1 else -1, (duration * 20).toInt)
ServerPacketSender.sendRobotAnimateTurn(this)
}
@@ -325,7 +326,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
override def shouldRenderInPass(pass: Int) = true
- override def getRenderBoundingBox =
+ override def getRenderBoundingBox: AxisAlignedBB =
if (getBlockType != null && getWorld != null)
getBlockType.getCollisionBoundingBox(getWorld.getBlockState(getPos), getWorld, getPos).expand(0.5, 0.5, 0.5).offset(getPos)
else
@@ -456,7 +457,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
// Side check for Waila (and other mods that may call this client side).
- override def writeToNBTForServer(nbt: NBTTagCompound) = if (isServer) this.synchronized {
+ override def writeToNBTForServer(nbt: NBTTagCompound): Unit = if (isServer) this.synchronized {
info.save(nbt)
// Note: computer is saved when proxy is saved (in proxy's super writeToNBT)
@@ -505,7 +506,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
connectComponents()
}
- override def writeToNBTForClient(nbt: NBTTagCompound) = this.synchronized {
+ override def writeToNBTForClient(nbt: NBTTagCompound): Unit = this.synchronized {
super.writeToNBTForClient(nbt)
save(nbt)
info.save(nbt)
@@ -634,9 +635,9 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
}
- override def isComponentSlot(slot: Int, stack: ItemStack) = (containerSlots ++ componentSlots) contains slot
+ override def isComponentSlot(slot: Int, stack: ItemStack): Boolean = (containerSlots ++ componentSlots) contains slot
- def containerSlotType(slot: Int) = if (containerSlots contains slot) {
+ def containerSlotType(slot: Int): String = if (containerSlots contains slot) {
val stack = info.containers(slot - 1)
Option(Driver.driverFor(stack, getClass)) match {
case Some(driver: Container) => driver.providedSlot(stack)
@@ -645,7 +646,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
else Slot.None
- def containerSlotTier(slot: Int) = if (containerSlots contains slot) {
+ def containerSlotTier(slot: Int): Int = if (containerSlots contains slot) {
val stack = info.containers(slot - 1)
Option(Driver.driverFor(stack, getClass)) match {
case Some(driver: Container) => driver.providedTier(stack)
@@ -654,13 +655,13 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
else Tier.None
- def isToolSlot(slot: Int) = slot == 0
+ def isToolSlot(slot: Int): Boolean = slot == 0
- def isContainerSlot(slot: Int) = containerSlots contains slot
+ def isContainerSlot(slot: Int): Boolean = containerSlots contains slot
- def isInventorySlot(slot: Int) = inventorySlots contains slot
+ def isInventorySlot(slot: Int): Boolean = inventorySlots contains slot
- def isFloppySlot(slot: Int) = getStackInSlot(slot) != null && isComponentSlot(slot, getStackInSlot(slot)) && {
+ def isFloppySlot(slot: Int): Boolean = !getStackInSlot(slot).isEmpty && isComponentSlot(slot, getStackInSlot(slot)) && {
val stack = getStackInSlot(slot)
Option(Driver.driverFor(stack, getClass)) match {
case Some(driver) => driver.slot(stack) == Slot.Floppy
@@ -668,13 +669,13 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
}
- def isUpgradeSlot(slot: Int) = containerSlotType(slot) == Slot.Upgrade
+ def isUpgradeSlot(slot: Int): Boolean = containerSlotType(slot) == Slot.Upgrade
// ----------------------------------------------------------------------- //
- override def componentSlot(address: String) = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
+ override def componentSlot(address: String): Int = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
- override def hasRedstoneCard = (containerSlots ++ componentSlots).exists(slot => Option(getStackInSlot(slot)).fold(false)(DriverRedstoneCard.worksWith(_, getClass)))
+ override def hasRedstoneCard: Boolean = (containerSlots ++ componentSlots).exists(slot => Option(getStackInSlot(slot)).fold(false)(DriverRedstoneCard.worksWith(_, getClass)))
private def computeInventorySize() = math.min(maxInventorySize, (containerSlots ++ componentSlots).foldLeft(0)((acc, slot) => acc + (Option(getStackInSlot(slot)) match {
case Some(stack) => Option(Driver.driverFor(stack, getClass)) match {
@@ -686,7 +687,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
private var updatingInventorySize = false
- def updateInventorySize() = this.synchronized(if (!updatingInventorySize) try {
+ def updateInventorySize(): Unit = this.synchronized(if (!updatingInventorySize) try {
updatingInventorySize = true
val newInventorySize = computeInventorySize()
if (newInventorySize != inventorySize) {
@@ -696,8 +697,8 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
val removed = mutable.ArrayBuffer.empty[ItemStack]
for (slot <- realSize until getSizeInventory - componentCount) {
val stack = getStackInSlot(slot)
- setInventorySlotContents(slot, null)
- if (stack != null) removed += stack
+ setInventorySlotContents(slot, ItemStack.EMPTY)
+ if (!stack.isEmpty) removed += stack
}
val copyComponentCount = math.min(getSizeInventory, componentCount)
Array.copy(components, getSizeInventory - copyComponentCount, components, realSize, copyComponentCount)
@@ -720,11 +721,11 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- var getSizeInventory = actualInventorySize
+ var getSizeInventory: Int = actualInventorySize
override def getInventoryStackLimit = 64
- override def getStackInSlot(slot: Int) = {
+ override def getStackInSlot(slot: Int): ItemStack = {
if (slot >= getSizeInventory) null // Required to always show 16 inventory slots in GUI.
else if (slot >= getSizeInventory - componentCount) {
info.components(slot - (getSizeInventory - componentCount))
@@ -733,8 +734,8 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
override def setInventorySlotContents(slot: Int, stack: ItemStack) {
- if (slot < getSizeInventory - componentCount && (isItemValidForSlot(slot, stack) || stack == null)) {
- if (stack != null && stack.getCount > 1 && isComponentSlot(slot, stack)) {
+ if (slot < getSizeInventory - componentCount && (isItemValidForSlot(slot, stack) || stack.isEmpty)) {
+ if (!stack.isEmpty && stack.getCount > 1 && isComponentSlot(slot, stack)) {
super.setInventorySlotContents(slot, stack.splitStack(1))
if (stack.getCount > 0 && isServer) {
player().inventory.addItemStackToInventory(stack)
@@ -743,13 +744,13 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
else super.setInventorySlotContents(slot, stack)
}
- else if (stack != null && stack.getCount > 0 && !getWorld.isRemote) spawnStackInWorld(stack, Option(EnumFacing.UP))
+ else if (!stack.isEmpty && stack.getCount > 0 && !getWorld.isRemote) spawnStackInWorld(stack, Option(EnumFacing.UP))
}
- override def isUsableByPlayer(player: EntityPlayer) =
+ override def isUsableByPlayer(player: EntityPlayer): Boolean =
super.isUsableByPlayer(player) && (!isCreative || player.capabilities.isCreativeMode)
- override def isItemValidForSlot(slot: Int, stack: ItemStack) = (slot, Option(Driver.driverFor(stack, getClass))) match {
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean = (slot, Option(Driver.driverFor(stack, getClass))) match {
case (0, _) => true // Allow anything in the tool slot.
case (i, Some(driver)) if isContainerSlot(i) =>
// Yay special cases! Dynamic screens kind of work, but are pretty derpy
@@ -769,10 +770,10 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- override def dropSlot(slot: Int, count: Int, direction: Option[EnumFacing]) =
+ override def dropSlot(slot: Int, count: Int, direction: Option[EnumFacing]): Boolean =
InventoryUtils.dropSlot(BlockPosition(x, y, z, getWorld), mainInventory, slot, count, direction)
- override def dropAllSlots() = {
+ override def dropAllSlots(): Unit = {
InventoryUtils.dropSlot(BlockPosition(x, y, z, getWorld), this, 0, Int.MaxValue)
for (slot <- containerSlots) {
InventoryUtils.dropSlot(BlockPosition(x, y, z, getWorld), this, slot, Int.MaxValue)
@@ -782,14 +783,14 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- override def canExtractItem(slot: Int, stack: ItemStack, side: EnumFacing) =
+ override def canExtractItem(slot: Int, stack: ItemStack, side: EnumFacing): Boolean =
getSlotsForFace(side).contains(slot)
- override def canInsertItem(slot: Int, stack: ItemStack, side: EnumFacing) =
+ override def canInsertItem(slot: Int, stack: ItemStack, side: EnumFacing): Boolean =
getSlotsForFace(side).contains(slot) &&
isItemValidForSlot(slot, stack)
- override def getSlotsForFace(side: EnumFacing) =
+ override def getSlotsForFace(side: EnumFacing): Array[Int] =
toLocal(side) match {
case EnumFacing.WEST => Array(0) // Tool
case EnumFacing.EAST => containerSlots.toArray
@@ -798,7 +799,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
// ----------------------------------------------------------------------- //
- def tryGetTank(tank: Int) = {
+ def tryGetTank(tank: Int): Option[ManagedEnvironment with IFluidTank] = {
val tanks = components.collect {
case Some(tank: IFluidTank) => tank
}
@@ -806,30 +807,30 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
else Option(tanks(tank))
}
- def tankCount = components.count {
+ def tankCount: Int = components.count {
case Some(tank: IFluidTank) => true
case _ => false
}
- def getFluidTank(tank: Int) = tryGetTank(tank).orNull
+ def getFluidTank(tank: Int): ManagedEnvironment with IFluidTank = tryGetTank(tank).orNull
// ----------------------------------------------------------------------- //
- override def fill(resource: FluidStack, doFill: Boolean) =
+ override def fill(resource: FluidStack, doFill: Boolean): Int =
tryGetTank(selectedTank) match {
case Some(t) =>
t.fill(resource, doFill)
case _ => 0
}
- override def drain(resource: FluidStack, doDrain: Boolean) =
+ override def drain(resource: FluidStack, doDrain: Boolean): FluidStack =
tryGetTank(selectedTank) match {
case Some(t) if t.getFluid != null && t.getFluid.isFluidEqual(resource) =>
t.drain(resource.amount, doDrain)
case _ => null
}
- override def drain(maxDrain: Int, doDrain: Boolean) = {
+ override def drain(maxDrain: Int, doDrain: Boolean): FluidStack = {
tryGetTank(selectedTank) match {
case Some(t) =>
t.drain(maxDrain, doDrain)
@@ -837,7 +838,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
}
- def canFill(fluid: Fluid) = {
+ def canFill(fluid: Fluid): Boolean = {
tryGetTank(selectedTank) match {
case Some(t) => t.getFluid == null || t.getFluid.getFluid == fluid
case _ => false
@@ -851,7 +852,7 @@ class Robot extends traits.Computer with traits.PowerInformation with traits.Rot
}
}
- override def getTankProperties = FluidTankProperties.convert(components.collect {
+ override def getTankProperties: Array[IFluidTankProperties] = FluidTankProperties.convert(components.collect {
case Some(t: IFluidTank) => t.getInfo
}).map(_.asInstanceOf[IFluidTankProperties])
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/Switch.scala b/src/main/scala/li/cil/oc/common/tileentity/Switch.scala
index 090715988..0280d5acc 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/Switch.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/Switch.scala
@@ -82,8 +82,8 @@ class Switch extends traits.SwitchLike with traits.NotAnalyzable with traits.Com
override def readFromNBTForServer(nbt: NBTTagCompound) {
super.readFromNBTForServer(nbt)
- for (slot <- items.indices) items(slot) collect {
- case stack => updateLimits(slot, stack)
+ for (slot <- items.indices) if (!items(slot).isEmpty) {
+ updateLimits(slot, items(slot))
}
}
}
diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala
index c92ebaf2e..38e5cbf39 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala
@@ -5,6 +5,8 @@ import java.util
import li.cil.oc.Settings
import li.cil.oc.api
+import li.cil.oc.api.machine.Machine
+import li.cil.oc.api.network.Node
import li.cil.oc.client.Sound
import li.cil.oc.common.tileentity.RobotProxy
import li.cil.oc.integration.opencomputers.DriverRedstoneCard
@@ -26,9 +28,9 @@ import scala.collection.mutable
trait Computer extends Environment with ComponentInventory with Rotatable with BundledRedstoneAware with api.network.Analyzable with api.machine.MachineHost with StateAware with Tickable {
private lazy val _machine = if (isServer) api.Machine.create(this) else null
- def machine = _machine
+ def machine: Machine = _machine
- override def node = if (isServer) machine.node else null
+ override def node: Node = if (isServer) machine.node else null
private var _isRunning = false
@@ -41,11 +43,11 @@ trait Computer extends Environment with ComponentInventory with Rotatable with B
// ----------------------------------------------------------------------- //
- def canInteract(player: String) =
+ def canInteract(player: String): Boolean =
if (isServer) machine.canInteract(player)
else !Settings.get.canComputersBeOwned || _users.isEmpty || _users.contains(player)
- def isRunning = _isRunning
+ def isRunning: Boolean = _isRunning
def setRunning(value: Boolean): Unit = if (value != _isRunning) {
_isRunning = value
@@ -69,7 +71,7 @@ trait Computer extends Environment with ComponentInventory with Rotatable with B
_users ++= list
}
- override def getCurrentState = {
+ override def getCurrentState: util.EnumSet[api.util.StateAware.State] = {
if (isRunning) util.EnumSet.of(api.util.StateAware.State.IsWorking)
else util.EnumSet.noneOf(classOf[api.util.StateAware.State])
}
@@ -77,16 +79,16 @@ trait Computer extends Environment with ComponentInventory with Rotatable with B
// ----------------------------------------------------------------------- //
override def internalComponents(): lang.Iterable[ItemStack] = (0 until getSizeInventory).collect {
- case slot if getStackInSlot(slot) != null && isComponentSlot(slot, getStackInSlot(slot)) => getStackInSlot(slot)
+ case slot if !getStackInSlot(slot).isEmpty && isComponentSlot(slot, getStackInSlot(slot)) => getStackInSlot(slot)
}
- override def onMachineConnect(node: api.network.Node) = this.onConnect(node)
+ override def onMachineConnect(node: api.network.Node): Unit = this.onConnect(node)
- override def onMachineDisconnect(node: api.network.Node) = this.onDisconnect(node)
+ override def onMachineDisconnect(node: api.network.Node): Unit = this.onDisconnect(node)
- def hasRedstoneCard = items.exists {
- case Some(item) => machine.isRunning && DriverRedstoneCard.worksWith(item, getClass)
+ def hasRedstoneCard: Boolean = items.exists {
+ case item if !item.isEmpty => machine.isRunning && DriverRedstoneCard.worksWith(item, getClass)
case _ => false
}
@@ -190,7 +192,7 @@ trait Computer extends Environment with ComponentInventory with Rotatable with B
}
}
- override def isUsableByPlayer(player: EntityPlayer) =
+ override def isUsableByPlayer(player: EntityPlayer): Boolean =
super.isUsableByPlayer(player) && (player match {
case fakePlayer: agent.Player => canInteract(fakePlayer.agent.ownerName())
case _ => canInteract(player.getName)
diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/Inventory.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/Inventory.scala
index e60f1ce5c..38ae6cad4 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/traits/Inventory.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/traits/Inventory.scala
@@ -10,7 +10,7 @@ import net.minecraft.util.EnumFacing
import net.minecraft.util.text.ITextComponent
trait Inventory extends TileEntity with inventory.Inventory {
- private lazy val inventory = Array.fill[Option[ItemStack]](getSizeInventory)(None)
+ private lazy val inventory = Array.fill[ItemStack](getSizeInventory)(ItemStack.EMPTY)
def items = inventory
diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala
index 3878d61b3..f66269a24 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala
@@ -46,7 +46,7 @@ trait PowerBalancer extends PowerInformation with SidedEnvironment with Tickable
}
}
- protected def distribute() = {
+ protected def distribute(): (Double, Double) = {
var sumBuffer, sumSize = 0.0
for (node <- connectors if isPrimary(node)) {
sumBuffer += node.globalBuffer
diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/TextBuffer.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/TextBuffer.scala
index ffcb64e49..bc0ae7798 100644
--- a/src/main/scala/li/cil/oc/common/tileentity/traits/TextBuffer.scala
+++ b/src/main/scala/li/cil/oc/common/tileentity/traits/TextBuffer.scala
@@ -3,12 +3,14 @@ package li.cil.oc.common.tileentity.traits
import li.cil.oc.Constants
import li.cil.oc.Settings
import li.cil.oc.api
+import li.cil.oc.api.internal
+import li.cil.oc.api.network.Node
import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly
trait TextBuffer extends Environment with Tickable {
- lazy val buffer = {
+ lazy val buffer: internal.TextBuffer = {
val screenItem = api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1)
val buffer = api.Driver.driverFor(screenItem, getClass).createEnvironment(screenItem, this).asInstanceOf[api.internal.TextBuffer]
val (maxWidth, maxHeight) = Settings.screenResolutionsByTier(tier)
@@ -17,7 +19,7 @@ trait TextBuffer extends Environment with Tickable {
buffer
}
- override def node = buffer.node
+ override def node: Node = buffer.node
def tier: Int
@@ -30,12 +32,12 @@ trait TextBuffer extends Environment with Tickable {
// ----------------------------------------------------------------------- //
- override def readFromNBTForServer(nbt: NBTTagCompound) = {
+ override def readFromNBTForServer(nbt: NBTTagCompound): Unit = {
super.readFromNBTForServer(nbt)
buffer.load(nbt)
}
- override def writeToNBTForServer(nbt: NBTTagCompound) = {
+ override def writeToNBTForServer(nbt: NBTTagCompound): Unit = {
super.writeToNBTForServer(nbt)
buffer.save(nbt)
}
diff --git a/src/main/scala/li/cil/oc/integration/Mods.scala b/src/main/scala/li/cil/oc/integration/Mods.scala
index 997e9581b..fd4fae1b3 100644
--- a/src/main/scala/li/cil/oc/integration/Mods.scala
+++ b/src/main/scala/li/cil/oc/integration/Mods.scala
@@ -4,20 +4,22 @@ import li.cil.oc.Settings
import li.cil.oc.integration
import net.minecraftforge.fml.common.Loader
import net.minecraftforge.fml.common.ModAPIManager
+import net.minecraftforge.fml.common.versioning.ArtifactVersion
import net.minecraftforge.fml.common.versioning.VersionParser
import scala.collection.mutable
+import scala.collection.mutable.ArrayBuffer
object Mods {
private val handlers = mutable.Set.empty[ModProxy]
private val knownMods = mutable.ArrayBuffer.empty[ModBase]
- lazy val isPowerProvidingModPresent = knownMods.exists(mod => mod.providesPower && mod.isAvailable)
+ lazy val isPowerProvidingModPresent: Boolean = knownMods.exists(mod => mod.providesPower && mod.isAvailable)
// ----------------------------------------------------------------------- //
- def All = knownMods.clone()
+ def All: ArrayBuffer[ModBase] = knownMods.clone()
val Forestry = new SimpleMod(IDs.Forestry, version = "@[5.2,)")
val JustEnoughItems = new SimpleMod(IDs.JustEnoughItems)
val Minecraft = new SimpleMod(IDs.Minecraft)
@@ -58,9 +60,9 @@ object Mods {
object IDs {
final val Forestry = "forestry"
- final val JustEnoughItems = "JEI"
- final val Minecraft = "Minecraft"
- final val OpenComputers = "OpenComputers"
+ final val JustEnoughItems = "jei"
+ final val Minecraft = "minecraft"
+ final val OpenComputers = "opencomputers"
final val TIS3D = "tis3d"
}
@@ -71,23 +73,23 @@ object Mods {
private var powerDisabled = false
- protected lazy val isPowerModEnabled = !providesPower || (!Settings.get.pureIgnorePower && !Settings.get.powerModBlacklist.contains(id))
+ protected lazy val isPowerModEnabled: Boolean = !providesPower || (!Settings.get.pureIgnorePower && !Settings.get.powerModBlacklist.contains(id))
def isModAvailable: Boolean
def id: String
- def isAvailable = !powerDisabled && isModAvailable && isPowerModEnabled
+ def isAvailable: Boolean = !powerDisabled && isModAvailable && isPowerModEnabled
def providesPower: Boolean = false
// This is called from the class transformer when injecting an interface of
// this power type fails, to avoid class not found / class cast exceptions.
- def disablePower() = powerDisabled = true
+ def disablePower(): Unit = powerDisabled = true
def container = Option(Loader.instance.getIndexedModList.get(id))
- def version = container.map(_.getProcessedVersion)
+ def version: Option[ArtifactVersion] = container.map(_.getProcessedVersion)
}
class SimpleMod(val id: String, override val providesPower: Boolean = false, version: String = "") extends ModBase {
@@ -98,7 +100,7 @@ object Mods {
else ModAPIManager.INSTANCE.hasAPI(version.getLabel)
}
- def isModAvailable = isModAvailable_
+ def isModAvailable: Boolean = isModAvailable_
}
class ClassBasedMod(val id: String, val classNames: String*)(override val providesPower: Boolean = false) extends ModBase {
@@ -106,7 +108,7 @@ object Mods {
case _: Throwable => false
})
- def isModAvailable = isModAvailable_
+ def isModAvailable: Boolean = isModAvailable_
}
}
diff --git a/src/main/scala/li/cil/oc/integration/jei/CallbackDocHandler.scala b/src/main/scala/li/cil/oc/integration/jei/CallbackDocHandler.scala
index 255235fc4..76ffe5a39 100644
--- a/src/main/scala/li/cil/oc/integration/jei/CallbackDocHandler.scala
+++ b/src/main/scala/li/cil/oc/integration/jei/CallbackDocHandler.scala
@@ -7,9 +7,6 @@ import com.google.common.base.Strings
import com.mojang.realmsclient.gui.ChatFormatting
import li.cil.oc.Settings
import li.cil.oc.api
-import li.cil.oc.api.driver.EnvironmentAware
-import li.cil.oc.api.prefab.DriverTileEntity
-import li.cil.oc.server.driver.Registry
import li.cil.oc.server.machine.Callbacks
import mezz.jei.api.IGuiHelper
import mezz.jei.api.IModRegistry
@@ -37,21 +34,6 @@ object CallbackDocHandler {
case stack: ItemStack =>
val callbacks = api.Driver.environmentsFor(stack).flatMap(getCallbacks).toBuffer
- // TODO remove in OC 1.7
- if (callbacks.isEmpty) {
- callbacks ++= (Option(Registry.driverFor(stack)) match {
- case Some(driver: EnvironmentAware) =>
- getCallbacks(driver.providedEnvironment(stack))
- case _ => Registry.blocks.collect {
- case driver: DriverTileEntity with EnvironmentAware =>
- if (driver.getTileEntityClass != null && !driver.getTileEntityClass.isInterface)
- driver.providedEnvironment(stack)
- else null
- case driver: EnvironmentAware => driver.providedEnvironment(stack)
- }.filter(_ != null).flatMap(getCallbacks)
- })
- }
-
if (callbacks.nonEmpty) {
val pages = mutable.Buffer.empty[String]
val lastPage = callbacks.toArray.sorted.foldLeft("") {
@@ -94,16 +76,16 @@ object CallbackDocHandler {
}
else Seq.empty
- protected def wrap(line: String, width: Int) = Minecraft.getMinecraft.fontRenderer.listFormattedStringToWidth(line, width)
+ protected def wrap(line: String, width: Int): util.List[String] = Minecraft.getMinecraft.fontRenderer.listFormattedStringToWidth(line, width)
object CallbackDocRecipeHandler extends IRecipeHandler[CallbackDocRecipe] {
- override def getRecipeWrapper(recipe: CallbackDocRecipe) = recipe
+ override def getRecipeWrapper(recipe: CallbackDocRecipe): CallbackDocRecipe = recipe
override def getRecipeCategoryUid(recipe: CallbackDocRecipe): String = CallbackDocRecipeCategory.getUid
override def isRecipeValid(recipe: CallbackDocRecipe) = true
- override def getRecipeClass = classOf[CallbackDocRecipe]
+ override def getRecipeClass: Class[CallbackDocRecipe] = classOf[CallbackDocRecipe]
}
class CallbackDocRecipe(val stack: ItemStack, val page: String) extends BlankRecipeWrapper {
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverBeacon.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverBeacon.scala
index 1b1965108..5f8ae6edc 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverBeacon.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverBeacon.scala
@@ -54,7 +54,7 @@ object DriverBeacon extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.BEACON)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.BEACON)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverBrewingStand.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverBrewingStand.scala
index 9ef72937c..f46a7456b 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverBrewingStand.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverBrewingStand.scala
@@ -35,7 +35,7 @@ object DriverBrewingStand extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && stack.getItem == Items.BREWING_STAND)
+ if (!stack.isEmpty && stack.getItem == Items.BREWING_STAND)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverCommandBlock.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverCommandBlock.scala
index cabf42638..7c6f55fb9 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverCommandBlock.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverCommandBlock.scala
@@ -56,7 +56,7 @@ object DriverCommandBlock extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.COMMAND_BLOCK)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.COMMAND_BLOCK)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverComparator.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverComparator.scala
index 2d58a8fd4..a7ea2143e 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverComparator.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverComparator.scala
@@ -35,7 +35,7 @@ object DriverComparator extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && stack.getItem == Items.COMPARATOR)
+ if (!stack.isEmpty && stack.getItem == Items.COMPARATOR)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverFurnace.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverFurnace.scala
index 12d2896da..90b7e51e1 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverFurnace.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverFurnace.scala
@@ -56,7 +56,7 @@ object DriverFurnace extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.FURNACE)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.FURNACE)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverInventory.java b/src/main/scala/li/cil/oc/integration/minecraft/DriverInventory.java
index a91ce5d29..cec56bb9f 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverInventory.java
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverInventory.java
@@ -60,7 +60,7 @@ public final class DriverInventory extends DriverSidedTileEntity {
if (notPermitted()) return new Object[]{null, "permission denied"};
final int slot = checkSlot(args, 0);
final ItemStack stack = tileEntity.getStackInSlot(slot);
- if (stack != null) {
+ if (!stack.isEmpty()) {
return new Object[]{stack.getCount()};
} else {
return new Object[]{0};
@@ -72,7 +72,7 @@ public final class DriverInventory extends DriverSidedTileEntity {
if (notPermitted()) return new Object[]{null, "permission denied"};
final int slot = checkSlot(args, 0);
final ItemStack stack = tileEntity.getStackInSlot(slot);
- if (stack != null) {
+ if (!stack.isEmpty()) {
return new Object[]{Math.min(tileEntity.getInventoryStackLimit(), stack.getMaxStackSize())};
} else {
return new Object[]{tileEntity.getInventoryStackLimit()};
@@ -89,9 +89,9 @@ public final class DriverInventory extends DriverSidedTileEntity {
}
final ItemStack stackA = tileEntity.getStackInSlot(slotA);
final ItemStack stackB = tileEntity.getStackInSlot(slotB);
- if (stackA == null && stackB == null) {
+ if (stackA.isEmpty() && stackB.isEmpty()) {
return new Object[]{true};
- } else if (stackA != null && stackB != null) {
+ } else if (!stackA.isEmpty() && !stackB.isEmpty()) {
return new Object[]{itemEquals(stackA, stackB)};
} else {
return new Object[]{false};
@@ -109,10 +109,10 @@ public final class DriverInventory extends DriverSidedTileEntity {
}
final ItemStack stackA = tileEntity.getStackInSlot(slotA);
final ItemStack stackB = tileEntity.getStackInSlot(slotB);
- if (stackA == null) {
+ if (stackA.isEmpty()) {
// Empty.
return new Object[]{false};
- } else if (stackB == null) {
+ } else if (stackB.isEmpty()) {
// Move.
tileEntity.setInventorySlotContents(slotB, tileEntity.decrStackSize(slotA, count));
return new Object[]{true};
@@ -125,7 +125,7 @@ public final class DriverInventory extends DriverSidedTileEntity {
stackA.setCount(stackA.getCount() - amount);
stackB.setCount(stackB.getCount() + amount);
if (stackA.getCount() == 0) {
- tileEntity.setInventorySlotContents(slotA, null);
+ tileEntity.setInventorySlotContents(slotA, ItemStack.EMPTY);
}
tileEntity.markDirty();
return new Object[]{true};
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverMobSpawner.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverMobSpawner.scala
index 0dc8203b1..17fe50ff1 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverMobSpawner.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverMobSpawner.scala
@@ -36,7 +36,7 @@ object DriverMobSpawner extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.MOB_SPAWNER)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.MOB_SPAWNER)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverNoteBlock.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverNoteBlock.scala
index 9008abdc2..756cb0c50 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverNoteBlock.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverNoteBlock.scala
@@ -64,7 +64,7 @@ object DriverNoteBlock extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.NOTEBLOCK)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.NOTEBLOCK)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/minecraft/DriverRecordPlayer.scala b/src/main/scala/li/cil/oc/integration/minecraft/DriverRecordPlayer.scala
index 0e2a21b86..ccb4fd9e8 100644
--- a/src/main/scala/li/cil/oc/integration/minecraft/DriverRecordPlayer.scala
+++ b/src/main/scala/li/cil/oc/integration/minecraft/DriverRecordPlayer.scala
@@ -59,7 +59,7 @@ object DriverRecordPlayer extends DriverSidedTileEntity {
object Provider extends EnvironmentProvider {
override def getEnvironment(stack: ItemStack): Class[_] = {
- if (stack != null && Block.getBlockFromItem(stack.getItem) == Blocks.JUKEBOX)
+ if (!stack.isEmpty && Block.getBlockFromItem(stack.getItem) == Blocks.JUKEBOX)
classOf[Environment]
else null
}
diff --git a/src/main/scala/li/cil/oc/integration/opencomputers/DriverTablet.scala b/src/main/scala/li/cil/oc/integration/opencomputers/DriverTablet.scala
index 594ee66e9..850705180 100644
--- a/src/main/scala/li/cil/oc/integration/opencomputers/DriverTablet.scala
+++ b/src/main/scala/li/cil/oc/integration/opencomputers/DriverTablet.scala
@@ -23,7 +23,7 @@ object DriverTablet extends Item {
Tablet.Server.cache.invalidate(Tablet.getId(stack))
val data = new TabletData(stack)
data.items.collect {
- case Some(fs) if DriverFileSystem.worksWith(fs) => fs
+ case fs if !fs.isEmpty && DriverFileSystem.worksWith(fs) => fs
}.headOption.map(DriverFileSystem.createEnvironment(_, host)) match {
case Some(environment) => environment.node match {
case component: Component =>
@@ -41,7 +41,7 @@ object DriverTablet extends Item {
override def dataTag(stack: ItemStack) = {
val data = new TabletData(stack)
val index = data.items.indexWhere {
- case Some(fs) => DriverFileSystem.worksWith(fs)
+ case fs if !fs.isEmpty => DriverFileSystem.worksWith(fs)
case _ => false
}
if (index >= 0 && stack.hasTagCompound && stack.getTagCompound.hasKey(Settings.namespace + "items")) {
diff --git a/src/main/scala/li/cil/oc/integration/util/ItemCharge.scala b/src/main/scala/li/cil/oc/integration/util/ItemCharge.scala
index a67846c87..e83f7033c 100644
--- a/src/main/scala/li/cil/oc/integration/util/ItemCharge.scala
+++ b/src/main/scala/li/cil/oc/integration/util/ItemCharge.scala
@@ -12,10 +12,10 @@ object ItemCharge {
def add(canCharge: Method, charge: Method): Unit = chargers += ((canCharge, charge))
- def canCharge(stack: ItemStack): Boolean = stack != null && chargers.exists(charger => IMC.tryInvokeStatic(charger._1, stack)(false))
+ def canCharge(stack: ItemStack): Boolean = !stack.isEmpty && chargers.exists(charger => IMC.tryInvokeStatic(charger._1, stack)(false))
def charge(stack: ItemStack, amount: Double): Double = {
- if (stack != null) chargers.find(charger => IMC.tryInvokeStatic(charger._1, stack)(false)) match {
+ if (!stack.isEmpty) chargers.find(charger => IMC.tryInvokeStatic(charger._1, stack)(false)) match {
case Some(charger) => IMC.tryInvokeStatic(charger._2, stack, Double.box(amount), java.lang.Boolean.FALSE)(0.0)
case _ => 0.0
}
diff --git a/src/main/scala/li/cil/oc/integration/util/Wrench.scala b/src/main/scala/li/cil/oc/integration/util/Wrench.scala
index d679834a6..d3f50a107 100644
--- a/src/main/scala/li/cil/oc/integration/util/Wrench.scala
+++ b/src/main/scala/li/cil/oc/integration/util/Wrench.scala
@@ -17,11 +17,11 @@ object Wrench {
def addCheck(checker: Method): Unit = checks += checker
- def isWrench(stack: ItemStack): Boolean = stack != null && checks.exists(IMC.tryInvokeStatic(_, stack)(false))
+ def isWrench(stack: ItemStack): Boolean = !stack.isEmpty && checks.exists(IMC.tryInvokeStatic(_, stack)(false))
def holdsApplicableWrench(player: EntityPlayer, position: BlockPos): Boolean =
- player.getHeldItemMainhand != null && usages.exists(IMC.tryInvokeStatic(_, player, position, java.lang.Boolean.FALSE)(false))
+ !player.getHeldItemMainhand.isEmpty && usages.exists(IMC.tryInvokeStatic(_, player, position, java.lang.Boolean.FALSE)(false))
def wrenchUsed(player: EntityPlayer, position: BlockPos): Unit =
- if (player.getHeldItemMainhand != null) usages.foreach(IMC.tryInvokeStaticVoid(_, player, position, java.lang.Boolean.TRUE))
+ if (!player.getHeldItemMainhand.isEmpty) usages.foreach(IMC.tryInvokeStaticVoid(_, player, position, java.lang.Boolean.TRUE))
}
diff --git a/src/main/scala/li/cil/oc/server/PacketSender.scala b/src/main/scala/li/cil/oc/server/PacketSender.scala
index 4673e409b..da7201543 100644
--- a/src/main/scala/li/cil/oc/server/PacketSender.scala
+++ b/src/main/scala/li/cil/oc/server/PacketSender.scala
@@ -121,9 +121,9 @@ object PacketSender {
}
// Avoid spamming the network with disk activity notices.
- val fileSystemAccessTimeouts = mutable.WeakHashMap.empty[Node, mutable.Map[String, Long]]
+ val fileSystemAccessTimeouts: mutable.WeakHashMap[Node, mutable.Map[String, Long]] = mutable.WeakHashMap.empty[Node, mutable.Map[String, Long]]
- def sendFileSystemActivity(node: Node, host: EnvironmentHost, name: String) = fileSystemAccessTimeouts.synchronized {
+ def sendFileSystemActivity(node: Node, host: EnvironmentHost, name: String): Unit = fileSystemAccessTimeouts.synchronized {
fileSystemAccessTimeouts.get(node) match {
case Some(hostTimeouts) if hostTimeouts.getOrElse(name, 0L) > System.currentTimeMillis() => // Cooldown.
case _ =>
@@ -156,7 +156,7 @@ object PacketSender {
}
}
- def sendNetworkActivity(node: Node, host: EnvironmentHost) = {
+ def sendNetworkActivity(node: Node, host: EnvironmentHost): Unit = {
val event = host match {
case t: net.minecraft.tileentity.TileEntity => new NetworkActivityEvent.Server(t, node)
@@ -467,7 +467,7 @@ object PacketSender {
pb.writeTileEntity(t)
for (slot <- 0 until t.getSizeInventory) {
- pb.writeBoolean(t.getStackInSlot(slot) != null)
+ pb.writeBoolean(!t.getStackInSlot(slot).isEmpty)
}
pb.sendToPlayersNearTileEntity(t)
diff --git a/src/main/scala/li/cil/oc/server/agent/Inventory.scala b/src/main/scala/li/cil/oc/server/agent/Inventory.scala
index cc138e6ce..a7b8c0522 100644
--- a/src/main/scala/li/cil/oc/server/agent/Inventory.scala
+++ b/src/main/scala/li/cil/oc/server/agent/Inventory.scala
@@ -3,7 +3,6 @@ package li.cil.oc.server.agent
import li.cil.oc.api.internal
import li.cil.oc.util.ExtendedInventory._
import li.cil.oc.util.InventoryUtils
-import net.minecraft.block.Block
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.item.Item
@@ -12,17 +11,19 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraft.nbt.NBTTagList
import net.minecraft.block.state.IBlockState
+import scala.collection.immutable
+
class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
- def selectedItemStack = agent.mainInventory.getStackInSlot(agent.selectedSlot)
+ def selectedItemStack: ItemStack = agent.mainInventory.getStackInSlot(agent.selectedSlot)
- def inventorySlots = (agent.selectedSlot until getSizeInventory) ++ (0 until agent.selectedSlot)
+ def inventorySlots: immutable.IndexedSeq[Int] = (agent.selectedSlot until getSizeInventory) ++ (0 until agent.selectedSlot)
- override def getCurrentItem = agent.equipmentInventory.getStackInSlot(0)
+ override def getCurrentItem: ItemStack = agent.equipmentInventory.getStackInSlot(0)
- override def getFirstEmptyStack = {
- if (selectedItemStack == null) agent.selectedSlot
- else inventorySlots.find(getStackInSlot(_) == null).getOrElse(-1)
+ override def getFirstEmptyStack: Int = {
+ if (selectedItemStack.isEmpty) agent.selectedSlot
+ else inventorySlots.find(getStackInSlot(_).isEmpty).getOrElse(-1)
}
override def changeCurrentItem(direction: Int) {}
@@ -41,68 +42,68 @@ class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
}
// override def consumeInventoryItem(item: Item): Boolean = {
-// for ((slot, stack) <- inventorySlots.map(slot => (slot, getStackInSlot(slot))) if stack != null && stack.getItem == item && stack.stackSize > 0) {
+// for ((slot, stack) <- inventorySlots.map(slot => (slot, getStackInSlot(slot))) if !stack.isEmpty && stack.getItem == item && stack.stackSize > 0) {
// stack.stackSize -= 1
// if (stack.stackSize <= 0) {
-// setInventorySlotContents(slot, null)
+// setInventorySlotContents(slot, ItemStack.EMPTY)
// }
// return true
// }
// false
// }
- override def addItemStackToInventory(stack: ItemStack) = {
+ override def addItemStackToInventory(stack: ItemStack): Boolean = {
val slots = this.indices.drop(agent.selectedSlot) ++ this.indices.take(agent.selectedSlot)
InventoryUtils.insertIntoInventory(stack, InventoryUtils.asItemHandler(this), slots = Option(slots))
}
- override def canHarvestBlock(state: IBlockState): Boolean = state.getMaterial.isToolNotRequired || (getCurrentItem != null && getCurrentItem.canHarvestBlock(state))
+ override def canHarvestBlock(state: IBlockState): Boolean = state.getMaterial.isToolNotRequired || (!getCurrentItem.isEmpty && getCurrentItem.canHarvestBlock(state))
- override def getStrVsBlock(state: IBlockState): Float = Option(getCurrentItem).fold(1f)(_.getStrVsBlock(state))
+ override def getStrVsBlock(state: IBlockState): Float = if (getCurrentItem.isEmpty) 1f else getCurrentItem.getStrVsBlock(state)
- override def writeToNBT(nbt: NBTTagList) = nbt
+ override def writeToNBT(nbt: NBTTagList): NBTTagList = nbt
override def readFromNBT(nbt: NBTTagList) {}
- override def armorItemInSlot(slot: Int) = null
+ override def armorItemInSlot(slot: Int) = ItemStack.EMPTY
override def damageArmor(damage: Float) {}
- override def dropAllItems() = {}
+ override def dropAllItems(): Unit = {}
- override def hasItemStack(stack: ItemStack) = (0 until getSizeInventory).map(getStackInSlot).filter(_ != null).exists(_.isItemEqual(stack))
+ override def hasItemStack(stack: ItemStack): Boolean = (0 until getSizeInventory).map(getStackInSlot).filter(!_.isEmpty).exists(_.isItemEqual(stack))
override def copyInventory(from: InventoryPlayer) {}
// IInventory
- override def getSizeInventory = agent.mainInventory.getSizeInventory
+ override def getSizeInventory: Int = agent.mainInventory.getSizeInventory
- override def getStackInSlot(slot: Int) =
+ override def getStackInSlot(slot: Int): ItemStack =
if (slot < 0) agent.equipmentInventory.getStackInSlot(~slot)
else agent.mainInventory.getStackInSlot(slot)
- override def decrStackSize(slot: Int, amount: Int) =
+ override def decrStackSize(slot: Int, amount: Int): ItemStack =
if (slot < 0) agent.equipmentInventory.decrStackSize(~slot, amount)
else agent.mainInventory.decrStackSize(slot, amount)
- override def removeStackFromSlot(slot: Int) =
+ override def removeStackFromSlot(slot: Int): ItemStack =
if (slot < 0) agent.equipmentInventory.removeStackFromSlot(~slot)
else agent.mainInventory.removeStackFromSlot(slot)
- override def setInventorySlotContents(slot: Int, stack: ItemStack) =
+ override def setInventorySlotContents(slot: Int, stack: ItemStack): Unit =
if (slot < 0) agent.equipmentInventory.setInventorySlotContents(~slot, stack)
else agent.mainInventory.setInventorySlotContents(slot, stack)
- override def getName = agent.mainInventory.getName
+ override def getName: String = agent.mainInventory.getName
- override def getInventoryStackLimit = agent.mainInventory.getInventoryStackLimit
+ override def getInventoryStackLimit: Int = agent.mainInventory.getInventoryStackLimit
- override def markDirty() = agent.mainInventory.markDirty()
+ override def markDirty(): Unit = agent.mainInventory.markDirty()
- override def isUsableByPlayer(player: EntityPlayer) = agent.mainInventory.isUsableByPlayer(player)
+ override def isUsableByPlayer(player: EntityPlayer): Boolean = agent.mainInventory.isUsableByPlayer(player)
- override def isItemValidForSlot(slot: Int, stack: ItemStack) =
+ override def isItemValidForSlot(slot: Int, stack: ItemStack): Boolean =
if (slot < 0) agent.equipmentInventory.isItemValidForSlot(~slot, stack)
else agent.mainInventory.isItemValidForSlot(slot, stack)
}
diff --git a/src/main/scala/li/cil/oc/server/agent/Player.scala b/src/main/scala/li/cil/oc/server/agent/Player.scala
index 16993ea0f..a7f2b7239 100644
--- a/src/main/scala/li/cil/oc/server/agent/Player.scala
+++ b/src/main/scala/li/cil/oc/server/agent/Player.scala
@@ -1,5 +1,6 @@
package li.cil.oc.server.agent
+import java.util
import java.util.UUID
import com.mojang.authlib.GameProfile
@@ -36,6 +37,7 @@ import net.minecraft.util.math.Vec3d
import net.minecraft.util.text.ITextComponent
import net.minecraft.util.text.TextComponentString
import net.minecraft.world.IInteractionObject
+import net.minecraft.world.World
import net.minecraft.world.WorldServer
import net.minecraftforge.common.ForgeHooks
import net.minecraftforge.common.MinecraftForge
@@ -51,7 +53,7 @@ import net.minecraftforge.fml.common.eventhandler.Event
import scala.collection.convert.WrapAsScala._
object Player {
- def profileFor(agent: internal.Agent) = {
+ def profileFor(agent: internal.Agent): GameProfile = {
val uuid = agent.ownerUUID
val randomId = (agent.world.rand.nextInt(0xFFFFFF) + 1).toString
val name = Settings.get.nameFormat.
@@ -60,7 +62,7 @@ object Player {
new GameProfile(uuid, name)
}
- def determineUUID(playerUUID: Option[UUID] = None) = {
+ def determineUUID(playerUUID: Option[UUID] = None): UUID = {
val format = Settings.get.uuidFormat
val randomUUID = UUID.randomUUID()
try UUID.fromString(format.
@@ -115,16 +117,16 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
// ----------------------------------------------------------------------- //
- def closestEntity[Type <: Entity](clazz: Class[Type], side: EnumFacing = facing) = {
+ def closestEntity[Type <: Entity](clazz: Class[Type], side: EnumFacing = facing): Option[Entity] = {
val bounds = BlockPosition(agent).offset(side).bounds
Option(world.findNearestEntityWithinAABB(clazz, bounds, this))
}
- def entitiesOnSide[Type <: Entity](clazz: Class[Type], side: EnumFacing) = {
+ def entitiesOnSide[Type <: Entity](clazz: Class[Type], side: EnumFacing): util.List[Type] = {
entitiesInBlock(clazz, BlockPosition(agent).offset(side))
}
- def entitiesInBlock[Type <: Entity](clazz: Class[Type], blockPos: BlockPosition) = {
+ def entitiesInBlock[Type <: Entity](clazz: Class[Type], blockPos: BlockPosition): util.List[Type] = {
world.getEntitiesWithinAABB(clazz, blockPos.bounds)
}
@@ -166,12 +168,12 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
}
if(!cancel && callUsingItemInSlot(agent.equipmentInventory, 0, stack => {
val result = isItemUseAllowed(stack) && (entity.processInitialInteract(this, EnumHand.MAIN_HAND) || (entity match {
- case living: EntityLivingBase if getHeldItemMainhand != null => getHeldItemMainhand.interactWithEntity(this, living, EnumHand.MAIN_HAND)
+ case living: EntityLivingBase if !getHeldItemMainhand.isEmpty => getHeldItemMainhand.interactWithEntity(this, living, EnumHand.MAIN_HAND)
case _ => false
}))
- if (getHeldItemMainhand != null && getHeldItemMainhand.getCount <= 0) {
+ if (!getHeldItemMainhand.isEmpty && getHeldItemMainhand.getCount <= 0) {
val orig = getHeldItemMainhand
- this.inventory.setInventorySlotContents(this.inventory.currentItem, null)
+ this.inventory.setInventorySlotContents(this.inventory.currentItem, ItemStack.EMPTY)
ForgeEventFactory.onPlayerDestroyItem(this, orig, EnumHand.MAIN_HAND)
}
result
@@ -184,7 +186,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
return ActivationType.None
}
- val item = if (stack != null) stack.getItem else null
+ val item = if (!stack.isEmpty) stack.getItem else null
if (item != null && item.onItemUseFirst(this, world, pos, side, hitX, hitY, hitZ, EnumHand.MAIN_HAND) == EnumActionResult.SUCCESS) {
return ActivationType.ItemUsed
}
@@ -227,7 +229,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
event
}
- def useEquippedItem(duration: Double) = {
+ def useEquippedItem(duration: Double): Boolean = {
callUsingItemInSlot(agent.equipmentInventory, 0, stack => {
if (!shouldCancel(() => fireRightClickAir())) {
tryUseItem(stack, duration)
@@ -238,9 +240,9 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
private def tryUseItem(stack: ItemStack, duration: Double) = {
stopActiveHand()
- stack != null && stack.getCount > 0 && isItemUseAllowed(stack) && {
+ !stack.isEmpty && stack.getCount > 0 && isItemUseAllowed(stack) && {
val oldSize = stack.getCount
- val oldDamage = if (stack != null) stack.getItemDamage else 0
+ val oldDamage = if (!stack.isEmpty) stack.getItemDamage else 0
val oldData = if (stack.hasTagCompound) stack.getTagCompound.copy() else null
val heldTicks = Math.max(0, Math.min(stack.getMaxItemUseDuration, (duration * 20).toInt))
// Change the offset at which items are used, to avoid hitting
@@ -264,7 +266,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
def sizeOrDamageChanged = newStack.getCount != oldSize || newStack.getItemDamage != oldDamage
def tagChanged = (oldData == null && newStack.hasTagCompound) || (oldData != null && !newStack.hasTagCompound) ||
(oldData != null && newStack.hasTagCompound && !oldData.equals(newStack.getTagCompound))
- val stackChanged = newStack != stack || (newStack != null && (sizeOrDamageChanged || tagChanged))
+ val stackChanged = newStack != stack || (!newStack.isEmpty && (sizeOrDamageChanged || tagChanged))
if (stackChanged) {
agent.equipmentInventory.setInventorySlotContents(0, newStack)
}
@@ -350,7 +352,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
posY -= 1.62
prevPosY = posY
}
- val cancel = stack != null && stack.getItem.onBlockStartBreak(stack, pos, this)
+ val cancel = !stack.isEmpty && stack.getItem.onBlockStartBreak(stack, pos, this)
if (cancel && needsSpecialPlacement) {
posY += 1.62
prevPosY = posY
@@ -369,7 +371,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
world.playEvent(this, 2001, pos, Block.getIdFromBlock(block) + (metadata << 12))
- if (stack != null) {
+ if (!stack.isEmpty) {
stack.onBlockDestroyed(world, state, pos, this)
}
@@ -382,7 +384,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
block.harvestBlock(world, this, pos, state, te, stack)
MinecraftForge.EVENT_BUS.post(new RobotBreakBlockEvent.Post(agent, breakEvent.getExpToDrop))
}
- else if (stack != null) {
+ else if (!stack.isEmpty) {
MinecraftForge.EVENT_BUS.post(new RobotBreakBlockEvent.Post(agent, 0))
}
return adjustedBreakTime
@@ -391,7 +393,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
})
}
- private def isItemUseAllowed(stack: ItemStack) = stack == null || {
+ private def isItemUseAllowed(stack: ItemStack) = stack.isEmpty || {
(Settings.get.allowUseItemsWithDuration || stack.getMaxItemUseDuration <= 0) && !stack.isItemEqual(new ItemStack(Items.LEAD))
}
@@ -419,7 +421,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
private def callUsingItemInSlot[T](inventory: IInventory, slot: Int, f: (ItemStack) => T, repair: Boolean = true) = {
val itemsBefore = adjacentItems
val stack = inventory.getStackInSlot(slot)
- val oldStack = if (stack != null) stack.copy() else null
+ val oldStack = if (!stack.isEmpty) stack.copy() else null
this.inventory.currentItem = if (inventory == agent.mainInventory) slot else ~slot
try {
f(stack)
@@ -427,9 +429,9 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
finally {
this.inventory.currentItem = 0
val newStack = inventory.getStackInSlot(slot)
- if (newStack != null) {
+ if (!newStack.isEmpty) {
if (newStack.getCount <= 0) {
- inventory.setInventorySlotContents(slot, null)
+ inventory.setInventorySlotContents(slot, ItemStack.EMPTY)
}
if (repair) {
if (newStack.getCount > 0) tryRepair(newStack, oldStack)
@@ -442,7 +444,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
private def tryRepair(stack: ItemStack, oldStack: ItemStack) {
// Only if the underlying type didn't change.
- if (stack != null && oldStack != null && stack.getItem == oldStack.getItem) {
+ if (!stack.isEmpty && !oldStack.isEmpty && stack.getItem == oldStack.getItem) {
val damageRate = new RobotUsedToolEvent.ComputeDamageRate(agent, oldStack, stack, Settings.get.itemDamageRate)
MinecraftForge.EVENT_BUS.post(damageRate)
if (damageRate.getDamageRate < 1) {
@@ -452,7 +454,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
}
private def tryPlaceBlockWhileHandlingFunnySpecialCases(stack: ItemStack, pos: BlockPos, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = {
- stack != null && stack.getCount > 0 && {
+ !stack.isEmpty && stack.getCount > 0 && {
val event = new RobotPlaceBlockEvent.Pre(agent, stack, world, pos)
MinecraftForge.EVENT_BUS.post(event)
if (event.isCanceled) false
@@ -508,7 +510,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
}
}
- override def canAttackPlayer(player: EntityPlayer) = Settings.get.canAttackPlayers
+ override def canAttackPlayer(player: EntityPlayer): Boolean = Settings.get.canAttackPlayers
override def canEat(value: Boolean) = false
@@ -522,7 +524,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
override def setHealth(value: Float) {}
- override def setDead() = isDead = true
+ override def setDead(): Unit = isDead = true
override def onLivingUpdate() {}
@@ -562,7 +564,7 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
// ----------------------------------------------------------------------- //
class DamageOverTime(val player: Player, val pos: BlockPos, val side: EnumFacing, val ticksTotal: Int) {
- val world = player.world
+ val world: World = player.world
var ticks = 0
var lastDamageSent = 0
diff --git a/src/main/scala/li/cil/oc/server/command/NonDisassemblyAgreementCommand.scala b/src/main/scala/li/cil/oc/server/command/NonDisassemblyAgreementCommand.scala
index f3c904e4a..8812711dd 100644
--- a/src/main/scala/li/cil/oc/server/command/NonDisassemblyAgreementCommand.scala
+++ b/src/main/scala/li/cil/oc/server/command/NonDisassemblyAgreementCommand.scala
@@ -19,7 +19,7 @@ object NonDisassemblyAgreementCommand extends SimpleCommand("oc_preventDisassemb
source match {
case player: EntityPlayer =>
val stack = player.getHeldItemMainhand
- if (stack != null) {
+ if (!stack.isEmpty) {
if (!stack.hasTagCompound) {
stack.setTagCompound(new NBTTagCompound())
}
diff --git a/src/main/scala/li/cil/oc/server/component/Agent.scala b/src/main/scala/li/cil/oc/server/component/Agent.scala
index 09554b2be..9c3db094d 100644
--- a/src/main/scala/li/cil/oc/server/component/Agent.scala
+++ b/src/main/scala/li/cil/oc/server/component/Agent.scala
@@ -3,6 +3,7 @@ package li.cil.oc.server.component
import li.cil.oc.Settings
import li.cil.oc.api.event.RobotPlaceInAirEvent
import li.cil.oc.api.internal
+import li.cil.oc.api.internal.MultiTank
import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
@@ -16,6 +17,8 @@ import li.cil.oc.util.InventoryUtils
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
import net.minecraft.entity.item.EntityMinecart
+import net.minecraft.entity.player.EntityPlayer
+import net.minecraft.inventory.IInventory
import net.minecraft.util.EnumActionResult
import net.minecraft.util.EnumFacing
import net.minecraft.util.EnumHand
@@ -31,9 +34,9 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
override def position = BlockPosition(agent)
- override def fakePlayer = agent.player
+ override def fakePlayer: EntityPlayer = agent.player
- protected def rotatedPlayer(facing: EnumFacing = agent.facing, side: EnumFacing = agent.facing) = {
+ protected def rotatedPlayer(facing: EnumFacing = agent.facing, side: EnumFacing = agent.facing): Player = {
val player = agent.player.asInstanceOf[Player]
Player.updatePositionAndRotation(player, facing, side)
player
@@ -41,23 +44,23 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
// ----------------------------------------------------------------------- //
- override def inventory = agent.mainInventory
+ override def inventory: IInventory = agent.mainInventory
- override def selectedSlot = agent.selectedSlot
+ override def selectedSlot: Int = agent.selectedSlot
override def selectedSlot_=(value: Int): Unit = agent.setSelectedSlot(value)
// ----------------------------------------------------------------------- //
- override def tank = agent.tank
+ override def tank: MultiTank = agent.tank
- def selectedTank = agent.selectedTank
+ def selectedTank: Int = agent.selectedTank
- override def selectedTank_=(value: Int) = agent.setSelectedTank(value)
+ override def selectedTank_=(value: Int): Unit = agent.setSelectedTank(value)
// ----------------------------------------------------------------------- //
- def canPlaceInAir = {
+ def canPlaceInAir: Boolean = {
val event = new RobotPlaceInAirEvent(agent)
MinecraftForge.EVENT_BUS.post(event)
event.isAllowed
@@ -245,7 +248,7 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
}
val sneaky = args.isBoolean(2) && args.checkBoolean(2)
val stack = agent.mainInventory.getStackInSlot(agent.selectedSlot)
- if (stack == null || stack.getCount == 0) {
+ if (stack.isEmpty) {
return result(Unit, "nothing selected")
}
@@ -288,9 +291,9 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
// ----------------------------------------------------------------------- //
- protected def checkSideForFace(args: Arguments, n: Int, facing: EnumFacing) = agent.toGlobal(args.checkSideForFace(n, agent.toLocal(facing)))
+ protected def checkSideForFace(args: Arguments, n: Int, facing: EnumFacing): EnumFacing = agent.toGlobal(args.checkSideForFace(n, agent.toLocal(facing)))
- protected def pick(player: Player, range: Double) = {
+ protected def pick(player: Player, range: Double): RayTraceResult = {
val origin = new Vec3d(
player.posX + player.facing.getFrontOffsetX * 0.5,
player.posY + player.facing.getFrontOffsetY * 0.5,
@@ -310,14 +313,14 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
}
}
- protected def clickParamsFromHit(hit: RayTraceResult) = {
+ protected def clickParamsFromHit(hit: RayTraceResult): (BlockPos, Float, Float, Float) = {
(hit.getBlockPos,
(hit.hitVec.xCoord - hit.getBlockPos.getX).toFloat,
(hit.hitVec.yCoord - hit.getBlockPos.getY).toFloat,
(hit.hitVec.zCoord - hit.getBlockPos.getZ).toFloat)
}
- protected def clickParamsForItemUse(facing: EnumFacing, side: EnumFacing) = {
+ protected def clickParamsForItemUse(facing: EnumFacing, side: EnumFacing): (BlockPos, Float, Float, Float) = {
val blockPos = position.offset(facing).offset(side)
(blockPos.toBlockPos,
0.5f - side.getFrontOffsetX * 0.5f,
@@ -325,7 +328,7 @@ trait Agent extends traits.WorldControl with traits.InventoryControl with traits
0.5f - side.getFrontOffsetZ * 0.5f)
}
- protected def clickParamsForPlace(facing: EnumFacing) = {
+ protected def clickParamsForPlace(facing: EnumFacing): (BlockPos, Float, Float, Float) = {
(position.toBlockPos,
0.5f + facing.getFrontOffsetX * 0.5f,
0.5f + facing.getFrontOffsetY * 0.5f,
diff --git a/src/main/scala/li/cil/oc/server/component/DebugCard.scala b/src/main/scala/li/cil/oc/server/component/DebugCard.scala
index b7ae1f060..cce4c144a 100644
--- a/src/main/scala/li/cil/oc/server/component/DebugCard.scala
+++ b/src/main/scala/li/cil/oc/server/component/DebugCard.scala
@@ -7,6 +7,7 @@ import li.cil.oc.api.Network
import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
+import li.cil.oc.api.network.ComponentConnector
import li.cil.oc.api.network.Environment
import li.cil.oc.api.network.EnvironmentHost
import li.cil.oc.api.network.Node
@@ -37,6 +38,7 @@ import net.minecraft.util.EnumFacing
import net.minecraft.util.ResourceLocation
import net.minecraft.util.SoundCategory
import net.minecraft.util.math.BlockPos
+import net.minecraft.util.math.Vec3d
import net.minecraft.util.text.ITextComponent
import net.minecraft.world.GameType
import net.minecraft.world.World
@@ -55,7 +57,7 @@ import scala.collection.convert.WrapAsScala._
import scala.collection.mutable
class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment with DebugNode {
- override val node = Network.newNode(this, Visibility.Neighbors).
+ override val node: ComponentConnector = Network.newNode(this, Visibility.Neighbors).
withComponent("debug").
withConnector().
create()
@@ -69,7 +71,7 @@ class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment with De
// Player this card is bound to (if any) to use for permissions.
implicit var access: Option[AccessContext] = None
- def player = access.map(_.player)
+ def player: Option[String] = access.map(_.player)
private lazy val CommandSender = {
def defaultFakePlayer = FakePlayerFactory.get(host.world.asInstanceOf[WorldServer], Settings.get.fakePlayerProfile)
@@ -289,7 +291,7 @@ class DebugCard(host: EnvironmentHost) extends prefab.ManagedEnvironment with De
}
object DebugCard {
- def checkAccess()(implicit ctx: Option[AccessContext]) =
+ def checkAccess()(implicit ctx: Option[AccessContext]): Unit =
for (msg <- Settings.get.debugCardAccess.checkAccess(ctx))
throw new Exception(msg)
@@ -322,7 +324,7 @@ object DebugCard {
// ----------------------------------------------------------------------- //
- def withPlayer(f: (EntityPlayerMP) => Array[AnyRef]) = {
+ def withPlayer(f: (EntityPlayerMP) => Array[AnyRef]): Array[AnyRef] = {
checkAccess()
FMLCommonHandler.instance.getMinecraftServerInstance.getPlayerList.getPlayerByUsername(name) match {
case player: EntityPlayerMP => f(player)
@@ -436,8 +438,8 @@ object DebugCard {
}
class ScoreboardValue(world: Option[World])(implicit var ctx: Option[AccessContext]) extends prefab.AbstractValue {
- var scoreboard = world.fold(null: Scoreboard)(_.getScoreboard)
- var dimension = world.fold(0)(_.provider.getDimension)
+ var scoreboard: Scoreboard = world.fold(null: Scoreboard)(_.getScoreboard)
+ var dimension: Int = world.fold(0)(_.provider.getDimension)
def this() = this(None)(None) // For loading.
@@ -520,7 +522,7 @@ object DebugCard {
val name = args.checkString(0)
val objective = scoreboard.getObjective(args.checkString(1))
val score = scoreboard.getOrCreateScore(name, objective)
- result(score.getScorePoints())
+ result(score.getScorePoints)
}
@Callback(doc = """function(playerName:string, objectiveName:string, score:int) - Increases the score of a player for a certain objective""")
@@ -782,7 +784,7 @@ object DebugCard {
val slot = args.checkSlot(inventory, 3)
val count = args.optInteger(4, 64)
val removed = inventory.extractItem(slot, count, false)
- if (removed == null) result(0)
+ if (removed.isEmpty) result(0)
else result(removed.getCount)
case _ => result(Unit, "no inventory")
}
@@ -845,21 +847,21 @@ object DebugCard {
messages = None
}
- override def getName = underlying.getName
+ override def getName: String = underlying.getName
- override def getEntityWorld = host.world
+ override def getEntityWorld: World = host.world
override def sendMessage(message: ITextComponent) {
messages = Option(messages.fold("")(_ + "\n") + message.getUnformattedText)
}
- override def getDisplayName = underlying.getDisplayName
+ override def getDisplayName: ITextComponent = underlying.getDisplayName
- override def setCommandStat(`type`: Type, amount: Int) = underlying.setCommandStat(`type`, amount)
+ override def setCommandStat(`type`: Type, amount: Int): Unit = underlying.setCommandStat(`type`, amount)
- override def getPosition = underlying.getPosition
+ override def getPosition: BlockPos = underlying.getPosition
- override def canUseCommand(level: Int, commandName: String) = {
+ override def canUseCommand(level: Int, commandName: String): Boolean = {
val profile = underlying.getGameProfile
val server = underlying.mcServer
val config = server.getPlayerList
@@ -869,11 +871,11 @@ object DebugCard {
}))
}
- override def getCommandSenderEntity = underlying
+ override def getCommandSenderEntity: EntityPlayerMP = underlying
- override def getPositionVector = underlying.getPositionVector
+ override def getPositionVector: Vec3d = underlying.getPositionVector
- override def sendCommandFeedback() = underlying.sendCommandFeedback()
+ override def sendCommandFeedback(): Boolean = underlying.sendCommandFeedback()
}
class TestValue extends AbstractValue {
diff --git a/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala b/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala
index 2353af74f..e96f02907 100644
--- a/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala
+++ b/src/main/scala/li/cil/oc/server/component/DiskDriveMountable.scala
@@ -38,7 +38,7 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre
// Stored for filling data packet when queried.
var lastAccess = 0L
- def filesystemNode = components(0) match {
+ def filesystemNode: Option[Node] = components(0) match {
case Some(environment) => Option(environment.node)
case _ => None
}
@@ -58,7 +58,7 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre
// ----------------------------------------------------------------------- //
// Environment
- override val node = api.Network.newNode(this, Visibility.Network).
+ override val node: Component = api.Network.newNode(this, Visibility.Network).
withComponent("disk_drive").
create()
@@ -71,7 +71,7 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre
def eject(context: Context, args: Arguments): Array[AnyRef] = {
val velocity = args.optDouble(0, 0) max 0 min 1
val ejected = decrStackSize(0, 1)
- if (ejected != null && ejected.getCount > 0) {
+ if (!ejected.isEmpty) {
val entity = InventoryUtils.spawnStackInWorld(BlockPosition(rack), ejected, Option(rack.facing))
if (entity != null) {
val vx = rack.facing.getFrontOffsetX * velocity
@@ -87,7 +87,7 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre
// ----------------------------------------------------------------------- //
// Analyzable
- override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = filesystemNode.fold(null: Array[Node])(Array(_))
+ override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float): Array[Node] = filesystemNode.fold(null: Array[Node])(Array(_))
// ----------------------------------------------------------------------- //
// ItemStackInventory
@@ -168,7 +168,7 @@ class DiskDriveMountable(val rack: api.internal.Rack, val slot: Int) extends pre
override def onActivate(player: EntityPlayer, hand: EnumHand, heldItem: ItemStack, hitX: Float, hitY: Float): Boolean = {
if (player.isSneaking) {
- val isDiskInDrive = getStackInSlot(0) != null
+ val isDiskInDrive = !getStackInSlot(0).isEmpty
val isHoldingDisk = isItemValidForSlot(0, heldItem)
if (isDiskInDrive) {
if (!rack.world.isRemote) {
diff --git a/src/main/scala/li/cil/oc/server/component/Geolyzer.scala b/src/main/scala/li/cil/oc/server/component/Geolyzer.scala
index 147523c90..f21423b19 100644
--- a/src/main/scala/li/cil/oc/server/component/Geolyzer.scala
+++ b/src/main/scala/li/cil/oc/server/component/Geolyzer.scala
@@ -134,7 +134,7 @@ class Geolyzer(val host: EnvironmentHost) extends prefab.ManagedEnvironment with
val stack = new ItemStack(item, 1, damage)
DatabaseAccess.withDatabase(node, args.checkString(1), database => {
val toSlot = args.checkSlot(database.data, 2)
- val nonEmpty = database.getStackInSlot(toSlot) != null
+ val nonEmpty = database.getStackInSlot(toSlot) != ItemStack.EMPTY // not the same as isEmpty! zero size stacks!
database.setStackInSlot(toSlot, stack)
result(nonEmpty)
})
diff --git a/src/main/scala/li/cil/oc/server/component/Server.scala b/src/main/scala/li/cil/oc/server/component/Server.scala
index 1f98099a8..6710a8695 100644
--- a/src/main/scala/li/cil/oc/server/component/Server.scala
+++ b/src/main/scala/li/cil/oc/server/component/Server.scala
@@ -12,6 +12,8 @@ import li.cil.oc.api.Machine
import li.cil.oc.api.component.RackBusConnectable
import li.cil.oc.api.driver.DeviceInfo
import li.cil.oc.api.internal
+import li.cil.oc.api.internal.Rack
+import li.cil.oc.api.machine
import li.cil.oc.api.machine.MachineHost
import li.cil.oc.api.network.Analyzable
import li.cil.oc.api.network.Environment
@@ -33,15 +35,16 @@ import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.util.EnumFacing
import net.minecraft.util.EnumHand
+import net.minecraft.world.World
import net.minecraftforge.common.capabilities.Capability
import net.minecraftforge.common.capabilities.ICapabilityProvider
import scala.collection.convert.WrapAsJava._
class Server(val rack: api.internal.Rack, val slot: Int) extends Environment with MachineHost with ServerInventory with ComponentInventory with Analyzable with internal.Server with ICapabilityProvider with DeviceInfo {
- lazy val machine = Machine.create(this)
+ lazy val machine: api.machine.Machine = Machine.create(this)
- val node = if (!rack.world.isRemote) machine.node else null
+ val node: Node = if (!rack.world.isRemote) machine.node else null
var wasRunning = false
var hadErrored = false
@@ -96,32 +99,32 @@ class Server(val rack: api.internal.Rack, val slot: Int) extends Environment wit
// MachineHost
override def internalComponents(): Iterable[ItemStack] = (0 until getSizeInventory).collect {
- case i if getStackInSlot(i) != null && isComponentSlot(i, getStackInSlot(i)) => getStackInSlot(i)
+ case i if !getStackInSlot(i).isEmpty && isComponentSlot(i, getStackInSlot(i)) => getStackInSlot(i)
}
- override def componentSlot(address: String) = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
+ override def componentSlot(address: String): Int = components.indexWhere(_.exists(env => env.node != null && env.node.address == address))
- override def onMachineConnect(node: Node) = onConnect(node)
+ override def onMachineConnect(node: Node): Unit = onConnect(node)
- override def onMachineDisconnect(node: Node) = onDisconnect(node)
+ override def onMachineDisconnect(node: Node): Unit = onDisconnect(node)
// ----------------------------------------------------------------------- //
// EnvironmentHost
- override def xPosition = rack.xPosition
+ override def xPosition: Double = rack.xPosition
- override def yPosition = rack.yPosition
+ override def yPosition: Double = rack.yPosition
- override def zPosition = rack.zPosition
+ override def zPosition: Double = rack.zPosition
- override def world = rack.world
+ override def world: World = rack.world
- override def markChanged() = rack.markChanged()
+ override def markChanged(): Unit = rack.markChanged()
// ----------------------------------------------------------------------- //
// ServerInventory
- override def tier = Delegator.subItem(container) match {
+ override def tier: Int = Delegator.subItem(container) match {
case Some(server: item.Server) => server.tier
case _ => 0
}
@@ -131,12 +134,12 @@ class Server(val rack: api.internal.Rack, val slot: Int) extends Environment wit
// ----------------------------------------------------------------------- //
// ItemStackInventory
- override def host = rack
+ override def host: Rack = rack
// ----------------------------------------------------------------------- //
// ComponentInventory
- override def container = rack.getStackInSlot(slot)
+ override def container: ItemStack = rack.getStackInSlot(slot)
override protected def connectItemNode(node: Node) {
if (node != null) {
diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala
index 14bca238a..25189b991 100644
--- a/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala
+++ b/src/main/scala/li/cil/oc/server/component/UpgradeCrafting.scala
@@ -66,7 +66,7 @@ class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends pre
val surplus = mutable.ArrayBuffer.empty[ItemStack]
for (slot <- 0 until getSizeInventory) {
val stack = getStackInSlot(slot)
- if (stack != null) {
+ if (!stack.isEmpty) {
decrStackSize(slot, 1)
val item = stack.getItem
if (item.hasContainerItem(stack)) {
@@ -74,7 +74,7 @@ class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends pre
if (container.isItemStackDamageable && container.getItemDamage > container.getMaxDamage) {
MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(host.player, container, null))
}
- else if (getStackInSlot(slot) != null) {
+ else if (!getStackInSlot(slot).isEmpty) {
surplus += container
}
else {
@@ -100,7 +100,7 @@ class UpgradeCrafting(val host: EnvironmentHost with internal.Robot) extends pre
for (slot <- 0 until getSizeInventory) {
val stack = inventory.getStackInSlot(toParentSlot(slot))
setInventorySlotContents(slot, stack)
- if (stack != null) {
+ if (!stack.isEmpty) {
amountPossible = math.min(amountPossible, stack.getCount)
}
}
diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala b/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala
index 38b5b7733..5598dc5ab 100644
--- a/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala
+++ b/src/main/scala/li/cil/oc/server/component/UpgradeDatabase.scala
@@ -64,8 +64,8 @@ class UpgradeDatabase(val data: IInventory) extends prefab.ManagedEnvironment wi
@Callback(doc = "function(slot:number):boolean -- Clears the specified slot. Returns true if there was something in the slot before.")
def clear(context: Context, args: Arguments): Array[AnyRef] = {
val slot = args.checkSlot(data, 0)
- val nonEmpty = data.getStackInSlot(slot) != null
- data.setInventorySlotContents(slot, null)
+ val nonEmpty = data.getStackInSlot(slot) != ItemStack.EMPTY // zero size stacks
+ data.setInventorySlotContents(slot, ItemStack.EMPTY)
result(nonEmpty)
}
@@ -75,7 +75,7 @@ class UpgradeDatabase(val data: IInventory) extends prefab.ManagedEnvironment wi
val entry = data.getStackInSlot(fromSlot)
def set(inventory: IInventory) = {
val toSlot = args.checkSlot(inventory, 1)
- val nonEmpty = inventory.getStackInSlot(toSlot) != null
+ val nonEmpty = inventory.getStackInSlot(toSlot) != ItemStack.EMPTY // zero size stacks
inventory.setInventorySlotContents(toSlot, entry.copy())
result(nonEmpty)
}
diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala
index 299f05303..2ddf940c8 100644
--- a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala
+++ b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala
@@ -86,7 +86,7 @@ class UpgradeExperience(val host: EnvironmentHost with internal.Agent) extends p
return result(Unit, "max level")
}
val stack = host.mainInventory.getStackInSlot(host.selectedSlot)
- if (stack == null || stack.getCount < 1) {
+ if (stack.isEmpty) {
return result(Unit, "no item")
}
var xp = 0
@@ -104,7 +104,7 @@ class UpgradeExperience(val host: EnvironmentHost with internal.Agent) extends p
}
}
val consumed = host.mainInventory().decrStackSize(host.selectedSlot, 1)
- if (consumed == null || consumed.getCount < 1) {
+ if (consumed.isEmpty) {
return result(Unit, "could not consume item")
}
addExperience(xp * Settings.get.constantXpGrowth)
diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala b/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala
index 2f4be0ba3..f84585ba9 100644
--- a/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala
+++ b/src/main/scala/li/cil/oc/server/component/UpgradeGenerator.scala
@@ -49,7 +49,7 @@ class UpgradeGenerator(val host: EnvironmentHost with internal.Agent) extends pr
def insert(context: Context, args: Arguments): Array[AnyRef] = {
val count = args.optInteger(0, 64)
val stack = host.mainInventory.getStackInSlot(host.selectedSlot)
- if (stack == null) return result(Unit, "selected slot is empty")
+ if (stack.isEmpty) return result(Unit, "selected slot is empty")
if (!TileEntityFurnace.isItemFuel(stack)) {
return result(Unit, "selected slot does not contain fuel")
}
@@ -70,7 +70,7 @@ class UpgradeGenerator(val host: EnvironmentHost with internal.Agent) extends pr
inventory = Some(stack.splitStack(math.min(stack.getCount, count)))
}
if (stack.getCount > 0) host.mainInventory.setInventorySlotContents(host.selectedSlot, stack)
- else host.mainInventory.setInventorySlotContents(host.selectedSlot, null)
+ else host.mainInventory.setInventorySlotContents(host.selectedSlot, ItemStack.EMPTY)
result(true)
}
diff --git a/src/main/scala/li/cil/oc/server/component/traits/InventoryAnalytics.scala b/src/main/scala/li/cil/oc/server/component/traits/InventoryAnalytics.scala
index bc8696af4..867ac725d 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/InventoryAnalytics.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/InventoryAnalytics.scala
@@ -8,6 +8,7 @@ import li.cil.oc.server.component.result
import li.cil.oc.util.DatabaseAccess
import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.InventoryUtils
+import net.minecraft.item.ItemStack
import net.minecraftforge.oredict.OreDictionary
trait InventoryAnalytics extends InventoryAware with NetworkAware {
@@ -35,7 +36,7 @@ trait InventoryAnalytics extends InventoryAware with NetworkAware {
val localStack = inventory.getStackInSlot(localSlot)
DatabaseAccess.withDatabase(node, dbAddress, database => {
val dbSlot = args.checkSlot(database.data, 2)
- val nonEmpty = database.getStackInSlot(dbSlot) != null
+ val nonEmpty = database.getStackInSlot(dbSlot) != ItemStack.EMPTY // zero size stacks!
database.setStackInSlot(dbSlot, localStack.copy())
result(nonEmpty)
})
diff --git a/src/main/scala/li/cil/oc/server/component/traits/InventoryAware.scala b/src/main/scala/li/cil/oc/server/component/traits/InventoryAware.scala
index b8a2d2970..e977d1015 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/InventoryAware.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/InventoryAware.scala
@@ -5,6 +5,8 @@ import li.cil.oc.util.ExtendedArguments._
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory
+import scala.collection.immutable
+
trait InventoryAware {
def fakePlayer: EntityPlayer
@@ -14,11 +16,11 @@ trait InventoryAware {
def selectedSlot_=(value: Int): Unit
- def insertionSlots = (selectedSlot until inventory.getSizeInventory) ++ (0 until selectedSlot)
+ def insertionSlots: immutable.IndexedSeq[Int] = (selectedSlot until inventory.getSizeInventory) ++ (0 until selectedSlot)
// ----------------------------------------------------------------------- //
- protected def optSlot(args: Arguments, n: Int) =
+ protected def optSlot(args: Arguments, n: Int): Int =
if (args.count > 0 && args.checkAny(0) != null) args.checkSlot(inventory, 0)
else selectedSlot
diff --git a/src/main/scala/li/cil/oc/server/component/traits/InventoryControl.scala b/src/main/scala/li/cil/oc/server/component/traits/InventoryControl.scala
index 4831948c4..04ecbe938 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/InventoryControl.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/InventoryControl.scala
@@ -6,6 +6,7 @@ import li.cil.oc.api.machine.Context
import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.InventoryUtils
import li.cil.oc.util.ResultWrapper.result
+import net.minecraft.item.ItemStack
trait InventoryControl extends InventoryAware {
@Callback(doc = "function():number -- The size of this device's internal inventory.")
@@ -65,7 +66,7 @@ trait InventoryControl extends InventoryAware {
to.grow(amount)
assert(from.getCount >= 0)
if (from.getCount == 0) {
- inventory.setInventorySlotContents(selectedSlot, null)
+ inventory.setInventorySlotContents(selectedSlot, ItemStack.EMPTY)
}
inventory.markDirty()
true
diff --git a/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControl.scala b/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControl.scala
index c585babd8..54c42d59f 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControl.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControl.scala
@@ -9,6 +9,7 @@ import li.cil.oc.util.InventoryUtils
import li.cil.oc.util.ResultWrapper.result
import net.minecraft.entity.item.EntityItem
import net.minecraft.item.ItemBlock
+import net.minecraft.item.ItemStack
import net.minecraft.util.EnumFacing
import net.minecraftforge.common.MinecraftForge
import net.minecraftforge.event.entity.item.ItemTossEvent
@@ -40,7 +41,7 @@ trait InventoryWorldControl extends InventoryAware with WorldAware with SideRest
val facing = checkSideForAction(args, 0)
val count = args.optItemCount(1)
val stack = inventory.getStackInSlot(selectedSlot)
- if (stack != null && stack.getCount > 0) {
+ if (!stack.isEmpty && stack.getCount > 0) {
val blockPos = position.offset(facing)
InventoryUtils.inventoryAt(blockPos, facing.getOpposite) match {
case Some(inv) if mayInteract(blockPos, facing.getOpposite, inv) =>
@@ -50,7 +51,7 @@ trait InventoryWorldControl extends InventoryAware with WorldAware with SideRest
}
else if (stack.getCount == 0) {
// Dropped whole stack.
- inventory.setInventorySlotContents(selectedSlot, null)
+ inventory.setInventorySlotContents(selectedSlot, ItemStack.EMPTY)
}
else {
// Dropped partial stack.
@@ -65,7 +66,7 @@ trait InventoryWorldControl extends InventoryAware with WorldAware with SideRest
val denied = event.hasResult && event.getResult == Result.DENY
!canceled && !denied
}
- if (dropped != null && dropped.getCount > 0) {
+ if (!dropped.isEmpty) {
if (InventoryUtils.spawnStackInWorld(position, dropped, Some(facing), Some(validator)) == null)
fakePlayer.inventory.addItemStackToInventory(dropped)
}
diff --git a/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControlMk2.scala b/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControlMk2.scala
index b0001e3c8..40027b20e 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControlMk2.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/InventoryWorldControlMk2.scala
@@ -8,6 +8,7 @@ import li.cil.oc.server.component.result
import li.cil.oc.util.BlockPosition
import li.cil.oc.util.ExtendedArguments._
import li.cil.oc.util.InventoryUtils
+import net.minecraft.item.ItemStack
import net.minecraft.util.EnumFacing
import net.minecraftforge.items.IItemHandler
@@ -18,7 +19,7 @@ trait InventoryWorldControlMk2 extends InventoryAware with WorldAware with SideR
val count = args.optItemCount(2)
val fromSide = args.optSideAny(3, facing.getOpposite)
val stack = inventory.getStackInSlot(selectedSlot)
- if (stack != null && stack.getCount > 0) {
+ if (!stack.isEmpty && stack.getCount > 0) {
withInventory(position.offset(facing), fromSide, inventory => {
val slot = args.checkSlot(inventory, 1)
if (!InventoryUtils.insertIntoInventorySlot(stack, inventory, slot, count)) {
@@ -27,7 +28,7 @@ trait InventoryWorldControlMk2 extends InventoryAware with WorldAware with SideR
}
else if (stack.getCount == 0) {
// Dropped whole stack.
- this.inventory.setInventorySlotContents(selectedSlot, null)
+ this.inventory.setInventorySlotContents(selectedSlot, ItemStack.EMPTY)
}
else {
// Dropped partial stack.
diff --git a/src/main/scala/li/cil/oc/server/component/traits/WorldInventoryAnalytics.scala b/src/main/scala/li/cil/oc/server/component/traits/WorldInventoryAnalytics.scala
index 30410cbc5..f7ec2c32a 100644
--- a/src/main/scala/li/cil/oc/server/component/traits/WorldInventoryAnalytics.scala
+++ b/src/main/scala/li/cil/oc/server/component/traits/WorldInventoryAnalytics.scala
@@ -64,7 +64,7 @@ trait WorldInventoryAnalytics extends WorldAware with SideRestricted with Networ
val stackA = inventory.getStackInSlot(args.checkSlot(inventory, 1))
val stackB = inventory.getStackInSlot(args.checkSlot(inventory, 2))
result(stackA == stackB ||
- (stackA != null && stackB != null &&
+ (!stackA.isEmpty && !stackB.isEmpty &&
OreDictionary.getOreIDs(stackA).intersect(OreDictionary.getOreIDs(stackB)).nonEmpty))
})
}
@@ -82,7 +82,7 @@ trait WorldInventoryAnalytics extends WorldAware with SideRestricted with Networ
val dbAddress = args.checkString(2)
def store(stack: ItemStack) = DatabaseAccess.withDatabase(node, dbAddress, database => {
val dbSlot = args.checkSlot(database.data, 3)
- val nonEmpty = database.getStackInSlot(dbSlot) != null
+ val nonEmpty = database.getStackInSlot(dbSlot) != ItemStack.EMPTY // zero size stacks
database.setStackInSlot(dbSlot, stack.copy())
result(nonEmpty)
})
diff --git a/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala b/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala
index 108320b0e..ff6ac345e 100644
--- a/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala
+++ b/src/main/scala/li/cil/oc/server/driver/CompoundBlockDriver.scala
@@ -12,28 +12,22 @@ import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.World
-// TODO Remove blocks in OC 1.7.
-class CompoundBlockDriver(val sidedBlocks: Array[driver.SidedBlock], val blocks: Array[driver.Block]) extends driver.SidedBlock {
- override def createEnvironment(world: World, pos: BlockPos, side: EnumFacing) = {
+class CompoundBlockDriver(val sidedBlocks: Array[driver.SidedBlock]) extends driver.SidedBlock {
+ override def createEnvironment(world: World, pos: BlockPos, side: EnumFacing): CompoundBlockEnvironment = {
val list = sidedBlocks.map {
driver => Option(driver.createEnvironment(world, pos, side)) match {
case Some(environment) => (driver.getClass.getName, environment)
case _ => null
}
- } ++ blocks.map {
- driver => Option(driver.createEnvironment(world, pos)) match {
- case Some(environment) => (driver.getClass.getName, environment)
- case _ => null
- }
} filter (_ != null)
if (list.isEmpty) null
else new CompoundBlockEnvironment(cleanName(tryGetName(world, pos, list.map(_._2))), list: _*)
}
- override def worksWith(world: World, pos: BlockPos, side: EnumFacing) = sidedBlocks.forall(_.worksWith(world, pos, side)) && blocks.forall(_.worksWith(world, pos))
+ override def worksWith(world: World, pos: BlockPos, side: EnumFacing): Boolean = sidedBlocks.forall(_.worksWith(world, pos, side))
- override def equals(obj: Any) = obj match {
- case multi: CompoundBlockDriver if multi.sidedBlocks.length == sidedBlocks.length && multi.blocks.length == blocks.length => sidedBlocks.intersect(multi.sidedBlocks).length == sidedBlocks.length && blocks.intersect(multi.blocks).length == blocks.length
+ override def equals(obj: Any): Boolean = obj match {
+ case multi: CompoundBlockDriver if multi.sidedBlocks.length == sidedBlocks.length => sidedBlocks.intersect(multi.sidedBlocks).length == sidedBlocks.length
case _ => false
}
diff --git a/src/main/scala/li/cil/oc/server/driver/Registry.scala b/src/main/scala/li/cil/oc/server/driver/Registry.scala
index 8d7b64752..e08c670f9 100644
--- a/src/main/scala/li/cil/oc/server/driver/Registry.scala
+++ b/src/main/scala/li/cil/oc/server/driver/Registry.scala
@@ -7,10 +7,11 @@ import li.cil.oc.api
import li.cil.oc.api.driver.Converter
import li.cil.oc.api.driver.EnvironmentProvider
import li.cil.oc.api.driver.InventoryProvider
+import li.cil.oc.api.driver.Item
+import li.cil.oc.api.driver.SidedBlock
import li.cil.oc.api.driver.item.HostAware
import li.cil.oc.api.machine.Value
import li.cil.oc.api.network.EnvironmentHost
-import li.cil.oc.api.network.ManagedEnvironment
import li.cil.oc.util.InventoryUtils
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory
@@ -24,6 +25,7 @@ import net.minecraftforge.items.IItemHandler
import scala.collection.convert.WrapAsJava._
import scala.collection.convert.WrapAsScala._
import scala.collection.mutable
+import scala.collection.mutable.ArrayBuffer
import scala.math.ScalaNumber
/**
@@ -41,31 +43,21 @@ import scala.math.ScalaNumber
* the computer, but may also provide context-free functions.
*/
private[oc] object Registry extends api.detail.DriverAPI {
- val blocks = mutable.ArrayBuffer.empty[api.driver.Block]
+ val sidedBlocks: ArrayBuffer[SidedBlock] = mutable.ArrayBuffer.empty[api.driver.SidedBlock]
- val sidedBlocks = mutable.ArrayBuffer.empty[api.driver.SidedBlock]
+ val items: ArrayBuffer[Item] = mutable.ArrayBuffer.empty[api.driver.Item]
- val items = mutable.ArrayBuffer.empty[api.driver.Item]
+ val converters: ArrayBuffer[Converter] = mutable.ArrayBuffer.empty[api.driver.Converter]
- val converters = mutable.ArrayBuffer.empty[api.driver.Converter]
+ val environmentProviders: ArrayBuffer[EnvironmentProvider] = mutable.ArrayBuffer.empty[api.driver.EnvironmentProvider]
- val environmentProviders = mutable.ArrayBuffer.empty[api.driver.EnvironmentProvider]
+ val inventoryProviders: ArrayBuffer[InventoryProvider] = mutable.ArrayBuffer.empty[api.driver.InventoryProvider]
- val inventoryProviders = mutable.ArrayBuffer.empty[api.driver.InventoryProvider]
-
- val blacklist = mutable.ArrayBuffer.empty[(ItemStack, mutable.Set[Class[_]])]
+ val blacklist: ArrayBuffer[(ItemStack, mutable.Set[Class[_]])] = mutable.ArrayBuffer.empty[(ItemStack, mutable.Set[Class[_]])]
/** Used to keep track of whether we're past the init phase. */
var locked = false
- override def add(driver: api.driver.Block) {
- if (locked) throw new IllegalStateException("Please register all drivers in the init phase.")
- if (!blocks.contains(driver)) {
- OpenComputers.log.debug(s"Registering block driver ${driver.getClass.getName}.")
- blocks += driver
- }
- }
-
override def add(driver: api.driver.SidedBlock) {
if (locked) throw new IllegalStateException("Please register all drivers in the init phase.")
if (!sidedBlocks.contains(driver)) {
@@ -106,26 +98,14 @@ private[oc] object Registry extends api.detail.DriverAPI {
}
}
- // TODO Remove in OC 1.7
- override def driverFor(world: World, pos: BlockPos) = {
- driverFor(world, pos, null) match {
- case driver: api.driver.SidedBlock => new api.driver.Block {
- override def worksWith(world: World, pos: BlockPos): Boolean = driver.worksWith(world, pos, null)
-
- override def createEnvironment(world: World, pos: BlockPos): ManagedEnvironment = driver.createEnvironment(world, pos, null)
- }
- case _ => null
- }
- }
-
override def driverFor(world: World, pos: BlockPos, side: EnumFacing): api.driver.SidedBlock =
- (sidedBlocks.filter(_.worksWith(world, pos, side)), blocks.filter(_.worksWith(world, pos))) match {
- case (sidedDrivers, drivers) if sidedDrivers.nonEmpty || drivers.nonEmpty => new CompoundBlockDriver(sidedDrivers.toArray, drivers.toArray)
+ sidedBlocks.filter(_.worksWith(world, pos, side)) match {
+ case sidedDrivers if sidedDrivers.nonEmpty => new CompoundBlockDriver(sidedDrivers.toArray)
case _ => null
}
- override def driverFor(stack: ItemStack, host: Class[_ <: EnvironmentHost]) =
- if (stack != null) {
+ override def driverFor(stack: ItemStack, host: Class[_ <: EnvironmentHost]): Item =
+ if (!stack.isEmpty) {
val hostAware = items.collect {
case driver: HostAware if driver.worksWith(stack) => driver
}
@@ -136,8 +116,8 @@ private[oc] object Registry extends api.detail.DriverAPI {
}
else null
- override def driverFor(stack: ItemStack) =
- if (stack != null) items.find(_.worksWith(stack)).orNull
+ override def driverFor(stack: ItemStack): Item =
+ if (!stack.isEmpty) items.find(_.worksWith(stack)).orNull
else null
@Deprecated
@@ -165,9 +145,7 @@ private[oc] object Registry extends api.detail.DriverAPI {
}
}
- override def blockDrivers = blocks.toSeq
-
- override def itemDrivers = items.toSeq
+ override def itemDrivers: util.List[Item] = items.toSeq
def blacklistHost(stack: ItemStack, host: Class[_]) {
blacklist.find(_._1.isItemEqual(stack)) match {
@@ -176,7 +154,7 @@ private[oc] object Registry extends api.detail.DriverAPI {
}
}
- def convert(value: Array[AnyRef]) = if (value != null) value.map(arg => convertRecursively(arg, new util.IdentityHashMap())) else null
+ def convert(value: Array[AnyRef]): Array[AnyRef] = if (value != null) value.map(arg => convertRecursively(arg, new util.IdentityHashMap())) else null
def convertRecursively(value: Any, memo: util.IdentityHashMap[AnyRef, AnyRef], force: Boolean = false): AnyRef = {
val valueRef = value match {
@@ -259,7 +237,7 @@ private[oc] object Registry extends api.detail.DriverAPI {
}
}
- def convertList(obj: AnyRef, list: Iterator[(Any, Int)], memo: util.IdentityHashMap[AnyRef, AnyRef]) = {
+ def convertList(obj: AnyRef, list: Iterator[(Any, Int)], memo: util.IdentityHashMap[AnyRef, AnyRef]): Array[AnyRef] = {
val converted = mutable.ArrayBuffer.empty[AnyRef]
memo += obj -> converted
for ((value, index) <- list) {
@@ -268,7 +246,7 @@ private[oc] object Registry extends api.detail.DriverAPI {
converted.toArray
}
- def convertMap(obj: AnyRef, map: Map[_, _], memo: util.IdentityHashMap[AnyRef, AnyRef]) = {
+ def convertMap(obj: AnyRef, map: Map[_, _], memo: util.IdentityHashMap[AnyRef, AnyRef]): AnyRef = {
val converted = memo.getOrElseUpdate(obj, mutable.Map.empty[AnyRef, AnyRef]) match {
case map: mutable.Map[AnyRef, AnyRef]@unchecked => map
case map: java.util.Map[AnyRef, AnyRef]@unchecked => mapAsScalaMap(map)
diff --git a/src/main/scala/li/cil/oc/server/fs/Buffered.scala b/src/main/scala/li/cil/oc/server/fs/Buffered.scala
index 0c1ec256a..cacb81e5b 100644
--- a/src/main/scala/li/cil/oc/server/fs/Buffered.scala
+++ b/src/main/scala/li/cil/oc/server/fs/Buffered.scala
@@ -16,7 +16,7 @@ trait Buffered extends OutputStreamFileSystem {
// ----------------------------------------------------------------------- //
- override def delete(path: String) = {
+ override def delete(path: String): Boolean = {
if (super.delete(path)) {
deletions += path -> System.currentTimeMillis()
true
@@ -24,7 +24,7 @@ trait Buffered extends OutputStreamFileSystem {
else false
}
- override def rename(from: String, to: String) = {
+ override def rename(from: String, to: String): Boolean = {
if (super.rename(from, to)) {
deletions += from -> System.currentTimeMillis()
true
@@ -34,7 +34,7 @@ trait Buffered extends OutputStreamFileSystem {
// ----------------------------------------------------------------------- //
- override def load(nbt: NBTTagCompound) = {
+ override def load(nbt: NBTTagCompound): Unit = {
def recurse(path: String, directory: io.File) {
makeDirectory(path)
for (child <- directory.listFiles() if FileSystem.isValidFilename(child.getName)) {
@@ -78,7 +78,7 @@ trait Buffered extends OutputStreamFileSystem {
super.load(nbt)
}
- override def save(nbt: NBTTagCompound) = {
+ override def save(nbt: NBTTagCompound): Unit = {
super.save(nbt)
for ((path, time) <- deletions) {
diff --git a/src/main/scala/li/cil/oc/server/fs/CompositeReadOnlyFileSystem.scala b/src/main/scala/li/cil/oc/server/fs/CompositeReadOnlyFileSystem.scala
index ec717ebb2..d8e455353 100644
--- a/src/main/scala/li/cil/oc/server/fs/CompositeReadOnlyFileSystem.scala
+++ b/src/main/scala/li/cil/oc/server/fs/CompositeReadOnlyFileSystem.scala
@@ -4,6 +4,7 @@ import java.io.FileNotFoundException
import java.util.concurrent.Callable
import li.cil.oc.api
+import li.cil.oc.api.fs.Handle
import li.cil.oc.api.fs.Mode
import li.cil.oc.util.ExtendedNBT._
import net.minecraft.nbt.NBTTagCompound
@@ -11,7 +12,7 @@ import net.minecraft.nbt.NBTTagCompound
import scala.collection.mutable
class CompositeReadOnlyFileSystem(factories: mutable.LinkedHashMap[String, Callable[api.fs.FileSystem]]) extends api.fs.FileSystem {
- var parts = mutable.LinkedHashMap.empty[String, api.fs.FileSystem]
+ var parts: mutable.LinkedHashMap[String, api.fs.FileSystem] = mutable.LinkedHashMap.empty[String, api.fs.FileSystem]
for ((name, factory) <- factories) {
val fs = factory.call()
if (fs != null) {
@@ -23,21 +24,21 @@ class CompositeReadOnlyFileSystem(factories: mutable.LinkedHashMap[String, Calla
override def isReadOnly = true
- override def spaceTotal = math.max(spaceUsed, parts.values.map(_.spaceTotal).sum)
+ override def spaceTotal: Long = math.max(spaceUsed, parts.values.map(_.spaceTotal).sum)
- override def spaceUsed = parts.values.map(_.spaceUsed).sum
+ override def spaceUsed: Long = parts.values.map(_.spaceUsed).sum
// ----------------------------------------------------------------------- //
- override def exists(path: String) = findFileSystem(path).isDefined
+ override def exists(path: String): Boolean = findFileSystem(path).isDefined
- override def size(path: String) = findFileSystem(path).fold(0L)(_.size(path))
+ override def size(path: String): Long = findFileSystem(path).fold(0L)(_.size(path))
- override def isDirectory(path: String) = findFileSystem(path).fold(false)(_.isDirectory(path))
+ override def isDirectory(path: String): Boolean = findFileSystem(path).fold(false)(_.isDirectory(path))
- override def lastModified(path: String) = findFileSystem(path).fold(0L)(_.lastModified(path))
+ override def lastModified(path: String): Long = findFileSystem(path).fold(0L)(_.lastModified(path))
- override def list(path: String) = if (isDirectory(path)) {
+ override def list(path: String): Array[String] = if (isDirectory(path)) {
parts.values.foldLeft(mutable.Set.empty[String])((acc, fs) => {
if (fs.exists(path)) try {
val l = fs.list(path)
@@ -70,14 +71,14 @@ class CompositeReadOnlyFileSystem(factories: mutable.LinkedHashMap[String, Calla
// ----------------------------------------------------------------------- //
- override def open(path: String, mode: Mode) = findFileSystem(path) match {
+ override def open(path: String, mode: Mode): Int = findFileSystem(path) match {
case Some(fs) => fs.open(path, mode)
case _ => throw new FileNotFoundException(path)
}
- override def getHandle(handle: Int) = parts.valuesIterator.map(_.getHandle(handle)).find(_ != null).orNull
+ override def getHandle(handle: Int): Handle = parts.valuesIterator.map(_.getHandle(handle)).find(_ != null).orNull
- override def close() = parts.values.foreach(_.close())
+ override def close(): Unit = parts.values.foreach(_.close())
// ----------------------------------------------------------------------- //
diff --git a/src/main/scala/li/cil/oc/util/FontUtils.scala b/src/main/scala/li/cil/oc/util/FontUtils.scala
index 5c32324f9..006e95ab5 100644
--- a/src/main/scala/li/cil/oc/util/FontUtils.scala
+++ b/src/main/scala/li/cil/oc/util/FontUtils.scala
@@ -24,5 +24,5 @@ object FontUtils {
ba
}
- def wcwidth(ch: Int) = if (ch < 0 || ch >= widths.length) -1 else widths(ch)
+ def wcwidth(ch: Int): Int = if (ch < 0 || ch >= widths.length) -1 else widths(ch)
}
diff --git a/src/main/scala/li/cil/oc/util/InventoryUtils.scala b/src/main/scala/li/cil/oc/util/InventoryUtils.scala
index d1e52e867..22a1f4279 100644
--- a/src/main/scala/li/cil/oc/util/InventoryUtils.scala
+++ b/src/main/scala/li/cil/oc/util/InventoryUtils.scala
@@ -33,7 +33,7 @@ object InventoryUtils {
* Optionally check for equality in NBT data.
*/
def haveSameItemType(stackA: ItemStack, stackB: ItemStack, checkNBT: Boolean = false): Boolean =
- stackA != null && stackB != null &&
+ !stackA.isEmpty && !stackB.isEmpty &&
stackA.getItem == stackB.getItem &&
(!stackA.getHasSubtypes || stackA.getItemDamage == stackB.getItemDamage) &&
(!checkNBT || ItemStack.areItemStackTagsEqual(stackA, stackB))
@@ -88,7 +88,7 @@ object InventoryUtils {
* changes to the inventory the stack may come from, for example.
*/
def insertIntoInventorySlot(stack: ItemStack, inventory: IItemHandler, slot: Int, limit: Int = 64, simulate: Boolean = false): Boolean =
- (stack != null && limit > 0 && stack.getCount > 0) && {
+ (!stack.isEmpty && limit > 0 && stack.getCount > 0) && {
val amount = math.min(stack.getCount, limit)
if (simulate) {
val toInsert = stack.copy()
@@ -139,7 +139,7 @@ object InventoryUtils {
*/
def extractFromInventorySlot(consumer: (ItemStack) => Unit, inventory: IItemHandler, slot: Int, limit: Int = 64): Boolean = {
val stack = inventory.getStackInSlot(slot)
- (stack != null && limit > 0 && stack.getCount > 0) && {
+ (!stack.isEmpty && limit > 0 && stack.getCount > 0) && {
var amount = math.min(stack.getMaxStackSize, math.min(stack.getCount, limit))
inventory.extractItem(slot, amount, true) match {
case extracted: ItemStack =>
@@ -177,7 +177,7 @@ object InventoryUtils {
* having its size decremented accordingly.
*/
def insertIntoInventory(stack: ItemStack, inventory: IItemHandler, limit: Int = 64, simulate: Boolean = false, slots: Option[Iterable[Int]] = None): Boolean =
- (stack != null && limit > 0 && stack.getCount > 0) && {
+ (!stack.isEmpty && limit > 0 && stack.getCount > 0) && {
var success = false
var remaining = limit
val range = slots.getOrElse(0 until inventory.getSlots)
@@ -341,7 +341,7 @@ object InventoryUtils {
for (slot <- 0 until inventory.getSizeInventory) {
Option(inventory.getStackInSlot(slot)) match {
case Some(stack) if stack.getCount > 0 =>
- inventory.setInventorySlotContents(slot, null)
+ inventory.setInventorySlotContents(slot, ItemStack.EMPTY)
spawnStackInWorld(position, stack)
case _ => // Nothing.
}
@@ -352,7 +352,7 @@ object InventoryUtils {
* Try inserting an item stack into a player inventory. If that fails, drop it into the world.
*/
def addToPlayerInventory(stack: ItemStack, player: EntityPlayer): Unit = {
- if (stack != null) {
+ if (!stack.isEmpty) {
if (player.inventory.addItemStackToInventory(stack)) {
player.inventory.markDirty()
if (player.openContainer != null) {
@@ -369,7 +369,7 @@ object InventoryUtils {
* Utility method for spawning an item stack in the world.
*/
def spawnStackInWorld(position: BlockPosition, stack: ItemStack, direction: Option[EnumFacing] = None, validator: Option[EntityItem => Boolean] = None): EntityItem = position.world match {
- case Some(world) if stack != null && stack.getCount > 0 =>
+ case Some(world) if !stack.isEmpty && stack.getCount > 0 =>
val rng = world.rand
val (ox, oy, oz) = direction.fold((0, 0, 0))(d => (d.getFrontOffsetX, d.getFrontOffsetY, d.getFrontOffsetZ))
val (tx, ty, tz) = (
diff --git a/src/main/scala/li/cil/oc/util/ItemCosts.scala b/src/main/scala/li/cil/oc/util/ItemCosts.scala
index 94f3acb91..2b082c67a 100644
--- a/src/main/scala/li/cil/oc/util/ItemCosts.scala
+++ b/src/main/scala/li/cil/oc/util/ItemCosts.scala
@@ -150,7 +150,7 @@ object ItemCosts {
// for example by components being assigned an address, which will break the
// equals check.
private def fuzzyEquals(stack1: ItemStack, stack2: ItemStack) =
- stack1 == stack2 || (stack1 != null && stack2 != null &&
+ stack1 == stack2 || (!stack1.isEmpty && !stack2.isEmpty &&
stack1.getItem == stack2.getItem &&
(stack1.getItemDamage == stack2.getItemDamage ||
stack1.getItemDamage == OreDictionary.WILDCARD_VALUE ||
diff --git a/src/main/scala/li/cil/oc/util/ItemUtils.scala b/src/main/scala/li/cil/oc/util/ItemUtils.scala
index ac154b0f8..80ed33971 100644
--- a/src/main/scala/li/cil/oc/util/ItemUtils.scala
+++ b/src/main/scala/li/cil/oc/util/ItemUtils.scala
@@ -43,7 +43,7 @@ object ItemUtils {
nbt.getCompoundTag("display").setString("Name", name)
}
- def caseTier(stack: ItemStack) = {
+ def caseTier(stack: ItemStack): Int = {
val descriptor = api.Items.get(stack)
if (descriptor == api.Items.get(Constants.BlockName.CaseTier1)) Tier.One
else if (descriptor == api.Items.get(Constants.BlockName.CaseTier2)) Tier.Two
@@ -65,20 +65,20 @@ object ItemUtils {
else Tier.None
}
- def caseNameWithTierSuffix(name: String, tier: Int) = name + (if (tier == Tier.Four) "Creative" else (tier + 1).toString)
+ def caseNameWithTierSuffix(name: String, tier: Int): String = name + (if (tier == Tier.Four) "Creative" else (tier + 1).toString)
- def loadTag(data: Array[Byte]) = {
+ def loadTag(data: Array[Byte]): NBTTagCompound = {
val bais = new ByteArrayInputStream(data)
CompressedStreamTools.readCompressed(bais)
}
- def saveStack(stack: ItemStack) = {
+ def saveStack(stack: ItemStack): Array[Byte] = {
val tag = new NBTTagCompound()
stack.writeToNBT(tag)
saveTag(tag)
}
- def saveTag(tag: NBTTagCompound) = {
+ def saveTag(tag: NBTTagCompound): Array[Byte] = {
val baos = new ByteArrayOutputStream()
CompressedStreamTools.writeCompressed(tag, baos)
baos.toByteArray
@@ -86,8 +86,7 @@ object ItemUtils {
def getIngredients(stack: ItemStack): Array[ItemStack] = try {
def getFilteredInputs(inputs: Iterable[ItemStack], outputSize: Int) = (inputs.filter(input =>
- input != null &&
- input.getItem != null &&
+ !input.isEmpty &&
input.getCount / outputSize > 0 &&
// Strip out buckets, because those are returned when crafting, and
// we have no way of returning the fluid only (and I can't be arsed
@@ -103,7 +102,7 @@ object ItemUtils {
}
val (ingredients, count) = CraftingManager.getInstance.getRecipeList.
- filter(recipe => recipe.getRecipeOutput != null && recipe.getRecipeOutput.isItemEqual(stack)).collect {
+ filter(recipe => !recipe.getRecipeOutput.isEmpty && recipe.getRecipeOutput.isItemEqual(stack)).collect {
case recipe: ShapedRecipes => getFilteredInputs(recipe.recipeItems.toIterable, getOutputSize(recipe))
case recipe: ShapelessRecipes => getFilteredInputs(recipe.recipeItems, getOutputSize(recipe))
case recipe: ShapedOreRecipe => getFilteredInputs(resolveOreDictEntries(recipe.getInput), getOutputSize(recipe))