1111import net .minecraft .item .ItemStack ;
1212import net .minecraft .nbt .NBTTagCompound ;
1313import net .minecraft .util .EnumFacing ;
14+ import net .minecraft .util .NonNullList ;
1415import net .minecraft .util .ResourceLocation ;
1516import net .minecraft .util .math .BlockPos ;
1617import net .minecraft .util .math .Vec3d ;
4243import forestry .api .core .*;
4344import forestry .api .genetics .IIndividual ;
4445import forestry .core .errors .ErrorLogic ;
46+ import forestry .core .owner .OwnerHandler ;
4547
4648public 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
0 commit comments