diff --git a/api/buildcraft/api/items/IList.java b/api/buildcraft/api/items/IList.java index f7d60c2d..be1a83a0 100644 --- a/api/buildcraft/api/items/IList.java +++ b/api/buildcraft/api/items/IList.java @@ -2,7 +2,9 @@ package buildcraft.api.items; import net.minecraft.item.ItemStack; -public interface IList { +public interface IList extends INamedItem { + @Deprecated String getLabel(ItemStack stack); + boolean matches(ItemStack stackList, ItemStack item); } diff --git a/api/buildcraft/api/items/IMapLocation.java b/api/buildcraft/api/items/IMapLocation.java index 2b8b87ee..c2ca8146 100644 --- a/api/buildcraft/api/items/IMapLocation.java +++ b/api/buildcraft/api/items/IMapLocation.java @@ -10,7 +10,7 @@ import buildcraft.api.core.IZone; /** * Created by asie on 2/28/15. */ -public interface IMapLocation { +public interface IMapLocation extends INamedItem { public enum MapLocationType { CLEAN, SPOT, AREA, PATH, ZONE } diff --git a/api/buildcraft/api/items/INamedItem.java b/api/buildcraft/api/items/INamedItem.java new file mode 100644 index 00000000..51f004b9 --- /dev/null +++ b/api/buildcraft/api/items/INamedItem.java @@ -0,0 +1,8 @@ +package buildcraft.api.items; + +import net.minecraft.item.ItemStack; + +public interface INamedItem { + String getName(ItemStack stack); + boolean setName(ItemStack stack, String name); +} diff --git a/api/buildcraft/api/items/package-info.java b/api/buildcraft/api/items/package-info.java index fa3a9554..a328a42c 100644 --- a/api/buildcraft/api/items/package-info.java +++ b/api/buildcraft/api/items/package-info.java @@ -6,7 +6,7 @@ * Please check the contents of the license, which should be located * as "LICENSE.API" in the BuildCraft source code distribution. */ -@API(apiVersion = "1.0", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|items") +@API(apiVersion = "1.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|items") package buildcraft.api.items; import cpw.mods.fml.common.API; diff --git a/api/buildcraft/api/statements/IStatement.java b/api/buildcraft/api/statements/IStatement.java index 85c42814..579d8445 100644 --- a/api/buildcraft/api/statements/IStatement.java +++ b/api/buildcraft/api/statements/IStatement.java @@ -15,7 +15,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public interface IStatement { - /** * Every statement needs a unique tag, it should be in the format of * "<modid>:<name>. diff --git a/api/buildcraft/api/statements/ITriggerExternalOverride.java b/api/buildcraft/api/statements/ITriggerExternalOverride.java new file mode 100644 index 00000000..7103c06a --- /dev/null +++ b/api/buildcraft/api/statements/ITriggerExternalOverride.java @@ -0,0 +1,17 @@ +package buildcraft.api.statements; + +import net.minecraftforge.common.util.ForgeDirection; + +/** + * This interface can be used by tiles to override external trigger + * behaviour. + * + * Please use wisely. + */ +public interface ITriggerExternalOverride { + public enum Result { + TRUE, FALSE, IGNORE + } + + Result override(ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters); +} diff --git a/buildcraft_resources/assets/buildcraft/lang/en_US.lang b/buildcraft_resources/assets/buildcraft/lang/en_US.lang index ef1962fc..c643d567 100644 --- a/buildcraft_resources/assets/buildcraft/lang/en_US.lang +++ b/buildcraft_resources/assets/buildcraft/lang/en_US.lang @@ -155,8 +155,11 @@ gate.trigger.pipe.wire.active=%s Pipe Signal On gate.trigger.pipe.wire.inactive=%s Pipe Signal Off gate.trigger.timer=%s Sec Timer gate.trigger.robot.sleep=Sleep -gate.trigger.machine.energyStoredHigh=High Energy Stored -gate.trigger.machine.energyStoredLow=Low Energy Stored +gate.trigger.machine.energyStored.high=High Energy Stored +gate.trigger.machine.energyStored.low=Low Energy Stored +gate.trigger.machine.energyStored.below25=Energy < 25% +gate.trigger.machine.energyStored.below50=Energy < 50% +gate.trigger.machine.energyStored.below75=Energy < 75% gate.trigger.light.bright=Bright gate.trigger.light.dark=Dark gate.trigger.time.0=Night diff --git a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below25.png b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below25.png new file mode 100644 index 00000000..cebf02ad Binary files /dev/null and b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below25.png differ diff --git a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below50.png b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below50.png new file mode 100644 index 00000000..a2bbd3bf Binary files /dev/null and b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below50.png differ diff --git a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below75.png b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below75.png new file mode 100644 index 00000000..9d74c19e Binary files /dev/null and b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_below75.png differ diff --git a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_high.png b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_high.png index 40bce8b2..ab2a5726 100755 Binary files a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_high.png and b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_high.png differ diff --git a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_low.png b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_low.png index 73ee2242..06973763 100755 Binary files a/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_low.png and b/buildcraft_resources/assets/buildcraftcore/textures/items/triggers/trigger_energy_storage_low.png differ diff --git a/buildcraft_resources/assets/buildcraftrobotics/textures/gui/zone_planner_gui.png b/buildcraft_resources/assets/buildcraftrobotics/textures/gui/zone_planner_gui.png index 1f86b266..51046c81 100755 Binary files a/buildcraft_resources/assets/buildcraftrobotics/textures/gui/zone_planner_gui.png and b/buildcraft_resources/assets/buildcraftrobotics/textures/gui/zone_planner_gui.png differ diff --git a/buildcraft_resources/changelog/7.0.0 b/buildcraft_resources/changelog/7.0.0 index b783890d..ea2362c7 100644 --- a/buildcraft_resources/changelog/7.0.0 +++ b/buildcraft_resources/changelog/7.0.0 @@ -1,28 +1,37 @@ Additions: * **New textures!** - "Essence" made by (CyanideX) * **Modularization** - BuildCraft is back to being modules (asie) -* Optimizations to BuildCraft pipes (asie, Player) -* New blocks: +* Blocks: * Blueprint Library renamed to Electronic Library, supports copying books - and soon other things! (asie) -* New items: +* Items: * Paintbrush for dyeing pipes and other supported blocks (asie) * Debugger for developer use (asie) -* New gate expansions: - * Light Sensor for detecting brightness in front of a gate (asie) -* Gate recipes now show up in NEI properly (asie) -* Improved robot light handling - the light now denotes sleep state and battery charge level (asie) -* Lasers now glow in the night (asie) -* New Robot triggers and actions: Linked, Reserved, In Station and Robot Mandatory (asie) -* Made items in pipes move at a much smoother rate (asie) -* Optimizations here and there (asie) + * Map Locations can now be named (in the Zone Planner) (asie) +* Gates: + * Gate recipes now show up in NEI properly (asie) + * Light Sensor expansion for detecting brightness in front of a gate (asie) +* Pipes: + * Massive optimizations - up to 3x less server-intensive (asie, Player) + * Made items in pipes move at a much smoother rate (asie) +* Robots: + * Improved robot light handling - the light now denotes sleep state and battery charge level (asie) + * New Robot triggers and actions: Linked, Reserved, In Station and Robot Mandatory (asie) + * Robots can now use modded pickaxes, shovels and axes (asie) +* Misc.: + * Lasers now glow in the night (asie) + * Miscellanous optimizations (asie) + * Packets are now sent in a separate thread, causing most of the pipe optimizations and many other things (asie, Player) Bugfixes: * **Stopped wooden item pipes from exploding** (asie) * Structure pipes not respecting blocking pluggables (asie) +* Fixed alternate slimeball-based pipe sealant recipe being uncraftable (asie) +* Fixed minor Zone Planner rendering issues (asie) APIs: * IDebuggable, for debugger compatibility in tile entities (asie) * LibraryAPI for supporting copying of custom items in the Electronic Library (asie) +* ISided/IRedstoneStatementContainer (asie) Breaking changes: * Item pipes may no longer be connected to the front of the Mining Well or Quarry. diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index 8159b2a8..3ea79c75 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -180,8 +180,8 @@ public class BuildCraftCore extends BuildCraftMod { public static int markerModel; public static ITriggerExternal triggerMachineActive = new TriggerMachine(true); public static ITriggerExternal triggerMachineInactive = new TriggerMachine(false); - public static IStatement triggerEnergyHigh = new TriggerEnergy(true); - public static IStatement triggerEnergyLow = new TriggerEnergy(false); + public static IStatement triggerEnergyHigh = new TriggerEnergy(TriggerEnergy.TriggerType.HIGH); + public static IStatement triggerEnergyLow = new TriggerEnergy(TriggerEnergy.TriggerType.LOW); public static ITriggerExternal triggerEmptyInventory = new TriggerInventory(TriggerInventory.State.Empty); public static ITriggerExternal triggerContainsInventory = new TriggerInventory(TriggerInventory.State.Contains); public static ITriggerExternal triggerSpaceInventory = new TriggerInventory(TriggerInventory.State.Space); diff --git a/common/buildcraft/core/InterModComms.java b/common/buildcraft/core/InterModComms.java index 26df35d6..bdf33cad 100644 --- a/common/buildcraft/core/InterModComms.java +++ b/common/buildcraft/core/InterModComms.java @@ -13,6 +13,11 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import com.google.common.base.Splitter; +import com.google.common.base.Strings; +import com.google.common.collect.Iterables; +import com.google.common.primitives.Ints; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -22,6 +27,7 @@ import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; import net.minecraftforge.fluids.FluidStack; +import buildcraft.BuildCraftTransport; import buildcraft.api.core.BCLog; import buildcraft.core.recipes.AssemblyRecipeManager; import buildcraft.core.recipes.RefineryRecipeManager; @@ -55,7 +61,7 @@ public final class InterModComms { } } } - + public static void processAssemblyRecipeRemoveIMC(IMCEvent event, IMCMessage msg) { if (msg.isStringMessage()) { AssemblyRecipeManager.INSTANCE.removeRecipe(msg.getStringValue()); diff --git a/common/buildcraft/core/statements/DefaultTriggerProvider.java b/common/buildcraft/core/statements/DefaultTriggerProvider.java index f3d28bbc..e3af025d 100644 --- a/common/buildcraft/core/statements/DefaultTriggerProvider.java +++ b/common/buildcraft/core/statements/DefaultTriggerProvider.java @@ -11,6 +11,7 @@ package buildcraft.core.statements; import java.util.LinkedList; import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -26,7 +27,6 @@ import buildcraft.api.statements.containers.IRedstoneStatementContainer; import buildcraft.api.tiles.IHasWork; public class DefaultTriggerProvider implements ITriggerProvider { - @Override public LinkedList getExternalTriggers(ForgeDirection side, TileEntity tile) { LinkedList res = new LinkedList(); diff --git a/common/buildcraft/core/statements/TriggerEnergy.java b/common/buildcraft/core/statements/TriggerEnergy.java index 42e0611b..297f22c7 100644 --- a/common/buildcraft/core/statements/TriggerEnergy.java +++ b/common/buildcraft/core/statements/TriggerEnergy.java @@ -8,6 +8,7 @@ */ package buildcraft.core.statements; +import java.util.Locale; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; @@ -38,7 +39,7 @@ public class TriggerEnergy extends BCStatement implements ITriggerInternal { } } - private boolean high; + private final boolean high; public TriggerEnergy(boolean high) { super("buildcraft:energyStored" + (high ? "high" : "low")); @@ -48,7 +49,7 @@ public class TriggerEnergy extends BCStatement implements ITriggerInternal { @Override public String getDescription() { - return StringUtils.localize("gate.trigger.machine.energyStored" + (high ? "High" : "Low")); + return StringUtils.localize("gate.trigger.machine.energyStored." + (high ? "high" : "low")); } private boolean isTriggeredEnergyHandler(IEnergyConnection connection, ForgeDirection side) { @@ -68,10 +69,11 @@ public class TriggerEnergy extends BCStatement implements ITriggerInternal { } if (energyMaxStored > 0) { + float level = (energyStored / energyMaxStored); if (high) { - return (energyStored / energyMaxStored) > 0.95; + return level > 0.95F; } else { - return (energyStored / energyMaxStored) < 0.05; + return level < 0.05F; } } return false;