diff options
| author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-06-10 15:33:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-10 15:33:52 +0200 |
| commit | b2c2a6dfe91696d4ecada95e5e43806ddb144ece (patch) | |
| tree | 8912f872c9fea1fac47ec01d52305609fbf78517 /src/main/java/kubatech/tileentity/gregtech | |
| parent | e2d8bffd9673b6f22ba7ade2c2bacda58bb99373 (diff) | |
| download | GT5-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/gregtech')
3 files changed, 152 insertions, 28 deletions
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; } |
