#552 Fix display of non-default fruit types on trees

This commit is contained in:
mezz committed 2015-03-22 16:48:37 -07:00
1 parent 0f61cea75e
commit 558d78bc63
3 files changed
+34 -11

No files matched your search

@@ -31,6 +31,7 @@ import net.minecraftforge.common.EnumPlantType;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.arboriculture.EnumTreeChromosome;
import forestry.api.arboriculture.IAlleleTreeSpecies;
import forestry.api.arboriculture.IFruitProvider;
import forestry.api.arboriculture.ILeafTickHandler;
@@ -121,7 +122,7 @@ public class TileLeaves extends TileTreeContainer implements IPollinatable, IFru
if (tree != null) {
setTree(tree);
} else if (speciesUID != null) {
setTree(speciesUID, false);
setTree(speciesUID, false, null);
}
}
@@ -193,7 +194,7 @@ public class TileLeaves extends TileTreeContainer implements IPollinatable, IFru
effectData = tree.doEffect(effectData, worldObj, biome.biomeID, xCoord, yCoord, zCoord);
}
public void setTree(String speciesUID, boolean isPollinatedState) {
public void setTree(String speciesUID, boolean isPollinatedState, String fruitAlleleUID) {
ITree tree = getTree();
if (tree != null && tree.getIdent().equals(speciesUID)) {
return;
@@ -201,6 +202,13 @@ public class TileLeaves extends TileTreeContainer implements IPollinatable, IFru
IAllele[] treeTemplate = PluginArboriculture.treeInterface.getTemplate(speciesUID);
if (treeTemplate != null) {
if (fruitAlleleUID != null) {
IAllele fruitAllele = AlleleManager.alleleRegistry.getAllele(fruitAlleleUID);
if (fruitAllele != null) {
treeTemplate[EnumTreeChromosome.FRUITS.ordinal()] = fruitAllele;
}
}
ITree newTree = PluginArboriculture.treeInterface.templateAsIndividual(treeTemplate);
if (isPollinatedState) {
newTree.mate(newTree);
@@ -387,9 +395,10 @@ public class TileLeaves extends TileTreeContainer implements IPollinatable, IFru
isPollinatedState = packet.isPollinated();
colourFruits = packet.getColourFruits();
String fruitAlleleUID = packet.getFruitAlleleUID();
speciesUID = packet.getSpeciesUID();
setTree(speciesUID, isPollinatedState);
setTree(speciesUID, isPollinatedState, fruitAlleleUID);
worldObj.func_147479_m(xCoord, yCoord, zCoord);
}
@@ -17,6 +17,7 @@ import java.io.IOException;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import forestry.api.arboriculture.EnumTreeChromosome;
import forestry.api.arboriculture.ITree;
import forestry.arboriculture.gadgets.TileLeaves;
import forestry.core.network.ForestryPacket;
@@ -32,6 +33,7 @@ public class PacketLeafUpdate extends ForestryPacket implements ILocatedPacket {
private byte leafState = 0;
private int colourFruits = -1;
private String fruitAlleleUID;
private String speciesUID = "";
public PacketLeafUpdate() {
@@ -47,15 +49,13 @@ public class PacketLeafUpdate extends ForestryPacket implements ILocatedPacket {
leafState = 0;
if (leaves.hasFruit()) {
leafState |= hasFruitFlag;
fruitAlleleUID = leaves.getTree().getGenome().getActiveAllele(EnumTreeChromosome.FRUITS).getUID();
colourFruits = leaves.getFruitColour();
}
if (leaves.isPollinated()) {
leafState |= isPollinatedFlag;
}
if (leaves.hasFruit()) {
colourFruits = leaves.getFruitColour();
}
ITree tree = leaves.getTree();
if (tree != null) {
speciesUID = tree.getIdent();
@@ -69,7 +69,11 @@ public class PacketLeafUpdate extends ForestryPacket implements ILocatedPacket {
data.writeShort(posZ);
data.writeByte(leafState);
data.writeUTF(speciesUID);
data.writeInt(colourFruits);
if (isFruitLeaf()) {
data.writeUTF(fruitAlleleUID);
data.writeInt(colourFruits);
}
}
@Override
@@ -79,9 +83,13 @@ public class PacketLeafUpdate extends ForestryPacket implements ILocatedPacket {
posZ = data.readShort();
leafState = data.readByte();
speciesUID = data.readUTF();
colourFruits = data.readInt();
}
if (isFruitLeaf()) {
fruitAlleleUID = data.readUTF();
colourFruits = data.readInt();
}
}
public boolean isFruitLeaf() {
return (leafState & hasFruitFlag) > 0;
}
@@ -90,6 +98,10 @@ public class PacketLeafUpdate extends ForestryPacket implements ILocatedPacket {
return (leafState & isPollinatedFlag) > 0;
}
public String getFruitAlleleUID() {
return fruitAlleleUID;
}
public int getColourFruits() {
return colourFruits;
}
@@ -11,6 +11,7 @@
package forestry.core.genetics;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -61,7 +62,8 @@ public abstract class SpeciesRoot implements ISpeciesRoot {
@Override
public IAllele[] getTemplate(String identifier) {
return speciesTemplates.get(identifier);
IAllele[] template = speciesTemplates.get(identifier);
return Arrays.copyOf(template, template.length);
}
/* MUTATIONS */