diff --git a/build.gradle b/build.gradle index 568fc74c9..88026e646 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ buildscript { } } dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' classpath 'gradle.plugin.com.rlonryan:QuikMod:1.0.18' } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index deedc7fa5..c8028e615 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7a3e3ee4d..a79fd8079 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Nov 20 14:53:20 MST 2016 +#Fri Jan 13 21:44:51 MST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip diff --git a/gradlew b/gradlew index 9aa616c27..4453ccea3 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -154,16 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then cd "$(dirname "$0")" fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/lib/AgriCore b/lib/AgriCore index fd0565bb1..0b5578ef0 160000 --- a/lib/AgriCore +++ b/lib/AgriCore @@ -1 +1 @@ -Subproject commit fd0565bb1a53621dd8ae80cc43a09eaaf6be4ee9 +Subproject commit 0b5578ef0fcc75e697476800c487958203261b67 diff --git a/lib/AgriPlants b/lib/AgriPlants index d23d13d19..9c89a7e9a 160000 --- a/lib/AgriPlants +++ b/lib/AgriPlants @@ -1 +1 @@ -Subproject commit d23d13d19304e15533283ea6870c64d27e558a64 +Subproject commit 9c89a7e9ac10d51363c1dc3099bb1652869bca9f diff --git a/lib/InfinityLib b/lib/InfinityLib index b23e590f6..f8987b050 160000 --- a/lib/InfinityLib +++ b/lib/InfinityLib @@ -1 +1 @@ -Subproject commit b23e590f680b4d8b37bcf5f1860a6105a6560428 +Subproject commit f8987b0506b04e1be72340fa00abbc2d9c7f8e64 diff --git a/mod.properties b/mod.properties index 5c020cc6e..0911ffacb 100644 --- a/mod.properties +++ b/mod.properties @@ -11,7 +11,7 @@ package = com.infinityraider.agricraft # Version version_major = 2 version_minor = 0 -version_patch = 0-0.4.0-a5 +version_patch = 0-0.5.0-a6 # Core version_minecraft = 1.10.2 @@ -24,4 +24,4 @@ mod_class = AgriCraft.java reference_class = reference/Reference.java # Update Tracker -update_url = https://agricraft.github.io/versions/1.10/update.json +update_url = https://agricraft.github.io/versions/1.11/update.json diff --git a/src/main/java/com/infinityraider/agricraft/api/crop/IAgriCrop.java b/src/main/java/com/infinityraider/agricraft/api/crop/IAgriCrop.java index 69910366d..93ab49b77 100644 --- a/src/main/java/com/infinityraider/agricraft/api/crop/IAgriCrop.java +++ b/src/main/java/com/infinityraider/agricraft/api/crop/IAgriCrop.java @@ -7,6 +7,7 @@ import com.infinityraider.agricraft.api.fertilizer.IAgriFertilizable; import com.infinityraider.agricraft.api.misc.IAgriHarvestable; import com.infinityraider.agricraft.api.misc.IAgriWeedable; +import com.infinityraider.agricraft.api.plant.IAgriPlant; import com.infinityraider.agricraft.api.seed.AgriSeed; import com.infinityraider.agricraft.api.seed.IAgriSeedAcceptor; import com.infinityraider.agricraft.api.seed.IAgriSeedProvider; @@ -59,7 +60,11 @@ default boolean isFertile() { return this.getSeed().filter(this::isFertile).isPresent(); } - boolean isFertile(AgriSeed seed); + default boolean isFertile(AgriSeed seed) { + return isFertile(seed.getPlant()); + } + + boolean isFertile(IAgriPlant plant); /** * @return if this crop is fully grown diff --git a/src/main/java/com/infinityraider/agricraft/api/soil/IAgriSoilRegistry.java b/src/main/java/com/infinityraider/agricraft/api/soil/IAgriSoilRegistry.java index e54011115..ca89d210b 100644 --- a/src/main/java/com/infinityraider/agricraft/api/soil/IAgriSoilRegistry.java +++ b/src/main/java/com/infinityraider/agricraft/api/soil/IAgriSoilRegistry.java @@ -15,7 +15,7 @@ */ public interface IAgriSoilRegistry { - boolean isSoil(IAgriSoil plant); + boolean isSoil(IAgriSoil soil); Optional getSoil(String id); @@ -33,9 +33,9 @@ default Optional getSoil(FuzzyStack stack) { .findFirst(); } - boolean addSoil(IAgriSoil plant); + boolean addSoil(IAgriSoil soil); - boolean removeSoil(IAgriSoil plant); + boolean removeSoil(IAgriSoil soil); List getSoils(); diff --git a/src/main/java/com/infinityraider/agricraft/apiimpl/SoilRegistry.java b/src/main/java/com/infinityraider/agricraft/apiimpl/SoilRegistry.java index f8c9c9404..220bb9afe 100644 --- a/src/main/java/com/infinityraider/agricraft/apiimpl/SoilRegistry.java +++ b/src/main/java/com/infinityraider/agricraft/apiimpl/SoilRegistry.java @@ -12,50 +12,50 @@ /** * - * + * */ public class SoilRegistry implements IAgriSoilRegistry { - - private static final IAgriSoilRegistry INSTANCE = new SoilRegistry(); - - private final ConcurrentMap soils; - - public SoilRegistry() { - this.soils = new ConcurrentHashMap<>(); - } - - public static IAgriSoilRegistry getInstance() { - return INSTANCE; - } - - @Override - public boolean isSoil(IAgriSoil plant) { - return this.soils.containsKey(plant.getId()); - } - - @Override - public Optional getSoil(String id) { - return Optional.ofNullable(this.soils.get(id)); - } - - @Override - public boolean addSoil(IAgriSoil plant) { - return this.soils.putIfAbsent(plant.getId(), plant) == null; - } - - @Override - public boolean removeSoil(IAgriSoil plant) { - return this.soils.remove(plant.getId()) != null; - } - - @Override - public List getSoils() { - return new ArrayList<>(this.soils.values()); - } - - @Override - public List getSoilIds() { - return new ArrayList<>(this.soils.keySet()); - } - + + private static final IAgriSoilRegistry INSTANCE = new SoilRegistry(); + + private final ConcurrentMap soils; + + public SoilRegistry() { + this.soils = new ConcurrentHashMap<>(); + } + + public static IAgriSoilRegistry getInstance() { + return INSTANCE; + } + + @Override + public boolean isSoil(IAgriSoil soil) { + return this.soils.containsKey(soil.getId()); + } + + @Override + public Optional getSoil(String id) { + return Optional.ofNullable(this.soils.get(id)); + } + + @Override + public boolean addSoil(IAgriSoil soil) { + return this.soils.putIfAbsent(soil.getId(), soil) == null; + } + + @Override + public boolean removeSoil(IAgriSoil soil) { + return this.soils.remove(soil.getId()) != null; + } + + @Override + public List getSoils() { + return new ArrayList<>(this.soils.values()); + } + + @Override + public List getSoilIds() { + return new ArrayList<>(this.soils.keySet()); + } + } diff --git a/src/main/java/com/infinityraider/agricraft/blocks/tiles/TileEntityCrop.java b/src/main/java/com/infinityraider/agricraft/blocks/tiles/TileEntityCrop.java index e6c7f9545..17fbd1851 100644 --- a/src/main/java/com/infinityraider/agricraft/blocks/tiles/TileEntityCrop.java +++ b/src/main/java/com/infinityraider/agricraft/blocks/tiles/TileEntityCrop.java @@ -302,9 +302,9 @@ public Optional removeStat() { } @Override - public boolean isFertile(AgriSeed seed) { + public boolean isFertile(IAgriPlant plant) { return worldObj.isAirBlock(this.getPos().add(0, 1, 0)) - && seed.getPlant().getGrowthRequirement().isMet(this.worldObj, pos); + && plant.getGrowthRequirement().isMet(this.worldObj, pos); } @SideOnly(Side.CLIENT) @@ -329,7 +329,7 @@ public Optional getSoil() { public boolean spawn() { if (!hasPlant()) { for (IAgriPlant p : PlantRegistry.getInstance().getPlants()) { - if (p.getSpawnChance() > this.getRandom().nextDouble()) { + if (p.getSpawnChance() > this.getRandom().nextDouble() && this.isFertile(p)) { this.setCrossCrop(false); this.setStat(new PlantStats()); this.setPlant(p); @@ -560,7 +560,7 @@ public void addServerDebugInfo(List list) { list.add(" - Fertile: " + this.isFertile()); list.add(" - Mature: " + this.isMature()); list.add(" - AgriSoil: " + this.plant.getGrowthRequirement().getSoils().stream() - .findFirst().map(IAgriSoil::getId).orElse("Any") + .findFirst().map(IAgriSoil::getId).orElse("None") ); } else { list.add(" - This crop has no plant"); diff --git a/src/main/java/com/infinityraider/agricraft/core/JsonPlant.java b/src/main/java/com/infinityraider/agricraft/core/JsonPlant.java index 27686cf79..100413dd9 100644 --- a/src/main/java/com/infinityraider/agricraft/core/JsonPlant.java +++ b/src/main/java/com/infinityraider/agricraft/core/JsonPlant.java @@ -138,7 +138,7 @@ protected final IGrowthRequirement initGrowthRequirementJSON() { } if (this.plant.getRequirement().getSoils().isEmpty()) { - AgriCore.getLogger("AgriCraft").warn("{0} has no valid soils to plant on!", this.plant.getPlantName()); + AgriCore.getLogger("AgriCraft").warn("Plant: \"{0}\" has no valid soils to plant on!", this.plant.getPlantName()); } this.plant.getRequirement().getSoils().stream() diff --git a/src/main/java/com/infinityraider/agricraft/init/AgriRecipes.java b/src/main/java/com/infinityraider/agricraft/init/AgriRecipes.java index af8dca365..1d11d1bd7 100644 --- a/src/main/java/com/infinityraider/agricraft/init/AgriRecipes.java +++ b/src/main/java/com/infinityraider/agricraft/init/AgriRecipes.java @@ -138,7 +138,7 @@ private static void registerCustomWoodRecipes() { private static void initWoodList() { if (woodList.isEmpty()) { - ReflectionHelper.forEachIn(AgriBlocks.getInstance(), BlockCustomWood.class, (BlockCustomWood b) -> { + ReflectionHelper.forEachValueIn(AgriBlocks.getInstance(), BlockCustomWood.class, (BlockCustomWood b) -> { AgriCore.getLogger("AgriCraft").debug("Block: {0} Item: {1}", b, Item.getItemFromBlock(b)); Optional.ofNullable(Item.getItemFromBlock(b)) .filter(i -> i instanceof ItemBlockCustomWood) diff --git a/src/main/java/com/infinityraider/agricraft/renderers/PlantRenderer.java b/src/main/java/com/infinityraider/agricraft/renderers/PlantRenderer.java index fd532ff63..276707bfd 100644 --- a/src/main/java/com/infinityraider/agricraft/renderers/PlantRenderer.java +++ b/src/main/java/com/infinityraider/agricraft/renderers/PlantRenderer.java @@ -51,17 +51,17 @@ public static void renderHashTagPattern(ITessellator tessellator, TextureAtlasSp tessellator.drawScaledFaceDouble(0, minY, 16, maxY, EnumFacing.EAST, icon, 12); } + // TODO: Find way to do without translations. public static void renderCrossPattern(ITessellator tessellator, TextureAtlasSprite icon, int layer) { - int minY = 12 * layer; - int maxY = 12 * (layer + 1); - tessellator.drawScaledFaceDouble(-2, minY, 10, maxY, EnumFacing.NORTH, icon, 3.999F); - tessellator.drawScaledFaceDouble(6, minY, 18, maxY, EnumFacing.NORTH, icon, 4.001F); - tessellator.drawScaledFaceDouble(-2, minY, 10, maxY, EnumFacing.EAST, icon, 3.999F); - tessellator.drawScaledFaceDouble(6, minY, 18, maxY, EnumFacing.EAST, icon, 4.001F); - tessellator.drawScaledFaceDouble(-2, minY, 10, maxY, EnumFacing.NORTH, icon, 11.999F); - tessellator.drawScaledFaceDouble(6, minY, 18, maxY, EnumFacing.NORTH, icon, 12.001F); - tessellator.drawScaledFaceDouble(-2, minY, 10, maxY, EnumFacing.EAST, icon, 11.999F); - tessellator.drawScaledFaceDouble(6, minY, 18, maxY, EnumFacing.EAST, icon, 12.001F); + int minY = 16 * layer; + int maxY = 16 * (layer + 1); + tessellator.pushMatrix(); + tessellator.translate(0.5, 0, 0.5); + tessellator.rotate(45, 0, 1, 0); + tessellator.translate(-0.5, 0, -0.5); + tessellator.drawScaledFaceDouble(0, minY, 16, maxY, EnumFacing.NORTH, icon, 8); + tessellator.drawScaledFaceDouble(0, minY, 16, maxY, EnumFacing.EAST, icon, 8); + tessellator.popMatrix(); } public static void renderStemPlant(ITessellator tessellator, TextureAtlasSprite vineIcon, TextureAtlasSprite fruitIcon, int stage, Block vine) { diff --git a/src/main/resources/changelog.txt b/src/main/resources/changelog.txt index 604186e48..83a25531e 100644 --- a/src/main/resources/changelog.txt +++ b/src/main/resources/changelog.txt @@ -1,7 +1,10 @@ Changelog --------- 2.0.0a6 -- ADDED: Seed item configurability, allows for meta-sensitive seeds. +- ADDED: Seed item configurability, allows for meta-sensitive seeds. +- FIXED: Plants spawning on infertile soil. +- FIXED: Invalid texture message displaying {0} instead of invalid texture entry. +- FIXED: Render type 'cross' rendering as 'hash' instead. - FIXED: Default melon texture is wheat. - FIXED: Growth & Gain stats randomly switching places. - FIXED: Crash caused by sprinklers and class casting.