Compare commits

...
7 changed files with 64 additions and 4 deletions

No files matched your search

+1
View File
@@ -9,5 +9,6 @@ dependencies {
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.57:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly('curse.maven:craftguide-75557:2459320')
compileOnly('com.github.GTNewHorizons:Postea:1.4.0-mu:dev')
devOnlyNonPublishable('net.xonich.mc:NoHotbarNeeded:0.0.3:dev')
}
@@ -111,6 +111,14 @@ public class AlvearyController extends RectangularMultiblockControllerBase
this.readFromNBT(data);
}
@Override
public void detachBlock(IMultiblockComponent part, boolean chunkUnloading) {
if (!chunkUnloading) {
inventory.dumpInventoryIntoWorld(this.worldObj, part.getCoordinates());
}
super.detachBlock(part, chunkUnloading);
}
@Override
protected void onBlockAdded(IMultiblockComponent newPart) {
if (newPart instanceof IAlvearyComponent) {
@@ -159,8 +167,6 @@ public class AlvearyController extends RectangularMultiblockControllerBase
activeComponents.remove(oldPart);
}
}
inventory.dumpInventoryIntoWorld(this.worldObj, oldPart.getCoordinates());
}
@Override
@@ -202,7 +202,8 @@ public abstract class Genome implements IGenome {
private static IChromosome[] getChromosomes(NBTTagCompound genomeNBT, ISpeciesRoot speciesRoot) {
NBTTagList chromosomesNBT = genomeNBT.getTagList("Chromosomes", 10);
IChromosome[] chromosomes = new IChromosome[speciesRoot.getDefaultTemplate().length];
IAllele[] defaultTemplate = speciesRoot.getDefaultTemplate();
IChromosome[] chromosomes = new IChromosome[defaultTemplate.length];
for (int i = 0; i < chromosomesNBT.tagCount(); i++) {
NBTTagCompound chromosomeNBT = chromosomesNBT.getCompoundTagAt(i);
@@ -213,7 +214,7 @@ public abstract class Genome implements IGenome {
chromosomes[chromosomeOrdinal] = chromosome;
if (Config.clearInvalidChromosomes) {
IAllele template = speciesRoot.getDefaultTemplate()[chromosomeOrdinal];
IAllele template = defaultTemplate[chromosomeOrdinal];
Class<? extends IAllele> chromosomeClass = speciesRoot.getKaryotype()[chromosomeOrdinal]
.getAlleleClass();
if (chromosome.overrideInvalidAlleles(template, chromosomeClass)) {
@@ -32,6 +32,10 @@ public class MutationConditionRequiresResource implements IMutationCondition {
blockRequired = new ItemStack(block, 1, meta);
}
public ItemStack getBlockRequired() {
return blockRequired.copy();
}
@Override
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0,
IGenome genome1, IClimateProvider climate) {
@@ -39,6 +39,10 @@ public class MutationConditionRequiresResourceOreDict implements IMutationCondit
}
}
public int getOreDictId() {
return oreDictId;
}
@Override
public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0,
IGenome genome1, IClimateProvider climate) {
@@ -0,0 +1,41 @@
package forestry.core.utils;
import com.gtnewhorizons.postea.api.IVersionedTransformer;
import net.minecraft.nbt.NBTTagCompound;
import com.gtnewhorizons.postea.api.CustomDataReplacementManager;
import cpw.mods.fml.common.Loader;
/// Used to provide custom save data (like mail boxes) to Postea's [IVersionedTransformer]s.
///
/// These transformers allow other mods to change saved data based on their own version stamps. This compat flags,
/// to those transformers, the times they should fire. [#transform] is used before consuming data, so the transformer
/// can run, and [#stamp] is used for fresh data to ensure the transformer can add a stamp of its current version.
public final class PosteaCompat {
private static final boolean POSTEA = Loader.isModLoaded("postea");
private PosteaCompat() {}
/// Transforms a root read from disk in place; call before consuming it.
public static void transform(String storageId, NBTTagCompound root) {
if (POSTEA) Impl.transform(storageId, root);
}
/// Stamps a freshly built root about to be written to disk.
public static void stamp(NBTTagCompound root) {
if (POSTEA) Impl.stamp(root);
}
private static final class Impl {
static void transform(String storageId, NBTTagCompound root) {
CustomDataReplacementManager.transform(storageId, root);
}
static void stamp(NBTTagCompound root) {
CustomDataReplacementManager.stamp(root);
}
}
}
+3
View File
@@ -19,6 +19,7 @@ import forestry.api.mail.IMailAddress;
import forestry.api.mail.PostManager;
import forestry.core.inventory.InventoryAdapter;
import forestry.core.utils.InventoryUtil;
import forestry.core.utils.PosteaCompat;
public class POBox extends WorldSavedData implements IInventory {
@@ -42,6 +43,7 @@ public class POBox extends WorldSavedData implements IInventory {
@Override
public void readFromNBT(NBTTagCompound nbttagcompound) {
PosteaCompat.transform("forestry:" + mapName, nbttagcompound);
if (nbttagcompound.hasKey("address")) {
this.address = MailAddress.loadFromNBT(nbttagcompound.getCompoundTag("address"));
}
@@ -56,6 +58,7 @@ public class POBox extends WorldSavedData implements IInventory {
nbttagcompound.setTag("address", nbt);
}
letters.writeToNBT(nbttagcompound);
PosteaCompat.stamp(nbttagcompound);
}
public boolean storeLetter(ItemStack letterstack) {