aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/tileentity
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2023-06-10 15:33:52 +0200
committerGitHub <noreply@github.com>2023-06-10 15:33:52 +0200
commitb2c2a6dfe91696d4ecada95e5e43806ddb144ece (patch)
tree8912f872c9fea1fac47ec01d52305609fbf78517 /src/main/java/kubatech/tileentity
parente2d8bffd9673b6f22ba7ade2c2bacda58bb99373 (diff)
downloadGT5-Unofficial-b2c2a6dfe91696d4ecada95e5e43806ddb144ece.tar.gz
GT5-Unofficial-b2c2a6dfe91696d4ecada95e5e43806ddb144ece.tar.bz2
GT5-Unofficial-b2c2a6dfe91696d4ecada95e5e43806ddb144ece.zip
Fix bug with flowers and show what flowers are missing in Mega Apiary (#76)
* Fix bug and show missing flowers in the GUI * Update build.gradle * imports * Update dependencies.gradle * Add "Missing flower types:" line * Update build-and-test.yml
Diffstat (limited to 'src/main/java/kubatech/tileentity')
-rw-r--r--src/main/java/kubatech/tileentity/TeaAcceptorTile.java4
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java34
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java44
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java102
4 files changed, 155 insertions, 29 deletions
diff --git a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
index 8ba7401b0d..a2952117ea 100644
--- a/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
+++ b/src/main/java/kubatech/tileentity/TeaAcceptorTile.java
@@ -39,7 +39,9 @@ import com.gtnewhorizons.modularui.api.ModularUITextures;
import com.gtnewhorizons.modularui.api.drawable.Text;
import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.math.Pos2d;
-import com.gtnewhorizons.modularui.api.screen.*;
+import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.builder.UIInfo;
import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java
index 19ca563a79..fcaf2a833e 100644
--- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java
@@ -20,15 +20,30 @@
package kubatech.tileentity.gregtech.multiblock;
-import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
-import static gregtech.api.enums.GT_HatchElement.*;
-import static gregtech.api.enums.Textures.BlockIcons.*;
-import static gregtech.api.util.GT_StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.isAir;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.enums.GT_HatchElement.Energy;
+import static gregtech.api.enums.GT_HatchElement.InputBus;
+import static gregtech.api.enums.GT_HatchElement.Maintenance;
+import static gregtech.api.enums.GT_HatchElement.OutputBus;
+import static gregtech.api.enums.GT_HatchElement.OutputHatch;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE_GLOW;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_GLOW;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.ofFrame;
import static kubatech.api.Variables.Author;
import static kubatech.api.Variables.StructureHologram;
import java.nio.charset.StandardCharsets;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Random;
+import java.util.UUID;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
@@ -69,7 +84,14 @@ import com.gtnewhorizons.modularui.api.math.Color;
import com.gtnewhorizons.modularui.api.math.Pos2d;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
-import com.gtnewhorizons.modularui.common.widget.*;
+import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
+import com.gtnewhorizons.modularui.common.widget.DynamicTextWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+import com.gtnewhorizons.modularui.common.widget.SlotWidget;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
import com.mojang.authlib.GameProfile;
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry;
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java
index de23f01795..4b86cda1e7 100644
--- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java
@@ -20,15 +20,29 @@
package kubatech.tileentity.gregtech.multiblock;
-import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
-import static gregtech.api.enums.Textures.BlockIcons.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE_GLOW;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_GLOW;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static kubatech.api.Variables.Author;
import static kubatech.api.Variables.StructureHologram;
import java.io.IOException;
import java.lang.ref.WeakReference;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@@ -42,7 +56,11 @@ import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
-import net.minecraft.item.*;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemSeedFood;
+import net.minecraft.item.ItemSeeds;
+import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.nbt.NBTTagCompound;
@@ -73,7 +91,18 @@ import com.gtnewhorizons.modularui.api.widget.IWidgetParent;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.builder.UIInfo;
import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
-import com.gtnewhorizons.modularui.common.widget.*;
+import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.ChangeableWidget;
+import com.gtnewhorizons.modularui.common.widget.Column;
+import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
+import com.gtnewhorizons.modularui.common.widget.DynamicTextWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+import com.gtnewhorizons.modularui.common.widget.Scrollable;
+import com.gtnewhorizons.modularui.common.widget.SlotWidget;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
@@ -87,7 +116,10 @@ import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.metatileentity.implementations.*;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_MultiInput;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Utility;
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java
index c42250dfdf..baabda3211 100644
--- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_MegaIndustrialApiary.java
@@ -20,16 +20,34 @@
package kubatech.tileentity.gregtech.multiblock;
-import static com.gtnewhorizon.structurelib.structure.StructureUtility.*;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlockAnyMeta;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlocksMap;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static forestry.api.apiculture.BeeManager.beeRoot;
-import static gregtech.api.enums.GT_HatchElement.*;
-import static gregtech.api.enums.Textures.BlockIcons.*;
+import static gregtech.api.enums.GT_HatchElement.Energy;
+import static gregtech.api.enums.GT_HatchElement.InputBus;
+import static gregtech.api.enums.GT_HatchElement.Maintenance;
+import static gregtech.api.enums.GT_HatchElement.OutputBus;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_ACTIVE_GLOW;
+import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_DISTILLATION_TOWER_GLOW;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
-import static kubatech.api.Variables.*;
+import static kubatech.api.Variables.StructureHologram;
+import static kubatech.api.Variables.buildAuthorList;
import java.io.IOException;
import java.lang.ref.WeakReference;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -66,11 +84,28 @@ import com.gtnewhorizons.modularui.api.widget.IWidgetParent;
import com.gtnewhorizons.modularui.api.widget.Widget;
import com.gtnewhorizons.modularui.common.builder.UIInfo;
import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
-import com.gtnewhorizons.modularui.common.widget.*;
+import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.ChangeableWidget;
+import com.gtnewhorizons.modularui.common.widget.Column;
+import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
+import com.gtnewhorizons.modularui.common.widget.DynamicPositionedRow;
+import com.gtnewhorizons.modularui.common.widget.DynamicTextWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+import com.gtnewhorizons.modularui.common.widget.Scrollable;
+import com.gtnewhorizons.modularui.common.widget.SlotWidget;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import forestry.api.apiculture.*;
+import forestry.api.apiculture.EnumBeeType;
+import forestry.api.apiculture.FlowerManager;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeekeepingMode;
import forestry.apiculture.blocks.BlockAlveary;
import forestry.apiculture.blocks.BlockApicultureType;
import forestry.apiculture.genetics.Bee;
@@ -209,7 +244,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
}
private boolean isCacheDirty = true;
- private final HashSet<String> flowersCache = new HashSet<>();
+ private final HashMap<String, String> flowersCache = new HashMap<>();
private final HashSet<String> flowersCheck = new HashSet<>();
private boolean flowersError = false;
private boolean needsTVarUpdate = false;
@@ -324,7 +359,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
mStorage.add(new BeeSimulator(aNBT.getCompoundTag("mStorage." + i)));
megaApiaryStorageVersion = aNBT.getInteger("MEGA_APIARY_STORAGE_VERSION");
flowersCache.clear();
- mStorage.forEach(s -> flowersCache.add(s.flowerType));
+ mStorage.forEach(s -> flowersCache.put(s.flowerType, s.flowerTypeDescription));
flowersCache.remove("");
isCacheDirty = false;
}
@@ -541,11 +576,12 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
mCasing = 0;
if (isCacheDirty) {
flowersCache.clear();
- mStorage.forEach(s -> flowersCache.add(s.flowerType));
+ mStorage.forEach(s -> flowersCache.put(s.flowerType, s.flowerTypeDescription));
flowersCache.remove("");
isCacheDirty = false;
}
- flowersCheck.addAll(flowersCache);
+ flowersCheck.clear();
+ flowersCheck.addAll(flowersCache.keySet());
if (!checkPiece(STRUCTURE_PIECE_MAIN, 7, 8, 0)) return false;
if (this.mGlassTier < 10 && !this.mEnergyHatches.isEmpty())
for (GT_MetaTileEntity_Hatch_Energy hatchEnergy : this.mEnergyHatches)
@@ -758,7 +794,30 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
throw new RuntimeException(e);
}
}),
- builder));
+ builder)
+ .attachSyncer(new FakeSyncWidget.ListSyncer<>(() -> {
+ if (flowersError) {
+ List<String> s = flowersCheck.stream()
+ .map(flowersCache::get)
+ .filter(Objects::nonNull)
+ .sorted()
+ .collect(Collectors.toList());
+ s.add(0, "Missing flower types:");
+ return s;
+ } else return Collections.emptyList();
+ }, f -> flowersGUI = f, (b, e) -> {
+ try {
+ b.writeStringToBuffer(e);
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }, b -> {
+ try {
+ return b.readStringFromBuffer(999);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }), builder));
final DynamicPositionedColumn screenElements = new DynamicPositionedColumn();
drawTexts(screenElements, null);
@@ -958,6 +1017,8 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
return builder.build();
}
+ private List<String> flowersGUI = Collections.emptyList();
+
@Override
protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inventorySlot) {
screenElements.setSynced(false)
@@ -968,14 +1029,15 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
new DynamicPositionedRow().setSynced(false)
.widget(new TextWidget("Status: ").setDefaultColor(COLOR_TEXT_GRAY.get()))
.widget(new DynamicTextWidget(() -> {
- if (flowersError) return new Text("No flowers !").color(Color.RED.dark(3));
+ if (flowersError) return new Text("Missing flowers!").color(Color.RED.dark(3));
if (getBaseMetaTileEntity().isActive()) return new Text("Working !").color(Color.GREEN.dark(3));
else if (getBaseMetaTileEntity().isAllowedToWork())
return new Text("Enabled").color(Color.GREEN.dark(3));
else if (getBaseMetaTileEntity().wasShutdown())
return new Text("Shutdown (CRITICAL)").color(Color.RED.dark(3));
else return new Text("Disabled").color(Color.RED.dark(3));
- }))
+ }).dynamicTooltip(() -> flowersGUI)
+ .setUpdateTooltipEveryTick(true))
.setEnabled(isFixed));
screenElements
@@ -1026,6 +1088,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
float maxBeeCycles;
String flowerType;
+ String flowerTypeDescription;
public BeeSimulator(ItemStack queenStack, World world, float t) {
isValid = false;
@@ -1048,6 +1111,8 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
IBeeGenome genome = queen.getGenome();
this.flowerType = genome.getFlowerProvider()
.getFlowerType();
+ this.flowerTypeDescription = genome.getFlowerProvider()
+ .getDescription();
IAlleleBeeSpecies primary = genome.getPrimary();
beeSpeed = genome.getSpeed() * beeModifier.getProductionModifier(null, 1.f);
genome.getPrimary()
@@ -1071,12 +1136,16 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
specialDrops.add(new BeeDrop(tag.getCompoundTag("specialDrops" + i)));
beeSpeed = tag.getFloat("beeSpeed");
maxBeeCycles = tag.getFloat("maxBeeCycles");
- if (tag.hasKey("flowerType")) flowerType = tag.getString("flowerType");
- else {
+ if (tag.hasKey("flowerType") && tag.hasKey("flowerTypeDescription")) {
+ flowerType = tag.getString("flowerType");
+ flowerTypeDescription = tag.getString("flowerTypeDescription");
+ } else {
IBee queen = beeRoot.getMember(this.queenStack);
IBeeGenome genome = queen.getGenome();
this.flowerType = genome.getFlowerProvider()
.getFlowerType();
+ this.flowerTypeDescription = genome.getFlowerProvider()
+ .getDescription();
}
}
@@ -1097,6 +1166,7 @@ public class GT_MetaTileEntity_MegaIndustrialApiary
tag.setFloat("beeSpeed", beeSpeed);
tag.setFloat("maxBeeCycles", maxBeeCycles);
tag.setString("flowerType", flowerType);
+ tag.setString("flowerTypeDescription", flowerTypeDescription);
return tag;
}