aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/util')
-rw-r--r--src/main/java/gregtech/api/util/AdvancedFusionOverclockDescriber.java23
-rw-r--r--src/main/java/gregtech/api/util/AveragePerTickCounter.java139
-rw-r--r--src/main/java/gregtech/api/util/ColorsMetadataSection.java63
-rw-r--r--src/main/java/gregtech/api/util/ColorsMetadataSectionSerializer.java81
-rw-r--r--src/main/java/gregtech/api/util/ExternalMaterials.java14
-rw-r--r--src/main/java/gregtech/api/util/FieldsAreNonnullByDefault.java18
-rw-r--r--src/main/java/gregtech/api/util/FishPondFakeRecipe.java80
-rw-r--r--src/main/java/gregtech/api/util/GT_ApiaryModifier.java24
-rw-r--r--src/main/java/gregtech/api/util/GT_ApiaryUpgrade.java225
-rw-r--r--src/main/java/gregtech/api/util/GT_AssemblyLineUtils.java557
-rw-r--r--src/main/java/gregtech/api/util/GT_Assemblyline_Server.java297
-rw-r--r--src/main/java/gregtech/api/util/GT_BaseCrop.java311
-rw-r--r--src/main/java/gregtech/api/util/GT_BlockMap.java134
-rw-r--r--src/main/java/gregtech/api/util/GT_BlockSet.java39
-rw-r--r--src/main/java/gregtech/api/util/GT_CLS_Compat.java157
-rw-r--r--src/main/java/gregtech/api/util/GT_ChunkAssociatedData.java494
-rw-r--r--src/main/java/gregtech/api/util/GT_CircuitryBehavior.java212
-rw-r--r--src/main/java/gregtech/api/util/GT_ClientPreference.java41
-rw-r--r--src/main/java/gregtech/api/util/GT_Config.java160
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehavior.java411
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java856
-rw-r--r--src/main/java/gregtech/api/util/GT_CreativeTab.java26
-rw-r--r--src/main/java/gregtech/api/util/GT_ExoticEnergyInputHelper.java114
-rw-r--r--src/main/java/gregtech/api/util/GT_FoodStat.java122
-rw-r--r--src/main/java/gregtech/api/util/GT_Forestry_Compat.java195
-rw-r--r--src/main/java/gregtech/api/util/GT_GC_Compat.java52
-rw-r--r--src/main/java/gregtech/api/util/GT_HatchElementBuilder.java524
-rw-r--r--src/main/java/gregtech/api/util/GT_IBoxableWrapper.java13
-rw-r--r--src/main/java/gregtech/api/util/GT_ItsNotMyFaultException.java18
-rw-r--r--src/main/java/gregtech/api/util/GT_JubilanceMegaApiary.java23
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java600
-rw-r--r--src/main/java/gregtech/api/util/GT_Log.java45
-rw-r--r--src/main/java/gregtech/api/util/GT_ModHandler.java2551
-rw-r--r--src/main/java/gregtech/api/util/GT_Multiblock_Tooltip_Builder.java720
-rw-r--r--src/main/java/gregtech/api/util/GT_OreDictUnificator.java570
-rw-r--r--src/main/java/gregtech/api/util/GT_OverclockCalculator.java631
-rw-r--r--src/main/java/gregtech/api/util/GT_PCBFactoryManager.java25
-rw-r--r--src/main/java/gregtech/api/util/GT_ParallelHelper.java717
-rw-r--r--src/main/java/gregtech/api/util/GT_PlayedSound.java42
-rw-r--r--src/main/java/gregtech/api/util/GT_ProcessingArray_Manager.java51
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java1271
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeBuilder.java933
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeConstants.java332
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeMapUtil.java226
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeRegistrator.java868
-rw-r--r--src/main/java/gregtech/api/util/GT_RenderingWorld.java195
-rw-r--r--src/main/java/gregtech/api/util/GT_Shaped_Recipe.java100
-rw-r--r--src/main/java/gregtech/api/util/GT_Shapeless_Recipe.java100
-rw-r--r--src/main/java/gregtech/api/util/GT_SpawnEventHandler.java81
-rw-r--r--src/main/java/gregtech/api/util/GT_StreamUtil.java44
-rw-r--r--src/main/java/gregtech/api/util/GT_StructureUtility.java512
-rw-r--r--src/main/java/gregtech/api/util/GT_StructureUtilityMuTE.java271
-rw-r--r--src/main/java/gregtech/api/util/GT_ToolHarvestHelper.java71
-rw-r--r--src/main/java/gregtech/api/util/GT_TooltipDataCache.java105
-rw-r--r--src/main/java/gregtech/api/util/GT_Util.java202
-rw-r--r--src/main/java/gregtech/api/util/GT_Utility.java4982
-rw-r--r--src/main/java/gregtech/api/util/GT_UtilityClient.java52
-rw-r--r--src/main/java/gregtech/api/util/GT_Waila.java23
-rw-r--r--src/main/java/gregtech/api/util/GasSpargingRecipe.java103
-rw-r--r--src/main/java/gregtech/api/util/GasSpargingRecipeMap.java45
-rw-r--r--src/main/java/gregtech/api/util/HotFuel.java40
-rw-r--r--src/main/java/gregtech/api/util/IGT_HatchAdder.java28
-rw-r--r--src/main/java/gregtech/api/util/ISerializableObject.java159
-rw-r--r--src/main/java/gregtech/api/util/LightingHelper.java1434
-rw-r--r--src/main/java/gregtech/api/util/MethodsReturnNonnullByDefault.java22
-rw-r--r--src/main/java/gregtech/api/util/OutputHatchWrapper.java65
-rw-r--r--src/main/java/gregtech/api/util/SemiFluidFuelHandler.java136
-rw-r--r--src/main/java/gregtech/api/util/ValidationResult.java24
-rw-r--r--src/main/java/gregtech/api/util/ValidationType.java6
-rw-r--r--src/main/java/gregtech/api/util/VoidProtectionHelper.java485
-rw-r--r--src/main/java/gregtech/api/util/WorldSpawnedEventBuilder.java678
-rw-r--r--src/main/java/gregtech/api/util/extensions/ArrayExt.java81
-rw-r--r--src/main/java/gregtech/api/util/extensions/IteratorExt.java13
-rw-r--r--src/main/java/gregtech/api/util/item/ItemHolder.java79
-rw-r--r--src/main/java/gregtech/api/util/recipe/RecipeInputRequirements.java77
-rw-r--r--src/main/java/gregtech/api/util/shutdown/ReasonOutOfFluid.java63
-rw-r--r--src/main/java/gregtech/api/util/shutdown/ReasonOutOfItem.java62
-rw-r--r--src/main/java/gregtech/api/util/shutdown/ReasonOutOfStuff.java61
-rw-r--r--src/main/java/gregtech/api/util/shutdown/ShutDownReason.java41
-rw-r--r--src/main/java/gregtech/api/util/shutdown/ShutDownReasonRegistry.java118
-rw-r--r--src/main/java/gregtech/api/util/shutdown/SimpleShutDownReason.java79
81 files changed, 25642 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/util/AdvancedFusionOverclockDescriber.java b/src/main/java/gregtech/api/util/AdvancedFusionOverclockDescriber.java
new file mode 100644
index 0000000000..7a6e609f93
--- /dev/null
+++ b/src/main/java/gregtech/api/util/AdvancedFusionOverclockDescriber.java
@@ -0,0 +1,23 @@
+package gregtech.api.util;
+
+import javax.annotation.ParametersAreNonnullByDefault;
+
+import gregtech.api.objects.overclockdescriber.FusionOverclockDescriber;
+
+@ParametersAreNonnullByDefault
+@MethodsReturnNonnullByDefault
+public class AdvancedFusionOverclockDescriber extends FusionOverclockDescriber {
+
+ public AdvancedFusionOverclockDescriber(byte energyTier, long capableStartup) {
+ super(energyTier, capableStartup);
+ }
+
+ @Override
+ protected int getEUtIncreasePerOC() {
+ return 2;
+ }
+
+ protected int getDurationDecreasePerOC() {
+ return 2;
+ }
+}
diff --git a/src/main/java/gregtech/api/util/AveragePerTickCounter.java b/src/main/java/gregtech/api/util/AveragePerTickCounter.java
new file mode 100644
index 0000000000..c9b1275deb
--- /dev/null
+++ b/src/main/java/gregtech/api/util/AveragePerTickCounter.java
@@ -0,0 +1,139 @@
+package gregtech.api.util;
+
+import java.security.InvalidParameterException;
+import java.util.ArrayDeque;
+
+import net.minecraft.server.MinecraftServer;
+
+public class AveragePerTickCounter {
+
+ /**
+ * Averages a value over a certain amount of ticks
+ *
+ * @param period amount of ticks to average (20 for 1 second)
+ *
+ */
+ public AveragePerTickCounter(int period) throws InvalidParameterException {
+
+ if (period <= 0) throw new InvalidParameterException("period should be a positive non-zero number");
+
+ this.period = period;
+ values = new ArrayDeque<>(period);
+ }
+
+ public void addValue(long value) {
+
+ if (value == 0) return;
+
+ final int currTick = getWorldTimeInTicks();
+
+ if (values.isEmpty()) {
+ values.addLast(new Measurement(currTick, value));
+ isCachedAverageValid = false;
+ return;
+ }
+
+ Measurement lastMeasurement = values.peekLast();
+ final int lastMeasurementTick = lastMeasurement.TimestampInWorldTicks;
+
+ /// sums up values added in the same tick
+ /// for example a cable had an amp running through it multiple times in the same tick
+ if (currTick == lastMeasurementTick) {
+ lastMeasurement.Value = lastMeasurement.Value + value;
+ isCachedAverageValid = false;
+ return;
+ }
+
+ if (currTick > lastMeasurementTick) {
+ trimIrrelevantData(currTick);
+
+ values.addLast(new Measurement(currTick, value));
+ isCachedAverageValid = false;
+ return;
+ }
+ }
+
+ public double getAverage() {
+
+ if (values.isEmpty()) return 0;
+
+ final int currTick = getWorldTimeInTicks();
+
+ Measurement lastMeasurement = values.peekLast();
+ final int lastMeasurementTick = lastMeasurement.TimestampInWorldTicks;
+
+ if (currTick < lastMeasurementTick) return 0;
+
+ if (currTick > lastMeasurementTick) {
+ trimIrrelevantData(currTick);
+ }
+
+ if (isCachedAverageValid) return cachedAverage;
+
+ return calculateAverage();
+ }
+
+ public long getLast() {
+
+ if (values.isEmpty()) return 0;
+
+ final int currTick = getWorldTimeInTicks();
+
+ Measurement lastMeasurement = values.peekLast();
+ final int lastMeasurementTick = lastMeasurement.TimestampInWorldTicks;
+
+ if (currTick == lastMeasurementTick) return values.getLast().Value;
+
+ return 0;
+ }
+
+ private double calculateAverage() {
+
+ isCachedAverageValid = true;
+ long sum = 0;
+
+ for (Measurement measurement : values) {
+ sum += measurement.Value;
+ }
+
+ return sum / (double) period;
+ }
+
+ private void trimIrrelevantData(int currWorldTimeInTicks) {
+
+ if (values.isEmpty()) return;
+
+ int firstMeasurementTick = values.peekFirst().TimestampInWorldTicks;
+
+ while (currWorldTimeInTicks - firstMeasurementTick >= period) {
+ values.removeFirst();
+ isCachedAverageValid = false;
+
+ if (values.isEmpty()) return;
+
+ firstMeasurementTick = values.peekFirst().TimestampInWorldTicks;
+ }
+ }
+
+ private int getWorldTimeInTicks() {
+ return MinecraftServer.getServer()
+ .getTickCounter();
+ }
+
+ private ArrayDeque<Measurement> values;
+ private int period;
+
+ private double cachedAverage = 0;
+ private boolean isCachedAverageValid = true;
+
+ private class Measurement {
+
+ public int TimestampInWorldTicks;
+ public long Value;
+
+ public Measurement(int timestampInWorldTicks, long value) {
+ this.TimestampInWorldTicks = timestampInWorldTicks;
+ this.Value = value;
+ }
+ }
+}
diff --git a/src/main/java/gregtech/api/util/ColorsMetadataSection.java b/src/main/java/gregtech/api/util/ColorsMetadataSection.java
new file mode 100644
index 0000000000..fb9cc6dd56
--- /dev/null
+++ b/src/main/java/gregtech/api/util/ColorsMetadataSection.java
@@ -0,0 +1,63 @@
+package gregtech.api.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import net.minecraft.client.resources.data.IMetadataSection;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+public class ColorsMetadataSection implements IMetadataSection {
+
+ private final Map<String, Integer> textColors;
+ private final Map<String, String> hexTextColors;
+ private final Map<String, Integer> guiTints;
+ private final Map<String, String> hexGuiTints;
+ private final boolean guiTintEnabled;
+
+ public ColorsMetadataSection(Map<String, String> hexTextColorMap, Map<String, String> hexGuiTintMap,
+ boolean guiTintEnabled) {
+ this.hexTextColors = hexTextColorMap;
+ this.textColors = convertHexMapToIntMap(hexTextColorMap);
+
+ this.hexGuiTints = hexGuiTintMap;
+ this.guiTints = convertHexMapToIntMap(hexGuiTintMap);
+
+ this.guiTintEnabled = guiTintEnabled;
+ }
+
+ private Map<String, Integer> convertHexMapToIntMap(Map<String, String> hexMap) {
+ Map<String, Integer> intMap = new HashMap<>();
+
+ for (String key : hexMap.keySet()) {
+ int colorValue = -1;
+ String hex = hexMap.get(key);
+ try {
+ if (!hex.isEmpty()) colorValue = Integer.parseUnsignedInt(hex, 16);
+ } catch (final NumberFormatException e) {
+ GT_Log.err.println("Couldn't format color correctly of " + key + " -> " + hex);
+ }
+ intMap.put(key, colorValue);
+ }
+ return intMap;
+ }
+
+ public int getTextColorOrDefault(String key, int defaultColor) {
+ return isColorInMap(key, this.hexTextColors) ? this.textColors.get(key) : defaultColor;
+ }
+
+ public int getGuiTintOrDefault(String key, int defaultColor) {
+ return isColorInMap(key, this.hexGuiTints) ? this.guiTints.get(key) : defaultColor;
+ }
+
+ private boolean isColorInMap(String key, Map<String, String> hexMap) {
+ return hexMap.containsKey(key) && !hexMap.get(key)
+ .isEmpty();
+ }
+
+ public boolean sGuiTintingEnabled() {
+ return this.guiTintEnabled;
+ }
+}
diff --git a/src/main/java/gregtech/api/util/ColorsMetadataSectionSerializer.java b/src/main/java/gregtech/api/util/ColorsMetadataSectionSerializer.java
new file mode 100644
index 0000000000..389662d041
--- /dev/null
+++ b/src/main/java/gregtech/api/util/ColorsMetadataSectionSerializer.java
@@ -0,0 +1,81 @@
+package gregtech.api.util;
+
+import java.lang.reflect.Type;
+import java.util.HashMap;
+import java.util.Map;
+
+import net.minecraft.client.resources.data.BaseMetadataSectionSerializer;
+import net.minecraft.util.JsonUtils;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.GT_Mod;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Dyes;
+
+@SideOnly(Side.CLIENT)
+public class ColorsMetadataSectionSerializer extends BaseMetadataSectionSerializer {
+
+ public ColorsMetadataSection deserialize(JsonElement metadataColors, Type type,
+ JsonDeserializationContext context) {
+ // Default values
+ boolean enableGuiTint = GregTech_API.sColoredGUI;
+ Map<String, String> hexGuiTintMap = new HashMap<>();
+ Map<String, String> hexTextColorMap = new HashMap<>();
+
+ JsonObject jsonObject = JsonUtils.getJsonElementAsJsonObject(metadataColors, "metadata section");
+ if (jsonObject.has("textColor")) {
+ JsonObject textColors = JsonUtils