mirror of
https://github.com/GTNewHorizons/ForestryMC.git
synced 2026-11-14 01:04:12 +00:00
#552 Fix display of non-default fruit types on trees
This commit is contained in:
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 */
|
||||
|
||||
Reference in new issue
Block a user