Skip to content

Commit 7d1f255

Browse files
committed
Industrial Apiary more fix
1 parent 6beec97 commit 7d1f255

7 files changed

Lines changed: 36 additions & 28 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# v1.4.2
2+
- Add Mixins to skip Forestry fluid registration and redirect to GregTech fluids.
3+
- Align Industrial Apiary logic with Gendustry spec
4+
- Delegate owner persistence to Forestry's OwnerHandler with legacy NBT migration
5+
6+
* * *
7+
18
# v1.4.1
29
- Update TOP Integration [#17](https://github.com/GTModpackTeam/GTBeesMatrix/pull/17)
310
- Fix farming NPE [#18](https://github.com/GTModpackTeam/GTBeesMatrix/pull/18)

src/main/java/com/github/gtexpert/gtbm/integration/forestry/util/BeeProductHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static boolean addProduct(ItemStack product, IBeeRoot beeRoot,
4242
return true;
4343
}
4444
}
45-
if ((autoBreeding || isAutomated) && beeRoot.isMember(remaining, EnumBeeType.DRONE)) {
45+
if (isAutomated && beeRoot.isMember(remaining, EnumBeeType.DRONE)) {
4646
if (beeInv.getDrone().isEmpty()) {
4747
beeInv.setDrone(remaining);
4848
return true;

src/main/java/com/github/gtexpert/gtbm/integration/gendustry/metatileentities/IndustrialApiaryLogic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ public void movePrincessToQueenSlot() {
371371
for (int i = 0; i < output.getSlots(); i++) {
372372
ItemStack stack = output.getStackInSlot(i);
373373
if (!stack.isEmpty() && root.isMember(stack, EnumBeeType.PRINCESS)) {
374-
apiary.setQueen(stack);
374+
apiary.setQueen(stack.copy());
375375
output.setStackInSlot(i, ItemStack.EMPTY);
376376
return;
377377
}

src/main/java/com/github/gtexpert/gtbm/integration/gendustry/metatileentities/MetaTileEntityIndustrialApiary.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import net.minecraft.item.ItemStack;
1212
import net.minecraft.nbt.NBTTagCompound;
1313
import net.minecraft.util.EnumFacing;
14+
import net.minecraft.util.NonNullList;
1415
import net.minecraft.util.ResourceLocation;
1516
import net.minecraft.util.math.BlockPos;
1617
import net.minecraft.util.math.Vec3d;
@@ -42,6 +43,7 @@
4243
import forestry.api.core.*;
4344
import forestry.api.genetics.IIndividual;
4445
import forestry.core.errors.ErrorLogic;
46+
import forestry.core.owner.OwnerHandler;
4547

4648
public class MetaTileEntityIndustrialApiary extends GTBMSimpleMachineMetaTileEntity
4749
implements IBeeHousing, IBeeHousingInventory {
@@ -76,11 +78,12 @@ public boolean onPollenRetrieved(IIndividual pollen) {
7678
if (!modifiers.isCollectingPollen) return false;
7779
ItemStack stack = pollen.getGenome().getSpeciesRoot()
7880
.getMemberStack(pollen, forestry.api.arboriculture.EnumGermlingType.POLLEN);
79-
return addProduct(stack, true);
81+
addProduct(stack, true);
82+
return true;
8083
}
8184
};
85+
private final OwnerHandler ownerHandler = new OwnerHandler();
8286
private IItemHandlerModifiable upgradeInventory;
83-
private GameProfile owner;
8487
private boolean autoBreeding = false;
8588
private byte[] pendingBeeLogicData;
8689

@@ -165,6 +168,12 @@ public int getMaxAdditionalUpgrades(ItemStack stack) {
165168
return upgrade.getMaxNumber(stack) - existing;
166169
}
167170

171+
@Override
172+
public void clearMachineInventory(NonNullList<ItemStack> itemBuffer) {
173+
super.clearMachineInventory(itemBuffer);
174+
clearInventory(itemBuffer, upgradeInventory);
175+
}
176+
168177
// ---- NBT ----
169178

170179
@Override
@@ -179,12 +188,7 @@ public NBTTagCompound writeToNBT(NBTTagCompound data) {
179188
}
180189
data.setTag("UpgradeInventory", upgradeTag);
181190

182-
if (owner != null) {
183-
NBTTagCompound ownerTag = new NBTTagCompound();
184-
ownerTag.setString("Name", owner.getName());
185-
ownerTag.setString("UUID", owner.getId().toString());
186-
data.setTag("Owner", ownerTag);
187-
}
191+
ownerHandler.writeToNBT(data);
188192

189193
data.setBoolean("AutoBreeding", autoBreeding);
190194
return data;
@@ -202,12 +206,16 @@ public void readFromNBT(NBTTagCompound data) {
202206
}
203207
}
204208
}
205-
if (data.hasKey("Owner")) {
206-
NBTTagCompound ownerTag = data.getCompoundTag("Owner");
207-
owner = new GameProfile(
208-
java.util.UUID.fromString(ownerTag.getString("UUID")),
209-
ownerTag.getString("Name"));
209+
// Migrate legacy "Owner" tag to Forestry's "owner" format
210+
if (data.hasKey("Owner") && !data.hasKey("owner")) {
211+
NBTTagCompound legacyTag = data.getCompoundTag("Owner");
212+
NBTTagCompound converted = new NBTTagCompound();
213+
converted.setString("Name", legacyTag.getString("Name"));
214+
converted.setString("Id", legacyTag.getString("UUID"));
215+
data.setTag("owner", converted);
216+
data.removeTag("Owner");
210217
}
218+
ownerHandler.readFromNBT(data);
211219
if (data.hasKey("AutoBreeding")) {
212220
autoBreeding = data.getBoolean("AutoBreeding");
213221
}
@@ -217,8 +225,8 @@ public void readFromNBT(NBTTagCompound data) {
217225

218226
@Override
219227
protected ModularUI createUI(EntityPlayer player) {
220-
if (owner == null) {
221-
owner = player.getGameProfile();
228+
if (ownerHandler.getOwner() == null) {
229+
ownerHandler.setOwner(player.getGameProfile());
222230
}
223231
IBeekeepingLogic logic = getBeekeepingLogic();
224232
if (logic != null && !getWorld().isRemote) {
@@ -322,7 +330,7 @@ public boolean isRaining() {
322330
@Override
323331
@Nullable
324332
public GameProfile getOwner() {
325-
return owner;
333+
return ownerHandler.getOwner();
326334
}
327335

328336
@Override

src/main/java/com/github/gtexpert/gtbm/integration/top/provider/IndustrialApiaryProvider.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,7 @@ public void addProbeInfo(ProbeMode probeMode, IProbeInfo probeInfo, EntityPlayer
5353
if (bee != null) {
5454
EnumBeeType type = beeRoot.getType(queenStack);
5555
if (type == EnumBeeType.QUEEN || type == EnumBeeType.PRINCESS) {
56-
String speciesName;
57-
if (bee.isAnalyzed()) {
58-
speciesName = bee.getGenome().getPrimary().getAlleleName();
59-
} else {
60-
speciesName = "{*gtbm.top.industrial_apiary.species.unknown*}";
61-
}
56+
String speciesName = bee.getGenome().getPrimary().getAlleleName();
6257
probeInfo.text(
6358
TextStyleClass.INFO + "{*gtbm.top.industrial_apiary.species*} " + speciesName);
6459
}

src/main/resources/assets/gtbm/lang/en_us.lang

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,5 @@ gtbm.multiblock.mega_apiary.outputs=%s: §6x%s
6666
# TOP
6767
gtbm.top.mega_apiary.queen=Queen:
6868
gtbm.top.industrial_apiary.species=Species:
69-
gtbm.top.industrial_apiary.species.unknown=Unknown Species
7069
gtbm.top.industrial_apiary.production=Production:
7170
gtbm.top.industrial_apiary.lifespan=Lifespan:

src/main/resources/assets/gtbm/lang/ja_jp.lang

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ gtbm.farm.ceu=ゴムの木農園
3737
gtbm.farm.gtfo=果樹農園
3838

3939
# GUI
40-
gtbm.gui.auto_breeding.tooltip.enabled=自動交配を有効化 (現在は無効)/nクイーン死亡後にプリンセスを自動的に入力スロットに戻します
41-
gtbm.gui.auto_breeding.tooltip.disabled=自動交配を無効化 (現在は有効)/nプリンセスはアウトプットに残ります
40+
gtbm.gui.auto_breeding.tooltip.enabled=自動交配を無効化 (現在は有効)/nクイーン死亡後にプリンセスを自動的に入力スロットに戻します
41+
gtbm.gui.auto_breeding.tooltip.disabled=自動交配を有効化 (現在は無効)/nプリンセスはアウトプットに残ります
4242

4343
# Multiblock Display
4444
gtbm.multiblock.progress=進捗: %s / %s (%s%%)
@@ -66,6 +66,5 @@ gtbm.multiblock.mega_apiary.outputs=%s: §6x%s
6666
# TOP
6767
gtbm.top.mega_apiary.queen=女王:
6868
gtbm.top.industrial_apiary.species=種:
69-
gtbm.top.industrial_apiary.species.unknown=不明な種
7069
gtbm.top.industrial_apiary.production=生産速度:
7170
gtbm.top.industrial_apiary.lifespan=寿命:

0 commit comments

Comments
 (0)