├── .gitignore ├── .idea └── uiDesigner.xml ├── README.md ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── src └── main │ ├── java │ └── uk │ │ └── co │ │ └── haxyshideout │ │ ├── chococraft2 │ │ ├── ChocoCraft2.java │ │ ├── blocks │ │ │ ├── GysahlStemBlock.java │ │ │ └── StrawBlock.java │ │ ├── client │ │ │ └── gui │ │ │ │ └── ChocopediaGui.java │ │ ├── commands │ │ │ └── DebugCommand.java │ │ ├── config │ │ │ ├── Additions.java │ │ │ ├── ChocoCreativeTabs.java │ │ │ ├── ChococraftConfig.java │ │ │ ├── Constants.java │ │ │ └── RecipeHandler.java │ │ ├── entities │ │ │ ├── ChocoboAbilityInfo.java │ │ │ ├── DefaultNames.java │ │ │ ├── EntityBabyChocobo.java │ │ │ ├── EntityChocobo.java │ │ │ ├── RiderState.java │ │ │ ├── ai │ │ │ │ ├── ChocoboAIAvoidPlayer.java │ │ │ │ ├── ChocoboAIFollowLure.java │ │ │ │ ├── ChocoboAIFollowOwner.java │ │ │ │ ├── ChocoboAIHealInPen.java │ │ │ │ ├── ChocoboAIMate.java │ │ │ │ └── ChocoboAIWatchPlayer.java │ │ │ ├── breeding │ │ │ │ └── Breeding.java │ │ │ ├── models │ │ │ │ ├── ModelBabyChocobo.java │ │ │ │ └── ModelChocobo.java │ │ │ └── renderer │ │ │ │ ├── BabyChocoboRenderer.java │ │ │ │ └── ChocoboRenderer.java │ │ ├── events │ │ │ └── EventHandler.java │ │ ├── items │ │ │ ├── ChocoboWhistleItem.java │ │ │ └── SpawnEggItem.java │ │ ├── network │ │ │ ├── PacketRegistry.java │ │ │ └── side │ │ │ │ └── server │ │ │ │ ├── ChocopediaEditPacket.java │ │ │ │ ├── DropGearPacket.java │ │ │ │ └── RiderStateUpdatePacket.java │ │ ├── proxies │ │ │ ├── ClientProxy.java │ │ │ └── ServerProxy.java │ │ └── worldgen │ │ │ └── GysahlGen.java │ │ └── haxylib │ │ ├── blocks │ │ ├── GenericBlock.java │ │ └── GenericBush.java │ │ ├── debug │ │ └── DebugHelper.java │ │ ├── items │ │ ├── GenericArmor.java │ │ ├── GenericItem.java │ │ ├── GenericItemFood.java │ │ ├── GenericItemSeeds.java │ │ ├── GenericSpawnEgg.java │ │ └── IJsonItem.java │ │ ├── utils │ │ ├── FormattingHelper.java │ │ ├── InventoryHelper.java │ │ ├── JsonGenerator.java │ │ ├── RandomHelper.java │ │ ├── RecipeHelper.java │ │ ├── RegistryHelper.java │ │ └── WorldHelper.java │ │ └── worldgen │ │ └── BushGen.java │ └── resources │ ├── assets │ ├── chococraft2 │ │ ├── blockstates │ │ │ ├── gysahlStemBlock.json │ │ │ └── strawBlock.json │ │ ├── cfg │ │ │ └── breeding.hocon │ │ ├── lang │ │ │ ├── chocopedia │ │ │ │ └── en_US.hocon │ │ │ └── en_US.lang │ │ ├── models │ │ │ ├── block │ │ │ │ ├── gysahlGreenBlock.json │ │ │ │ ├── gysahlStem0.json │ │ │ │ ├── gysahlStem1.json │ │ │ │ ├── gysahlStem2.json │ │ │ │ ├── gysahlStem3.json │ │ │ │ └── strawBlock.json │ │ │ └── item │ │ │ │ ├── baseItem.json │ │ │ │ ├── blackSpawnEggItem.json │ │ │ │ ├── blueSpawnEggItem.json │ │ │ │ ├── chocoDisguiseBoots.json │ │ │ │ ├── chocoDisguiseChest.json │ │ │ │ ├── chocoDisguiseHelm.json │ │ │ │ ├── chocoDisguiseLegs.json │ │ │ │ ├── chocoboFeatherItem.json │ │ │ │ ├── chocoboLegCookedItem.json │ │ │ │ ├── chocoboLegRawItem.json │ │ │ │ ├── chocoboPackBagItem.json │ │ │ │ ├── chocoboSaddleBagItem.json │ │ │ │ ├── chocoboSaddleItem.json │ │ │ │ ├── chocoboWhistleItem.json │ │ │ │ ├── chocopediaItem.json │ │ │ │ ├── goldSpawnEggItem.json │ │ │ │ ├── greenSpawnEggItem.json │ │ │ │ ├── gysahlCakeItem.json │ │ │ │ ├── gysahlChibiItem.json │ │ │ │ ├── gysahlCookedPicklesItem.json │ │ │ │ ├── gysahlGoldenItem.json │ │ │ │ ├── gysahlGreenItem.json │ │ │ │ ├── gysahlLoverlyItem.json │ │ │ │ ├── gysahlPinkItem.json │ │ │ │ ├── gysahlRawPicklesItem.json │ │ │ │ ├── gysahlRedItem.json │ │ │ │ ├── gysahlSeedsItem.json │ │ │ │ ├── gysahlStemBlock.json │ │ │ │ ├── pinkSpawnEggItem.json │ │ │ │ ├── purpleSpawnEggItem.json │ │ │ │ ├── redSpawnEggItem.json │ │ │ │ ├── strawBlock.json │ │ │ │ ├── whiteSpawnEggItem.json │ │ │ │ └── yellowSpawnEggItem.json │ │ ├── pack.mcmeta │ │ ├── sounds.json │ │ ├── sounds │ │ │ └── choco_kweh.ogg │ │ └── textures │ │ │ ├── blocks │ │ │ ├── chocoboStraw.png │ │ │ ├── gysahl_stem01.png │ │ │ ├── gysahl_stem02.png │ │ │ ├── gysahl_stem03.png │ │ │ ├── gysahl_stem04.png │ │ │ └── gysahl_stem05.png │ │ │ ├── entities │ │ │ ├── Chicobos │ │ │ │ ├── Tamed │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ │ └── Untamed │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ └── Chocobos │ │ │ │ ├── Tamed │ │ │ │ ├── Female │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ │ ├── Male │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ │ ├── PackBagged │ │ │ │ │ ├── Female │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ │ └── Male │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ ├── SaddleBagged │ │ │ │ │ ├── Female │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ │ └── Male │ │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ │ └── yellowchocobo.png │ │ │ │ └── Saddled │ │ │ │ │ ├── Female │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ │ │ └── Male │ │ │ │ │ ├── blackchocobo.png │ │ │ │ │ ├── bluechocobo.png │ │ │ │ │ ├── goldchocobo.png │ │ │ │ │ ├── greenchocobo.png │ │ │ │ │ ├── pinkchocobo.png │ │ │ │ │ ├── purplechocobo.png │ │ │ │ │ ├── redchocobo.png │ │ │ │ │ ├── whitechocobo.png │ │ │ │ │ └── yellowchocobo.png │ │ │ │ └── Untamed │ │ │ │ ├── Female │ │ │ │ ├── blackchocobo.png │ │ │ │ ├── bluechocobo.png │ │ │ │ ├── goldchocobo.png │ │ │ │ ├── greenchocobo.png │ │ │ │ ├── pinkchocobo.png │ │ │ │ ├── purplechocobo.png │ │ │ │ ├── redchocobo.png │ │ │ │ ├── whitechocobo.png │ │ │ │ └── yellowchocobo.png │ │ │ │ └── Male │ │ │ │ ├── blackchocobo.png │ │ │ │ ├── bluechocobo.png │ │ │ │ ├── goldchocobo.png │ │ │ │ ├── greenchocobo.png │ │ │ │ ├── pinkchocobo.png │ │ │ │ ├── purplechocobo.png │ │ │ │ ├── redchocobo.png │ │ │ │ ├── whitechocobo.png │ │ │ │ └── yellowchocobo.png │ │ │ ├── items │ │ │ ├── armor │ │ │ │ ├── chocoDisguiseBoots.png │ │ │ │ ├── chocoDisguiseChest.png │ │ │ │ ├── chocoDisguiseHelm.png │ │ │ │ └── chocoDisguiseLegs.png │ │ │ ├── blackSpawnEggItem.png │ │ │ ├── blueSpawnEggItem.png │ │ │ ├── chocoboFeatherItem.png │ │ │ ├── chocoboLegCookedItem.png │ │ │ ├── chocoboLegRawItem.png │ │ │ ├── chocoboPackBagItem.png │ │ │ ├── chocoboSaddleBagItem.png │ │ │ ├── chocoboSaddleItem.png │ │ │ ├── chocoboWhistleItem.png │ │ │ ├── chocopediaItem.png │ │ │ ├── goldSpawnEggItem.png │ │ │ ├── greenSpawnEggItem.png │ │ │ ├── gysahlCakeItem.png │ │ │ ├── gysahlChibiItem.png │ │ │ ├── gysahlCookedPicklesItem.png │ │ │ ├── gysahlGoldenItem.png │ │ │ ├── gysahlGreenItem.png │ │ │ ├── gysahlLoverlyItem.png │ │ │ ├── gysahlPinkItem.png │ │ │ ├── gysahlRawPicklesItem.png │ │ │ ├── gysahlRedItem.png │ │ │ ├── gysahlSeedsItem.png │ │ │ ├── liquefiedchocopedia.png │ │ │ ├── pinkSpawnEggItem.png │ │ │ ├── purpleSpawnEggItem.png │ │ │ ├── redSpawnEggItem.png │ │ │ ├── whiteSpawnEggItem.png │ │ │ └── yellowSpawnEggItem.png │ │ │ └── models │ │ │ └── armor │ │ │ ├── chocoDisguise_layer_1.png │ │ │ └── chocoDisguise_layer_2.png │ └── haxylib │ │ └── json │ │ ├── blockstates │ │ └── basicState.json │ │ └── models │ │ ├── block │ │ └── basicBlock.json │ │ └── item │ │ ├── basicItem.json │ │ └── basicItemBlock.json │ └── mcmod.info ├── tools ├── Chocobos │ ├── blackchocobo.png │ ├── bluechocobo.png │ ├── chocobo.png │ ├── goldchocobo.png │ ├── greenchocobo.png │ ├── pinkchocobo.png │ ├── purplechocobo.png │ ├── redchocobo.png │ ├── whitechocobo.png │ └── yellowchocobo.png ├── README.md ├── Textures │ ├── PackBagged.png │ ├── SaddleBagged.png │ ├── SaddleBagged2.png │ ├── Saddled.png │ ├── Tamed.png │ └── Untamed.png ├── Textures_blueCollar │ ├── Untamed.png │ ├── packbagged.png │ ├── saddlebagged.png │ ├── saddlebagged2.png │ ├── saddled.png │ └── tamed.png ├── Variations │ ├── Female.png │ └── Male.png └── generate_textures.sh └── updater └── update.json /.gitignore: -------------------------------------------------------------------------------- 1 | !src/ 2 | !.gitignore 3 | !gradlew* 4 | !gradle/ 5 | !LICENSE.txt 6 | !README.md 7 | !COPYING.lesser 8 | !build.gradle 9 | .classpath 10 | .gradle/ 11 | .project 12 | .settings/ 13 | bin/ 14 | config/ 15 | crash-reports/ 16 | logs/ 17 | options.txt 18 | saves/ 19 | screenshots/ 20 | usernamecache.json 21 | /.apt_generated/ 22 | build/ 23 | *.launch 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ChocoCraft2 2 | [![Build Status](https://drone.io/github.com/clienthax/ChocoCraft2/status.png)](https://drone.io/github.com/clienthax/ChocoCraft2/latest) 3 | 4 | This mod is the official updated ChocoCraft to Minecraft 1.8 (Actually re-written). 5 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | jcenter() 4 | maven { 5 | name = "forge" 6 | url = "http://files.minecraftforge.net/maven" 7 | } 8 | } 9 | dependencies { 10 | classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT' 11 | } 12 | } 13 | apply plugin: 'net.minecraftforge.gradle.forge' 14 | 15 | version = "0.0.2" 16 | group= "uk.co.haxyshideout.ChocoCraft2" // http://maven.apache.org/guides/mini/guide-naming-conventions.html 17 | archivesBaseName = "ChocoCraft2" 18 | 19 | idea { module { inheritOutputDirs = true } } 20 | 21 | configurations { 22 | shade 23 | compile.extendsFrom shade 24 | } 25 | 26 | minecraft { 27 | version = "1.8-11.14.3.1550" 28 | runDir = "run" 29 | mappings = "snapshot_20151106" 30 | } 31 | 32 | reobfJar { 33 | addExtraSrgLine "PK: ninja/leaping uk/co/haxyshideout/shaded/ninja/leaping" 34 | } 35 | 36 | repositories { 37 | mavenCentral() 38 | maven { 39 | url 'http://oss.sonatype.org/content/repositories/snapshots' 40 | } 41 | } 42 | 43 | dependencies { 44 | shade 'ninja.leaping.configurate:configurate-hocon:2.0.1-SNAPSHOT' 45 | compile 'org.projectlombok:lombok:1.16.6' 46 | } 47 | 48 | processResources 49 | { 50 | 51 | // replace stuff in mcmod.info, nothing else 52 | from(sourceSets.main.resources.srcDirs) { 53 | include 'mcmod.info' 54 | 55 | // replace version and mcversion 56 | expand 'version':project.version, 'mcversion':project.minecraft.version, 'fversion':"Forge 10.13.2.1230;Forge 10.13.0.1208;Forge 10.13.0.1180" 57 | } 58 | 59 | // copy everything else, thats not the mcmod.info 60 | from(sourceSets.main.resources.srcDirs) { 61 | exclude 'mcmod.info' 62 | } 63 | 64 | from(sourceSets.main.allSource) { 65 | include '**/*.data' 66 | include '**/*.schematic' 67 | } 68 | 69 | } 70 | 71 | // this sets our output jar to have a 'tag' of 'universal' on it 72 | // It also adds the minecraft version in a custom version name 73 | // The result is files named ---universal.jar 74 | jar { 75 | includeEmptyDirs = false 76 | classifier = 'universal' 77 | version = "${project.minecraft.version}-${project.version}" 78 | configurations.shade.each { dep -> 79 | from(project.zipTree(dep)){ 80 | exclude 'META-INF', 'META-INF/**' 81 | } 82 | } 83 | } 84 | 85 | // Add in an mcp named jar, for those who wish to run in a development environment (assuming mcp naming matches) 86 | task deobfJar(type: Jar) { 87 | from sourceSets.main.output 88 | classifier = 'deobf' 89 | version = "${project.minecraft.version}-${project.version}" 90 | } 91 | 92 | 93 | artifacts{ 94 | archives sourceJar, deobfJar 95 | } 96 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Jun 22 22:16:12 BST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-bin.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/ChocoCraft2.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2; 2 | 3 | import lombok.Getter; 4 | import net.minecraftforge.common.MinecraftForge; 5 | import net.minecraftforge.fml.common.FMLCommonHandler; 6 | import net.minecraftforge.fml.common.Mod; 7 | import net.minecraftforge.fml.common.SidedProxy; 8 | import net.minecraftforge.fml.common.event.FMLInitializationEvent; 9 | import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 10 | import net.minecraftforge.fml.common.event.FMLServerStartingEvent; 11 | import uk.co.haxyshideout.chococraft2.commands.DebugCommand; 12 | import uk.co.haxyshideout.chococraft2.config.Additions; 13 | import uk.co.haxyshideout.chococraft2.config.ChococraftConfig; 14 | import uk.co.haxyshideout.chococraft2.config.Constants; 15 | import uk.co.haxyshideout.chococraft2.config.RecipeHandler; 16 | import uk.co.haxyshideout.chococraft2.events.EventHandler; 17 | import uk.co.haxyshideout.chococraft2.network.PacketRegistry; 18 | import uk.co.haxyshideout.chococraft2.proxies.ServerProxy; 19 | 20 | /** 21 | * Created by clienthax on 12/4/2015. 22 | */ 23 | @Mod(modid = Constants.MODID, name = Constants.MODNAME, version = Constants.MODVERSION, updateJSON = "https://raw.githubusercontent.com/clienthax/ChocoCraft2/master/updater/update.json") 24 | public class ChocoCraft2 { 25 | /* 26 | TODO list 27 | achievements 28 | set eye height of chocobo 29 | Fix the god dam chocopedia entity info stuff 30 | after chocobos are ridden their wings get stuck upwards =/ 31 | chocobos sometimes run away to their original location after using the whistle 32 | 33 | optimizations: 34 | condense booleans in datawatcher. 35 | move out any reusable functions to haxylib 36 | 37 | additions: 38 | chocobos should run when they hear another chocobo being hurt 39 | trusted riders 40 | 41 | new mechanics: 42 | chocobos should lay eggs on straw that the player can pickup (block) 43 | incubator - long term 44 | dyable collars! - going to need to get that bloody image generator working for this stuff.. 45 | 46 | 47 | 48 | 49 | */ 50 | 51 | @SidedProxy(clientSide = "uk.co.haxyshideout.chococraft2.proxies.ClientProxy", serverSide = "uk.co.haxyshideout.chococraft2.proxies.ServerProxy") 52 | public static ServerProxy proxy; 53 | 54 | @Mod.Instance(value = Constants.MODID) 55 | public static ChocoCraft2 instance; 56 | 57 | @Getter 58 | private ChococraftConfig config = new ChococraftConfig(); 59 | 60 | @Mod.EventHandler 61 | public void onPreInit(FMLPreInitializationEvent event) { 62 | Additions.registerAdditions(); 63 | proxy.registerEntities(); 64 | proxy.registerRenderers(); 65 | proxy.registerWorldGenerators(); 66 | RecipeHandler.registerRecipies(); 67 | PacketRegistry.registerPackets(); 68 | } 69 | 70 | @Mod.EventHandler 71 | public void onInit(FMLInitializationEvent event) { 72 | EventHandler eventHandler = new EventHandler(); 73 | MinecraftForge.EVENT_BUS.register(eventHandler); 74 | FMLCommonHandler.instance().bus().register(eventHandler); 75 | proxy.registerEntities(); 76 | } 77 | 78 | @Mod.EventHandler 79 | public void onServerStart(FMLServerStartingEvent event) { 80 | event.registerServerCommand(new DebugCommand()); 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/blocks/GysahlStemBlock.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.blocks; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.IGrowable; 5 | import net.minecraft.block.properties.PropertyInteger; 6 | import net.minecraft.block.state.BlockState; 7 | import net.minecraft.block.state.IBlockState; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.item.Item; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.util.BlockPos; 12 | import net.minecraft.util.MovingObjectPosition; 13 | import net.minecraft.world.IBlockAccess; 14 | import net.minecraft.world.World; 15 | import uk.co.haxyshideout.chococraft2.config.Additions; 16 | import uk.co.haxyshideout.haxylib.blocks.GenericBush; 17 | 18 | import java.util.ArrayList; 19 | import java.util.List; 20 | import java.util.Random; 21 | 22 | /** 23 | * Created by clienthax on 12/4/2015. 24 | */ 25 | public class GysahlStemBlock extends GenericBush implements IGrowable { 26 | 27 | public static final Integer MAXSTAGE = 4; 28 | public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, MAXSTAGE); 29 | 30 | public GysahlStemBlock() { 31 | setTickRandomly(true); 32 | this.setDefaultState(this.blockState.getBaseState().withProperty(STAGE, 0)); 33 | float f = 0.4F; 34 | this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 2.0F, 0.5F + f); 35 | this.setStepSound(soundTypeGrass); 36 | this.setHardness(0f); 37 | } 38 | 39 | @Override 40 | public ItemStack getPickBlock(MovingObjectPosition target, World world, BlockPos pos, EntityPlayer player) { 41 | return new ItemStack(Additions.gysahlSeedsItem); 42 | } 43 | 44 | @Override 45 | public void randomTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { 46 | if(worldIn.isRemote) 47 | return; 48 | 49 | super.updateTick(worldIn, pos, state, rand); 50 | this.growStem(worldIn, rand, pos, state); 51 | } 52 | 53 | @Override 54 | public java.util.List getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) 55 | { 56 | //if stage = max stage, drop gysahl green item, else drop nothing 57 | List ret = new ArrayList(); 58 | if(state.getValue(STAGE) == MAXSTAGE) { 59 | Random rand = world instanceof World ? ((World)world).rand : new Random(); 60 | ret.add(getGysahlItem(rand)); 61 | 62 | //If fully grown give a seed drop chance 63 | int seedAmount = 3 + fortune; 64 | for(int i = 0; i < seedAmount; i++) { 65 | if(rand.nextInt(15) < 7) { 66 | ret.add(new ItemStack(Additions.gysahlSeedsItem)); 67 | } 68 | } 69 | } 70 | 71 | return ret; 72 | } 73 | 74 | private ItemStack getGysahlItem(Random random) { 75 | Item item; 76 | int chance = random.nextInt(200); 77 | if(chance < 10) 78 | item = Additions.gysahlGoldenItem; 79 | else if(chance < 30) 80 | item = Additions.gysahlLoverlyItem; 81 | else 82 | item = Additions.gysahlGreenItem; 83 | 84 | 85 | return new ItemStack(item); 86 | } 87 | 88 | @Override 89 | public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient) { 90 | return true; 91 | } 92 | 93 | @Override 94 | public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state) { 95 | return true; 96 | } 97 | 98 | @Override 99 | public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state) { 100 | super.updateTick(worldIn, pos, state, rand); 101 | this.growStem(worldIn, rand, pos, state); 102 | } 103 | 104 | private void growStem(World worldIn, Random rand, BlockPos pos, IBlockState state) { 105 | if(worldIn.getLightFromNeighbors(pos) >= 9) { 106 | if( (Integer) state.getValue(STAGE) < MAXSTAGE) { 107 | float growthChance = getGrowthChance(this, worldIn, pos); 108 | if(rand.nextInt((int)(25F / growthChance) + 1) == 0) { 109 | worldIn.setBlockState(pos, state.cycleProperty(STAGE), 2); 110 | } 111 | } 112 | } 113 | } 114 | 115 | public void setGrowthStage(World world, BlockPos pos, IBlockState state) { 116 | world.setBlockState(pos, state.withProperty(STAGE, 4), 2); 117 | } 118 | 119 | //Stolen from BlockCrops 120 | public float getGrowthChance(Block blockIn, World worldIn, BlockPos pos) 121 | { 122 | float f = 1.0F; 123 | BlockPos blockUnder = pos.down(); 124 | 125 | for (int i = -1; i <= 1; ++i) 126 | { 127 | for (int j = -1; j <= 1; ++j) 128 | { 129 | float f1 = 0.0F; 130 | IBlockState iblockstate = worldIn.getBlockState(blockUnder.add(i, 0, j)); 131 | 132 | if (iblockstate.getBlock().canSustainPlant(worldIn, blockUnder.add(i, 0, j), net.minecraft.util.EnumFacing.UP, (net.minecraftforge.common.IPlantable) blockIn)) 133 | { 134 | f1 = 1.0F; 135 | 136 | if (iblockstate.getBlock().isFertile(worldIn, blockUnder.add(i, 0, j))) 137 | { 138 | f1 = 3.0F; 139 | } 140 | } 141 | 142 | if (i != 0 || j != 0) 143 | { 144 | f1 /= 4.0F; 145 | } 146 | 147 | f += f1; 148 | } 149 | } 150 | 151 | BlockPos blockNorth = pos.north(); 152 | BlockPos blockSouth = pos.south(); 153 | BlockPos blockWest = pos.west(); 154 | BlockPos blockEast = pos.east(); 155 | boolean flag = blockIn == worldIn.getBlockState(blockWest).getBlock() || blockIn == worldIn.getBlockState(blockEast).getBlock(); 156 | boolean flag1 = blockIn == worldIn.getBlockState(blockNorth).getBlock() || blockIn == worldIn.getBlockState(blockSouth).getBlock(); 157 | 158 | if (flag && flag1) 159 | { 160 | f /= 2.0F; 161 | } 162 | else 163 | { 164 | boolean flag2 = blockIn == worldIn.getBlockState(blockWest.north()).getBlock() || blockIn == worldIn.getBlockState(blockEast.north()).getBlock() || blockIn == worldIn.getBlockState(blockEast.south()).getBlock() || blockIn == worldIn.getBlockState(blockWest.south()).getBlock(); 165 | 166 | if (flag2) 167 | { 168 | f /= 2.0F; 169 | } 170 | } 171 | 172 | return f; 173 | } 174 | 175 | 176 | /** 177 | * Convert the given metadata into a BlockState for this Block 178 | */ 179 | @Override 180 | public IBlockState getStateFromMeta(int meta) 181 | { 182 | return this.getDefaultState().withProperty(STAGE, meta); 183 | } 184 | 185 | /** 186 | * Convert the BlockState into the correct metadata value 187 | */ 188 | @Override 189 | public int getMetaFromState(IBlockState state) 190 | { 191 | return (Integer) state.getValue(STAGE); 192 | } 193 | 194 | @Override 195 | protected BlockState createBlockState() 196 | { 197 | return new BlockState(this, STAGE); 198 | } 199 | 200 | 201 | } 202 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/blocks/StrawBlock.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.blocks; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.material.Material; 5 | import uk.co.haxyshideout.haxylib.blocks.GenericBlock; 6 | 7 | /** 8 | * Created by clienthax on 13/4/2015. 9 | */ 10 | public class StrawBlock extends GenericBlock { 11 | 12 | public StrawBlock() { 13 | super(Material.carpet); 14 | this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); 15 | setOpaque(false); 16 | setFullCube(false); 17 | setStepSound(Block.soundTypeGrass); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/client/gui/ChocopediaGui.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.client.gui; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.gui.GuiButton; 5 | import net.minecraft.client.gui.GuiScreen; 6 | import net.minecraft.client.gui.GuiTextField; 7 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 8 | import uk.co.haxyshideout.chococraft2.network.PacketRegistry; 9 | import uk.co.haxyshideout.chococraft2.network.side.server.ChocopediaEditPacket; 10 | import uk.co.haxyshideout.chococraft2.network.side.server.DropGearPacket; 11 | 12 | import java.io.IOException; 13 | 14 | /** 15 | * Created by clienthax on 4/5/2015. 16 | */ 17 | public class ChocopediaGui extends GuiScreen { 18 | 19 | public EntityChocobo chocobo; 20 | GuiButton renameButton; 21 | GuiButton followOwnerButton; 22 | GuiButton changeOwnerButton; 23 | GuiButton applyButton; 24 | GuiButton dropGearButton; 25 | GuiTextField inputTextField; 26 | 27 | public String owner;//can't update these on the client, store here temperally and send to server on apply 28 | public String name; 29 | public EntityChocobo.MovementType movementType; 30 | 31 | enum InputType { 32 | none, name, owner 33 | } 34 | InputType currentInputType = InputType.none; 35 | 36 | public ChocopediaGui(EntityChocobo chocobo) { 37 | this.chocobo = chocobo; 38 | owner = Minecraft.getMinecraft().thePlayer.getCommandSenderName(); 39 | name = chocobo.getCustomNameTag(); 40 | movementType = chocobo.getMovementType(); 41 | } 42 | 43 | /** 44 | * Adds the buttons (and other controls) to the screen in question. Called when the GUI is displayed and when the 45 | * window resizes, the buttonList is cleared beforehand. 46 | */ 47 | @SuppressWarnings({"unchecked", "UnusedAssignment"}) 48 | @Override 49 | public void initGui() { 50 | int componentID = 0; 51 | int yPos = 24; 52 | int xPos = this.width / 2 - 100; 53 | renameButton = new GuiButton(componentID++, xPos, yPos+=24, 90, 20, "Rename"); 54 | followOwnerButton = new GuiButton(componentID++, xPos, yPos+=24, 90, 20, "Follow"); 55 | changeOwnerButton = new GuiButton(componentID++, xPos, yPos+=24, 90, 20, "Change Owner"); 56 | applyButton = new GuiButton(componentID++, xPos, yPos+=24, 90, 20, "Apply Changes"); 57 | dropGearButton = new GuiButton(componentID++, xPos, yPos+=48, 90, 20, "Drop Gear"); 58 | inputTextField = new GuiTextField(componentID++, fontRendererObj, xPos, 24, 100, 20); 59 | inputTextField.setVisible(false); 60 | updateMovementButton(); 61 | 62 | buttonList.add(renameButton); 63 | buttonList.add(followOwnerButton); 64 | buttonList.add(changeOwnerButton); 65 | buttonList.add(applyButton); 66 | buttonList.add(dropGearButton); 67 | } 68 | 69 | @Override 70 | public void updateScreen() { 71 | if(chocobo.isDead) 72 | this.mc.displayGuiScreen(null); 73 | 74 | } 75 | 76 | @SuppressWarnings("UnusedAssignment") 77 | @Override 78 | public void drawScreen(int mouseX, int mouseY, float partialTicks) { 79 | drawDefaultBackground(); 80 | super.drawScreen(mouseX, mouseY, partialTicks); 81 | 82 | int yPos = 30; 83 | int xPos = this.width / 2; 84 | 85 | drawString(fontRendererObj, "Name: "+name, xPos, yPos+=24, -8355712);//gray 86 | drawString(fontRendererObj, "Owner: "+owner, xPos, yPos+=12, -8355712); 87 | drawString(fontRendererObj, "Health: "+chocobo.getHealth()+"/"+chocobo.getMaxHealth(), xPos, yPos+=12, -8355712); 88 | drawString(fontRendererObj, "Sex: "+(chocobo.isMale() ? "Male" : "Female"), xPos, yPos+=12, -8355712);//TODO breeding 89 | 90 | if(inputTextField.getVisible()) 91 | inputTextField.drawTextBox(); 92 | 93 | } 94 | 95 | @Override 96 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { 97 | super.mouseClicked(mouseX, mouseY, mouseButton); 98 | this.inputTextField.mouseClicked(mouseX, mouseY, mouseButton); 99 | } 100 | 101 | @Override 102 | protected void keyTyped(char typedChar, int keyCode) throws IOException { 103 | super.keyTyped(typedChar, keyCode); 104 | this.inputTextField.textboxKeyTyped(typedChar, keyCode); 105 | if(keyCode == 28 && currentInputType != InputType.none) {//Enter key 106 | if(currentInputType == InputType.name) 107 | name = inputTextField.getText(); 108 | else if(currentInputType == InputType.owner) 109 | owner = inputTextField.getText(); 110 | closeInputBox(); 111 | } 112 | } 113 | 114 | @Override 115 | public void actionPerformed(GuiButton button) throws IOException { 116 | if(currentInputType != InputType.none) 117 | return; 118 | 119 | if(button == renameButton) { 120 | displayInputBox(InputType.name); 121 | } 122 | if(button == followOwnerButton) { 123 | changeMovementType(); 124 | } 125 | if(button == changeOwnerButton) { 126 | displayInputBox(InputType.owner); 127 | } 128 | if(button == applyButton) { 129 | PacketRegistry.INSTANCE.sendToServer(new ChocopediaEditPacket(this)); 130 | this.mc.displayGuiScreen(null); 131 | } 132 | if(button == dropGearButton) { 133 | PacketRegistry.INSTANCE.sendToServer(new DropGearPacket(chocobo)); 134 | this.mc.displayGuiScreen(null); 135 | } 136 | } 137 | 138 | private void changeMovementType() { 139 | switch (movementType) { 140 | case STANDSTILL: 141 | movementType = EntityChocobo.MovementType.FOLLOW_OWNER; 142 | break; 143 | case FOLLOW_OWNER: 144 | movementType = EntityChocobo.MovementType.WANDER; 145 | break; 146 | case WANDER: 147 | movementType = EntityChocobo.MovementType.STANDSTILL; 148 | break; 149 | } 150 | updateMovementButton(); 151 | } 152 | 153 | private void updateMovementButton() { 154 | switch (movementType) { 155 | case STANDSTILL: 156 | followOwnerButton.displayString = "Stand Still"; 157 | break; 158 | case FOLLOW_OWNER: 159 | followOwnerButton.displayString = "Follow Owner"; 160 | break; 161 | case WANDER: 162 | followOwnerButton.displayString = "Wander"; 163 | break; 164 | default: 165 | followOwnerButton.displayString = "ERROR"; 166 | break; 167 | } 168 | } 169 | 170 | private void displayInputBox(InputType name) { 171 | currentInputType = name; 172 | inputTextField.setText(""); 173 | inputTextField.setVisible(true); 174 | inputTextField.setCanLoseFocus(false); 175 | inputTextField.setFocused(true); 176 | } 177 | 178 | private void closeInputBox() { 179 | currentInputType = InputType.none; 180 | inputTextField.setVisible(false); 181 | inputTextField.setCanLoseFocus(true); 182 | inputTextField.setFocused(false); 183 | } 184 | 185 | @Override 186 | public boolean doesGuiPauseGame() { 187 | return false; 188 | } 189 | 190 | } 191 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/commands/DebugCommand.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.commands; 2 | 3 | import net.minecraft.command.CommandBase; 4 | import net.minecraft.command.CommandException; 5 | import net.minecraft.command.ICommandSender; 6 | import net.minecraft.entity.player.EntityPlayerMP; 7 | import uk.co.haxyshideout.chococraft2.config.Constants; 8 | import uk.co.haxyshideout.chococraft2.entities.DefaultNames; 9 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 10 | import uk.co.haxyshideout.haxylib.debug.DebugHelper; 11 | 12 | import java.util.Random; 13 | 14 | /** 15 | * Created by clienthax on 13/4/2015. 16 | */ 17 | public class DebugCommand extends CommandBase { 18 | 19 | @Override 20 | public String getCommandName() { 21 | return "chocodebug"; 22 | } 23 | 24 | @Override 25 | public String getCommandUsage(ICommandSender sender) { 26 | return "/"+getCommandName(); 27 | } 28 | 29 | @Override 30 | public void processCommand(ICommandSender sender, String[] args) throws CommandException { 31 | 32 | DebugHelper.langCheck(Constants.MODID); 33 | 34 | EntityChocobo chocobo = new EntityChocobo(sender.getEntityWorld()); 35 | EntityPlayerMP player = (EntityPlayerMP) sender; 36 | chocobo.setPosition(player.posX, player.posY, player.posZ); 37 | player.worldObj.spawnEntityInWorld(chocobo); 38 | // chocobo.setTamed(true); 39 | // chocobo.setOwnerId(((EntityPlayerMP) sender).getUniqueID().toString()); 40 | chocobo.setSaddled(false); 41 | chocobo.setCustomNameTag(DefaultNames.getRandomName(chocobo.isMale())); 42 | chocobo.setColor(EntityChocobo.ChocoboColor.values()[new Random().nextInt(EntityChocobo.ChocoboColor.values().length)]); 43 | 44 | // ChocopediaGui gui = new ChocopediaGui(chocobo); 45 | // Minecraft.getMinecraft().displayGuiScreen(gui); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/config/ChocoCreativeTabs.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.config; 2 | 3 | import net.minecraft.creativetab.CreativeTabs; 4 | import net.minecraft.item.Item; 5 | import net.minecraftforge.fml.relauncher.Side; 6 | import net.minecraftforge.fml.relauncher.SideOnly; 7 | 8 | /** 9 | * Created by clienthax on 12/4/2015. 10 | */ 11 | public class ChocoCreativeTabs { 12 | 13 | public static final CreativeTabs chococraft2 = new CreativeTabs("Chococraft2") { 14 | 15 | @Override 16 | @SideOnly(Side.CLIENT) 17 | public Item getTabIconItem() { 18 | return Additions.gysahlGreenItem; 19 | } 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/config/Constants.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.config; 2 | 3 | /** 4 | * Created by clienthax on 12/4/2015. 5 | */ 6 | public class Constants { 7 | public static final String MODID = "chococraft2"; 8 | public static final String MODNAME = "ChocoCraft2"; 9 | public static final String MODVERSION = "0.0.2"; 10 | 11 | // for EntityTamable, 2-5, 13-15, 18-31 are usable 12 | // http://www.minecraftforge.net/wiki/Datawatcher 13 | public static final int dataWatcherVariant = 31; 14 | public static final int dataWatcherBagType = 30; 15 | public static final int dataWatcherSaddled = 29; 16 | public static final int dataWatcherMale = 28; 17 | public static final int dataWatcherFollowingOwner = 27; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/config/RecipeHandler.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.config; 2 | 3 | import net.minecraft.init.Blocks; 4 | import net.minecraft.init.Items; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.fml.common.registry.GameRegistry; 7 | import net.minecraftforge.oredict.ShapelessOreRecipe; 8 | import uk.co.haxyshideout.haxylib.utils.RecipeHelper; 9 | 10 | /** 11 | * Created by clienthax on 13/4/2015. 12 | */ 13 | public class RecipeHandler { 14 | 15 | public static void registerRecipies() { 16 | //Recipe to make 3 seeds from a gysahl green 17 | GameRegistry.addShapelessRecipe(new ItemStack(Additions.gysahlSeedsItem, 3), new ItemStack(Additions.gysahlGreenItem)); 18 | 19 | //Add saddle recipe 20 | GameRegistry.addShapedRecipe( 21 | new ItemStack(Additions.chocoboSaddleItem), 22 | " ", 23 | "sls", 24 | " f ", 25 | 's', Items.string, 26 | 'l', Items.leather, 27 | 'f', Additions.chocoboFeatherItem 28 | ); 29 | 30 | //Saddle Bag 31 | GameRegistry.addShapedRecipe( 32 | new ItemStack(Additions.chocoboSaddleBagItem), 33 | " f ", 34 | "l l", 35 | " l ", 36 | 'l', Items.leather, 37 | 'f', Additions.chocoboFeatherItem 38 | ); 39 | 40 | //Pack Bag 41 | GameRegistry.addShapedRecipe( 42 | new ItemStack(Additions.chocoboPackBagItem), 43 | "sfs", 44 | "w w", 45 | "sls", 46 | 's', Items.string, 47 | 'l', Items.leather, 48 | 'f', Additions.chocoboFeatherItem, 49 | 'w', Blocks.wool 50 | ); 51 | 52 | //Whistle 53 | GameRegistry.addShapedRecipe( 54 | new ItemStack(Additions.chocoboWhistleItem), 55 | " ", 56 | " g ", 57 | " f ", 58 | 'g', Items.gold_ingot, 59 | 'f', Additions.chocoboFeatherItem 60 | ); 61 | 62 | //Gysahl Cake 63 | GameRegistry.addShapedRecipe( 64 | new ItemStack(Additions.gysahlCakeItem), 65 | "bgb", 66 | "ses", 67 | "wgw", 68 | 'b', Items.milk_bucket, 69 | 'g', Additions.gysahlGreenItem, 70 | 's', Items.sugar, 71 | 'e', Items.egg, 72 | 'w', Items.wheat 73 | ); 74 | 75 | //Raw Pickles 76 | GameRegistry.addShapelessRecipe( 77 | new ItemStack(Additions.gysahlRawPicklesItem), 78 | Additions.gysahlGreenItem, 79 | Items.sugar 80 | ); 81 | 82 | //Straw 83 | GameRegistry.addShapelessRecipe( 84 | new ItemStack(Additions.strawBlock, 4), 85 | new ItemStack(Items.wheat, 2) 86 | ); 87 | 88 | //Alternative arrow recipe 89 | GameRegistry.addShapedRecipe( 90 | new ItemStack(Items.arrow, 4), 91 | "f ", 92 | "s ", 93 | "c ", 94 | 'f', Items.flint, 95 | 's', Items.stick, 96 | 'c', Additions.chocoboFeatherItem 97 | ); 98 | 99 | //Chocopedia 100 | GameRegistry.addShapedRecipe( 101 | new ItemStack(Additions.chocopediaItem), 102 | "fnf", 103 | "ibi", 104 | "flf", 105 | 'f', Additions.chocoboFeatherItem, 106 | 'n', Items.gold_nugget, 107 | 'i', new ItemStack(Items.dye, 1, 0), 108 | 'b', Items.book, 109 | 'l', new ItemStack(Items.dye, 1, 4) 110 | ); 111 | 112 | //Chocobo disguise 113 | RecipeHelper.makeHelmRecipe(Additions.chocoDisguiseHelm, Additions.chocoboFeatherItem); 114 | RecipeHelper.makePlateRecipe(Additions.chocoDisguiseChest, Additions.chocoboFeatherItem); 115 | RecipeHelper.makeLegsRecipe(Additions.chocoDisguiseLegs, Additions.chocoboFeatherItem); 116 | RecipeHelper.makeBootsRecipe(Additions.chocoDisguiseBoots, Additions.chocoboFeatherItem); 117 | 118 | //Cooking 119 | GameRegistry.addSmelting(Additions.chocoboLegRawItem, new ItemStack(Additions.chocoboLegCookedItem), 1f); 120 | GameRegistry.addSmelting(Additions.gysahlRawPicklesItem, new ItemStack(Additions.gysahlCookedPicklesItem), 1f); 121 | 122 | //Gysahls 123 | GameRegistry.addRecipe(new ShapelessOreRecipe( 124 | new ItemStack(Additions.gysahlRedItem), 125 | Additions.gysahlGreenItem, 126 | "dyeRed" 127 | )); 128 | GameRegistry.addRecipe(new ShapelessOreRecipe( 129 | new ItemStack(Additions.gysahlPinkItem), 130 | Additions.gysahlGreenItem, 131 | "dyePink" 132 | )); 133 | 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ChocoboAbilityInfo.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities; 2 | 3 | import net.minecraft.potion.PotionEffect; 4 | 5 | import java.util.ArrayList; 6 | import java.util.HashMap; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by clienthax on 5/6/2015. 11 | */ 12 | public class ChocoboAbilityInfo { 13 | 14 | private static HashMap abilityInfos = new HashMap(); 15 | 16 | private EntityChocobo.ChocoboColor chocoboColor; 17 | private int maxHP; 18 | private boolean canClimb = false; 19 | private boolean canWalkOnWater = false; 20 | private boolean canFly = false; 21 | private boolean immuneToFire = false; 22 | private float landSpeed; 23 | private float waterSpeed; 24 | private float airbornSpeed; 25 | private float mountedStepHeight; 26 | private float normalStepHeight; 27 | private List effectList = new ArrayList(); 28 | private float airSpeed; 29 | 30 | public ChocoboAbilityInfo(EntityChocobo.ChocoboColor chocoboColor) { 31 | if(abilityInfos.containsKey(chocoboColor)) 32 | throw new UnsupportedOperationException("Editing defined abilities is not permitted"); 33 | this.chocoboColor = chocoboColor; 34 | } 35 | 36 | public static ChocoboAbilityInfo getAbilityInfo(EntityChocobo.ChocoboColor chocoboColor) { 37 | return abilityInfos.get(chocoboColor); 38 | } 39 | 40 | public ChocoboAbilityInfo setMaxHP(int maxHP) { 41 | this.maxHP = maxHP; 42 | return this; 43 | } 44 | 45 | public ChocoboAbilityInfo setCanClimb(boolean value) { 46 | this.canClimb = value; 47 | return this; 48 | } 49 | 50 | public boolean canClimb() 51 | { 52 | return this.canClimb; 53 | } 54 | 55 | public ChocoboAbilityInfo setCanWalkOnWater(boolean value) { 56 | this.canWalkOnWater = value; 57 | return this; 58 | } 59 | 60 | public boolean canWalkOnWater() 61 | { 62 | return this.canWalkOnWater; 63 | } 64 | 65 | public ChocoboAbilityInfo setCanFly(boolean value) { 66 | this.canFly = value; 67 | return this; 68 | } 69 | 70 | public boolean canFly() 71 | { 72 | return this.canFly; 73 | } 74 | 75 | public ChocoboAbilityInfo setImmuneToFire(boolean value) { 76 | this.immuneToFire = value; 77 | return this; 78 | } 79 | 80 | public boolean isImmuneToFire() 81 | { 82 | return this.immuneToFire; 83 | } 84 | 85 | public ChocoboAbilityInfo setSpeeds(float landSpeed, float waterSpeed, float airbornSpeed) { 86 | this.landSpeed = landSpeed; 87 | this.waterSpeed = waterSpeed; 88 | this.airbornSpeed = airbornSpeed; 89 | return this; 90 | } 91 | 92 | public float getLandSpeed() 93 | { 94 | return this.landSpeed; 95 | } 96 | 97 | public float getWaterSpeed() 98 | { 99 | return this.waterSpeed; 100 | } 101 | 102 | public float getAirbornSpeed() 103 | { 104 | return this.airbornSpeed; 105 | } 106 | 107 | public ChocoboAbilityInfo setStepHeight(float mountedStepHeight, float normalStepHeight) { 108 | this.mountedStepHeight = mountedStepHeight; 109 | this.normalStepHeight = normalStepHeight; 110 | return this; 111 | } 112 | 113 | public ChocoboAbilityInfo setRiderAbilities(List effectList) { 114 | this.effectList = effectList; 115 | return this; 116 | } 117 | 118 | public ChocoboAbilityInfo addRiderAbility(PotionEffect effect) { 119 | this.effectList.add(effect); 120 | return this; 121 | } 122 | 123 | public void save() { 124 | abilityInfos.put(chocoboColor, this); 125 | } 126 | 127 | public int getMaxHP() { 128 | return maxHP; 129 | } 130 | 131 | public float getStepHeight(boolean mounted) { 132 | return mounted ? mountedStepHeight : normalStepHeight; 133 | } 134 | 135 | public boolean getCanFly() { 136 | return canFly; 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/DefaultNames.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | * Created by clienthax on 5/5/2015. 7 | */ 8 | public class DefaultNames { 9 | 10 | private static String maleNames[] = 11 | { 12 | "Arkio", "Boco", "Choco", "Patch", "Eddie", "Big Bird", "Chobi", "Horse Bird", "Mr. Yellowpuffs", "Oscar", "Wild", 13 | "Stitch", "Milo", "Lewis", "Simon", "Steed", "Bocobo", "Chobo", "Butter Fingers", "Caspar", "Chubby", 14 | "Coco", "Fuzzy", "Hulk", "Flopsy", "Lionel", "Tidus", "Cloud", "Sephiroth", "Butz", "Cecil", "Golbez", 15 | "Squall", "Zidane", "Garnet", "Kuja", "Locke", "Celes", "Crafty", "Sparky", "Skippy", 16 | "Whiskers", "Mog's Mount", "Ruffles", "Quistis", "Noctis", "Firecracker", "Ballistic", "Blizzard", 17 | "Torobo", "Leon", "Firas", "Travis", "Indigo", "Montoya", "Cobalt", "Jinx", "Komet", "Beau", "Bone", 18 | "Claw", "Duke", "Easy", "Fire", "Fury", "Idol", "Iron", "Jack", "Mars", "Noir", "Snow", "Star", "Zero", 19 | "Ace", "Air", "Ice", "Max", "Neo", "Ray", "Alpha", "Arrow", "Avian", "Black", "Blade", "Blaze", "Blitz", 20 | "Chaos", "Dandy", "Jolly", "Omega", "Pluto", "Point", "Quake", "Titan", "Hope", "Ifrit", "Shiva", "Polonium", 21 | "Radon", "Sparks", "Lunik" 22 | 23 | }; 24 | 25 | private static String femaleNames[] = 26 | { 27 | "Choco", "Patch", "Chobi", "Wild", "Chubby", "Crystal", "Coco", "Fuzzy", "Flopsy", "Lulu", "Yuna", 28 | "Cecil", "Kuja", "Terra", "Locke", "Celes", "Rikku", "Yuffie", "Selphie", "Rinoa", "Sparky", 29 | "Skippy", "Whiskers", "Pupu", "Quistis", "Noctis", "Tranquille", "Twinkling", "Capucine", "Heidi", 30 | "Danseuse", "Mercedes", "Psyche", "Victory", "Liberty", "Emma", "Fortune", "Soleil", "Luna", "Violet", 31 | "Lilith", "Lilli", "Jinx", "Coco", "Fleur", "Feder", "Flora", "Kugel", "Bleu", "Blue", "Chic", "Ciel", 32 | "Face", "Fire", "Fury", "Iris", "Jade", "Joli", "Kiku", "Lady", "Miel", "Momo", "Moon", "Nana", 33 | "Noir", "Nova", "Rain", "Rose", "Ruby", "Star", "Vega", "Air", "Aki", "Ayu", "Fee", "Sky", "Sun", 34 | "Amber", "Angel", "Azure", "Belle", "Clair", "Ebony", "Ember", "Fairy", "Flare", "Glory", "Jaune", 35 | "Jeune", "Jolly", "Lucky", "Olive", "Orange", "Venus", "Lightning", "Galindorf" 36 | }; 37 | 38 | public static String getRandomName(boolean isMale) { 39 | if(isMale) 40 | return maleNames[new Random().nextInt(maleNames.length)]; 41 | else 42 | return femaleNames[new Random().nextInt(femaleNames.length)]; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/EntityBabyChocobo.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities; 2 | 3 | import net.minecraft.entity.EntityAgeable; 4 | import net.minecraft.entity.SharedMonsterAttributes; 5 | import net.minecraft.entity.ai.EntityAIHurtByTarget; 6 | import net.minecraft.entity.ai.EntityAILookIdle; 7 | import net.minecraft.entity.ai.EntityAINearestAttackableTarget; 8 | import net.minecraft.entity.ai.EntityAISwimming; 9 | import net.minecraft.entity.ai.EntityAIWander; 10 | import net.minecraft.entity.ai.EntityAIWatchClosest; 11 | import net.minecraft.entity.monster.EntityMob; 12 | import net.minecraft.entity.passive.EntityAnimal; 13 | import net.minecraft.entity.player.EntityPlayer; 14 | import net.minecraft.nbt.NBTTagCompound; 15 | import net.minecraft.world.World; 16 | import uk.co.haxyshideout.chococraft2.ChocoCraft2; 17 | import uk.co.haxyshideout.chococraft2.config.Additions; 18 | import uk.co.haxyshideout.chococraft2.config.Constants; 19 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo.ChocoboColor; 20 | 21 | public class EntityBabyChocobo extends EntityAnimal 22 | { 23 | private int ticksExisted; 24 | 25 | public EntityBabyChocobo(World worldIn) 26 | { 27 | super(worldIn); 28 | this.setSize(0.5f, 0.5f); 29 | this.tasks.addTask(2, new EntityAIWander(this, this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue())); 30 | this.tasks.addTask(3, new EntityAISwimming(this)); 31 | this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); 32 | this.tasks.addTask(5, new EntityAILookIdle(this)); 33 | this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); 34 | this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityMob.class, true)); 35 | } 36 | 37 | @Override 38 | public void onLivingUpdate() 39 | { 40 | super.onLivingUpdate(); 41 | this.ticksExisted++; 42 | 43 | if(this.ticksExisted >= ChocoCraft2.instance.getConfig().getTicksToAdult() && !this.worldObj.isRemote) 44 | { 45 | growUp(); 46 | } 47 | } 48 | 49 | private void growUp() { 50 | this.setDead(); 51 | EntityChocobo chocobo = new EntityChocobo(this.worldObj); 52 | chocobo.setColor(this.getChocoboColor()); 53 | chocobo.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); 54 | this.worldObj.spawnEntityInWorld(chocobo); 55 | } 56 | 57 | @Override 58 | public boolean interact(EntityPlayer player) 59 | { 60 | if (worldObj.isRemote)// return if client 61 | return false; 62 | 63 | if (player.getHeldItem() == null)// Make sure the player is holding something for the following checks 64 | return false; 65 | 66 | if (player.getHeldItem().getItem() == Additions.gysahlCakeItem) 67 | { 68 | this.consumeItemFromStack(player, player.inventory.getCurrentItem()); 69 | growUp(); 70 | } 71 | 72 | return true; 73 | } 74 | 75 | @Override 76 | public EntityAgeable createChild(EntityAgeable ageable) 77 | { 78 | return null; 79 | } 80 | 81 | public void setColor(ChocoboColor color) 82 | { 83 | dataWatcher.updateObject(Constants.dataWatcherVariant, (byte) color.ordinal()); 84 | } 85 | 86 | @Override 87 | public void writeEntityToNBT(NBTTagCompound tagCompound) 88 | { 89 | super.writeEntityToNBT(tagCompound); 90 | tagCompound.setByte("Color", (byte) getChocoboColor().ordinal()); 91 | } 92 | 93 | @Override 94 | public void readEntityFromNBT(NBTTagCompound tagCompound) 95 | { 96 | super.readEntityFromNBT(tagCompound); 97 | setColor(ChocoboColor.values()[tagCompound.getByte("Color")]); 98 | } 99 | 100 | @Override 101 | protected void entityInit() 102 | { 103 | super.entityInit(); 104 | 105 | // corresponding to enum.ordinal 106 | this.dataWatcher.addObject(Constants.dataWatcherVariant, (byte) 0); 107 | } 108 | 109 | public boolean isTamed() 110 | { 111 | return false; 112 | } 113 | 114 | public boolean isMale() 115 | { 116 | return true; 117 | } 118 | 119 | public ChocoboColor getChocoboColor() 120 | { 121 | return ChocoboColor.values()[dataWatcher.getWatchableObjectByte(Constants.dataWatcherVariant)]; 122 | } 123 | 124 | @Override 125 | protected String getDeathSound() 126 | { 127 | return "chococraft2:choco_kweh"; 128 | } 129 | 130 | @Override 131 | protected String getHurtSound() 132 | { 133 | return "chococraft2:choco_kweh"; 134 | } 135 | 136 | @Override 137 | protected String getLivingSound() 138 | { 139 | if (rand.nextInt(4) == 0) 140 | return "chococraft2:choco_kweh"; 141 | 142 | return null; 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/RiderState.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities; 2 | 3 | /** 4 | * Created by clienthax on 8/6/2015. 5 | */ 6 | public class RiderState { 7 | 8 | private boolean jumping; 9 | private boolean sneaking; 10 | private boolean changed; 11 | 12 | public RiderState() { 13 | this.jumping = false; 14 | this.sneaking = false; 15 | this.changed = true; 16 | } 17 | 18 | public boolean hasChanged() { 19 | return changed; 20 | } 21 | 22 | public void resetChanged() { 23 | changed = false; 24 | } 25 | 26 | public boolean isJumping() { 27 | return jumping; 28 | } 29 | 30 | public void setJumping(boolean jumping) { 31 | if(jumping != this.jumping) 32 | changed = true; 33 | this.jumping = jumping; 34 | } 35 | 36 | public boolean isSneaking() { 37 | return sneaking; 38 | } 39 | 40 | public void setSneaking(boolean sneaking) { 41 | if(sneaking != this.sneaking) 42 | changed = true; 43 | this.sneaking = sneaking; 44 | } 45 | 46 | public void updateState(RiderState riderState) { 47 | setSneaking(riderState.isSneaking()); 48 | setJumping(riderState.isJumping()); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIAvoidPlayer.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import com.google.common.base.Predicate; 4 | import com.google.common.base.Predicates; 5 | import net.minecraft.command.IEntitySelector; 6 | import net.minecraft.entity.Entity; 7 | import net.minecraft.entity.EntityCreature; 8 | import net.minecraft.entity.ai.EntityAIBase; 9 | import net.minecraft.entity.ai.RandomPositionGenerator; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraft.item.ItemStack; 12 | import net.minecraft.pathfinding.PathEntity; 13 | import net.minecraft.pathfinding.PathNavigate; 14 | import net.minecraft.util.BlockPos; 15 | import net.minecraft.util.Vec3; 16 | import uk.co.haxyshideout.haxylib.items.GenericArmor; 17 | import uk.co.haxyshideout.haxylib.utils.RandomHelper; 18 | 19 | import java.util.List; 20 | 21 | /** 22 | * Created by clienthax on 20/5/2015. 23 | */ 24 | public class ChocoboAIAvoidPlayer extends EntityAIBase { 25 | 26 | public final Predicate canBeSeenSelector = new Predicate() 27 | { 28 | public boolean isApplicable(Entity entityIn) 29 | { 30 | return entityIn.isEntityAlive() && ChocoboAIAvoidPlayer.this.theEntity.getEntitySenses().canSee(entityIn); 31 | } 32 | @Override 33 | public boolean apply(Object p_apply_1_) 34 | { 35 | return this.isApplicable((Entity)p_apply_1_); 36 | } 37 | }; 38 | 39 | public final Predicate playerSuitSelector = new Predicate() 40 | { 41 | public boolean apply(Entity entity) 42 | { 43 | if(entity instanceof EntityPlayer) { 44 | EntityPlayer player = (EntityPlayer) entity; 45 | int chance = 0; 46 | for (ItemStack stack : player.inventory.armorInventory) { 47 | if(stack != null) { 48 | if(stack.getItem() instanceof GenericArmor)//lazy way.. 49 | chance += 25; 50 | } 51 | } 52 | 53 | return !RandomHelper.getChanceResult(chance); 54 | 55 | } 56 | return false; 57 | } 58 | @Override 59 | public boolean apply(Object object) 60 | { 61 | return this.apply((Entity)object); 62 | } 63 | }; 64 | 65 | /** The entity we are attached to */ 66 | protected EntityCreature theEntity; 67 | private double farSpeed; 68 | private double nearSpeed; 69 | protected Entity closestLivingEntity; 70 | private float avoidDistance; 71 | /** The PathEntity of our entity */ 72 | private PathEntity entityPathEntity; 73 | /** The PathNavigate of our entity */ 74 | private PathNavigate entityPathNavigate; 75 | private Predicate avoidTargetSelector; 76 | 77 | public ChocoboAIAvoidPlayer(EntityCreature creature, float searchDistance, double farSpeedIn, double nearSpeedIn) 78 | { 79 | this.theEntity = creature; 80 | this.avoidTargetSelector = playerSuitSelector; 81 | this.avoidDistance = searchDistance; 82 | this.farSpeed = farSpeedIn; 83 | this.nearSpeed = nearSpeedIn; 84 | this.entityPathNavigate = creature.getNavigator(); 85 | this.setMutexBits(1); 86 | } 87 | 88 | /** 89 | * Returns whether the EntityAIBase should begin execution. 90 | */ 91 | @Override 92 | public boolean shouldExecute() 93 | { 94 | if(theEntity.worldObj.getWorldTime() % 10 != 0) 95 | return false; 96 | 97 | List list = this.theEntity.worldObj.getEntitiesInAABBexcluding(this.theEntity, this.theEntity.getEntityBoundingBox().expand((double)this.avoidDistance, 3.0D, (double)this.avoidDistance), Predicates.and(IEntitySelector.NOT_SPECTATING, this.canBeSeenSelector, this.avoidTargetSelector)); 98 | 99 | if (list.isEmpty()) 100 | { 101 | return false; 102 | } 103 | else 104 | { 105 | this.closestLivingEntity = (Entity)list.get(0); 106 | Vec3 vec3 = RandomPositionGenerator.findRandomTargetBlockAwayFrom(this.theEntity, 16, 7, new Vec3(this.closestLivingEntity.posX, this.closestLivingEntity.posY, this.closestLivingEntity.posZ)); 107 | 108 | if (vec3 == null) 109 | { 110 | return false; 111 | } 112 | else if (this.closestLivingEntity.getDistanceSq(vec3.xCoord, vec3.yCoord, vec3.zCoord) < this.closestLivingEntity.getDistanceSqToEntity(this.theEntity)) 113 | { 114 | return false; 115 | } 116 | else 117 | { 118 | this.entityPathEntity = this.entityPathNavigate.getPathToPos(new BlockPos(vec3.xCoord, vec3.yCoord, vec3.zCoord)); 119 | return this.entityPathEntity != null; 120 | } 121 | } 122 | } 123 | 124 | /** 125 | * Returns whether an in-progress EntityAIBase should continue executing 126 | */ 127 | @Override 128 | public boolean continueExecuting() 129 | { 130 | return !this.entityPathNavigate.noPath(); 131 | } 132 | 133 | /** 134 | * Execute a one shot task or start executing a continuous task 135 | */ 136 | @Override 137 | public void startExecuting() 138 | { 139 | this.entityPathNavigate.setPath(this.entityPathEntity, this.farSpeed); 140 | } 141 | 142 | /** 143 | * Resets the task 144 | */ 145 | @Override 146 | public void resetTask() 147 | { 148 | this.closestLivingEntity = null; 149 | } 150 | 151 | /** 152 | * Updates the task 153 | */ 154 | @Override 155 | public void updateTask() 156 | { 157 | if (this.theEntity.getDistanceSqToEntity(this.closestLivingEntity) < 49.0D) 158 | { 159 | this.theEntity.getNavigator().setSpeed(this.nearSpeed); 160 | } 161 | else 162 | { 163 | this.theEntity.getNavigator().setSpeed(this.farSpeed); 164 | } 165 | } 166 | 167 | 168 | } 169 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIFollowLure.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.entity.ai.EntityAIBase; 5 | import net.minecraft.entity.passive.EntityTameable; 6 | import net.minecraft.pathfinding.PathNavigate; 7 | import net.minecraft.pathfinding.PathNavigateGround; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraft.util.MathHelper; 10 | import net.minecraft.world.World; 11 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 12 | 13 | public class ChocoboAIFollowLure extends EntityAIBase 14 | { 15 | private EntityChocobo chocobo; 16 | private EntityLivingBase theOwner; 17 | World theWorld; 18 | private double followSpeed; 19 | private PathNavigate petPathfinder; 20 | private int field_75343_h; 21 | float maxDist; 22 | float minDist; 23 | 24 | //TODO - This can be merged into the follow owner ai task at a future point 25 | public ChocoboAIFollowLure(EntityTameable thePetIn, double followSpeedIn, float minDistIn, float maxDistIn) 26 | { 27 | this.chocobo = (EntityChocobo)thePetIn; 28 | this.theWorld = thePetIn.worldObj; 29 | this.followSpeed = followSpeedIn; 30 | this.petPathfinder = thePetIn.getNavigator(); 31 | this.minDist = minDistIn; 32 | this.maxDist = maxDistIn; 33 | this.setMutexBits(3); 34 | 35 | if (!(thePetIn.getNavigator() instanceof PathNavigateGround)) 36 | { 37 | throw new IllegalArgumentException("Unsupported mob type for FollowLureGoal"); 38 | } 39 | } 40 | 41 | /** 42 | * Returns whether the EntityAIBase should begin execution. 43 | */ 44 | @Override 45 | public boolean shouldExecute() 46 | { 47 | EntityLivingBase entityLuring = this.chocobo.getEntityLuring(); 48 | 49 | if (entityLuring == null) 50 | { 51 | return false; 52 | } 53 | else if (this.chocobo.getMovementType() != EntityChocobo.MovementType.FOLLOW_LURE) 54 | { 55 | return false; 56 | } 57 | else if (this.chocobo.getDistanceSqToEntity(entityLuring) < (double)(this.minDist * this.minDist)) 58 | { 59 | return false; 60 | } 61 | else 62 | { 63 | this.theOwner = entityLuring; 64 | return true; 65 | } 66 | } 67 | 68 | /** 69 | * Returns whether an in-progress EntityAIBase should continue executing 70 | */ 71 | @Override 72 | public boolean continueExecuting() 73 | { 74 | return !this.petPathfinder.noPath() && this.chocobo.getDistanceSqToEntity(this.theOwner) > (double)(this.maxDist * this.maxDist) && chocobo.getMovementType() == EntityChocobo.MovementType.FOLLOW_LURE; 75 | } 76 | 77 | /** 78 | * Execute a one shot task or start executing a continuous task 79 | */ 80 | @Override 81 | public void startExecuting() 82 | { 83 | this.field_75343_h = 0; 84 | ((PathNavigateGround)this.chocobo.getNavigator()).setAvoidsWater(false); 85 | } 86 | 87 | /** 88 | * Resets the task 89 | */ 90 | @Override 91 | public void resetTask() 92 | { 93 | this.theOwner = null; 94 | this.petPathfinder.clearPathEntity(); 95 | ((PathNavigateGround)this.chocobo.getNavigator()).setAvoidsWater(true); 96 | } 97 | 98 | /** 99 | * Updates the task 100 | */ 101 | @Override 102 | public void updateTask() 103 | { 104 | this.chocobo.getLookHelper().setLookPositionWithEntity(this.theOwner, 10.0F, (float)this.chocobo.getVerticalFaceSpeed()); 105 | 106 | if (!this.chocobo.isSitting()) 107 | { 108 | if (--this.field_75343_h <= 0) 109 | { 110 | this.field_75343_h = 10; 111 | 112 | if (!this.petPathfinder.tryMoveToEntityLiving(this.theOwner, this.followSpeed)) 113 | { 114 | if (!this.chocobo.getLeashed()) 115 | { 116 | if (this.chocobo.getDistanceSqToEntity(this.theOwner) >= 144.0D) 117 | { 118 | int i = MathHelper.floor_double(this.theOwner.posX) - 2; 119 | int j = MathHelper.floor_double(this.theOwner.posZ) - 2; 120 | int k = MathHelper.floor_double(this.theOwner.getEntityBoundingBox().minY); 121 | 122 | for (int l = 0; l <= 4; ++l) 123 | { 124 | for (int i1 = 0; i1 <= 4; ++i1) 125 | { 126 | if ((l < 1 || i1 < 1 || l > 3 || i1 > 3) && World.doesBlockHaveSolidTopSurface(this.theWorld, new BlockPos(i + l, k - 1, j + i1)) && !this.theWorld.getBlockState(new BlockPos(i + l, k, j + i1)).getBlock().isFullCube() && !this.theWorld.getBlockState(new BlockPos(i + l, k + 1, j + i1)).getBlock().isFullCube()) 127 | { 128 | this.chocobo.setLocationAndAngles((double)((float)(i + l) + 0.5F), (double)k, (double)((float)(j + i1) + 0.5F), this.chocobo.rotationYaw, this.chocobo.rotationPitch); 129 | this.petPathfinder.clearPathEntity(); 130 | return; 131 | } 132 | } 133 | } 134 | } 135 | } 136 | } 137 | } 138 | } 139 | } 140 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIFollowOwner.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import net.minecraft.entity.EntityLivingBase; 4 | import net.minecraft.entity.ai.EntityAIBase; 5 | import net.minecraft.entity.passive.EntityTameable; 6 | import net.minecraft.pathfinding.PathNavigate; 7 | import net.minecraft.pathfinding.PathNavigateGround; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraft.util.MathHelper; 10 | import net.minecraft.world.World; 11 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 12 | 13 | public class ChocoboAIFollowOwner extends EntityAIBase 14 | { 15 | private EntityChocobo chocobo; 16 | private EntityLivingBase theOwner; 17 | World theWorld; 18 | private double followSpeed; 19 | private PathNavigate petPathfinder; 20 | private int field_75343_h; 21 | float maxDist; 22 | float minDist; 23 | 24 | public ChocoboAIFollowOwner(EntityTameable thePetIn, double followSpeedIn, float minDistIn, float maxDistIn) 25 | { 26 | this.chocobo = (EntityChocobo)thePetIn; 27 | this.theWorld = thePetIn.worldObj; 28 | this.followSpeed = followSpeedIn; 29 | this.petPathfinder = thePetIn.getNavigator(); 30 | this.minDist = minDistIn; 31 | this.maxDist = maxDistIn; 32 | this.setMutexBits(3); 33 | 34 | if (!(thePetIn.getNavigator() instanceof PathNavigateGround)) 35 | { 36 | throw new IllegalArgumentException("Unsupported mob type for FollowOwnerGoal"); 37 | } 38 | } 39 | 40 | /** 41 | * Returns whether the EntityAIBase should begin execution. 42 | */ 43 | @Override 44 | public boolean shouldExecute() 45 | { 46 | EntityLivingBase owner = this.chocobo.getOwnerEntity(); 47 | 48 | if (owner == null) 49 | { 50 | return false; 51 | } 52 | else if (this.chocobo.getMovementType() != EntityChocobo.MovementType.FOLLOW_OWNER) 53 | { 54 | return false; 55 | } 56 | else if (this.chocobo.getDistanceSqToEntity(owner) < (double)(this.minDist * this.minDist)) 57 | { 58 | return false; 59 | } 60 | else 61 | { 62 | this.theOwner = owner; 63 | return true; 64 | } 65 | } 66 | 67 | /** 68 | * Returns whether an in-progress EntityAIBase should continue executing 69 | */ 70 | @Override 71 | public boolean continueExecuting() 72 | { 73 | return !this.petPathfinder.noPath() && this.chocobo.getDistanceSqToEntity(this.theOwner) > (double)(this.maxDist * this.maxDist) && chocobo.getMovementType() == EntityChocobo.MovementType.FOLLOW_OWNER; 74 | } 75 | 76 | /** 77 | * Execute a one shot task or start executing a continuous task 78 | */ 79 | @Override 80 | public void startExecuting() 81 | { 82 | this.field_75343_h = 0; 83 | ((PathNavigateGround)this.chocobo.getNavigator()).setAvoidsWater(false); 84 | } 85 | 86 | /** 87 | * Resets the task 88 | */ 89 | @Override 90 | public void resetTask() 91 | { 92 | this.theOwner = null; 93 | this.petPathfinder.clearPathEntity(); 94 | ((PathNavigateGround)this.chocobo.getNavigator()).setAvoidsWater(true); 95 | } 96 | 97 | /** 98 | * Updates the task 99 | */ 100 | @Override 101 | public void updateTask() 102 | { 103 | this.chocobo.getLookHelper().setLookPositionWithEntity(this.theOwner, 10.0F, (float)this.chocobo.getVerticalFaceSpeed()); 104 | 105 | if (!this.chocobo.isSitting()) 106 | { 107 | if (--this.field_75343_h <= 0) 108 | { 109 | this.field_75343_h = 10; 110 | 111 | if (!this.petPathfinder.tryMoveToEntityLiving(this.theOwner, this.followSpeed)) 112 | { 113 | if (!this.chocobo.getLeashed()) 114 | { 115 | if (this.chocobo.getDistanceSqToEntity(this.theOwner) >= 144.0D) 116 | { 117 | int i = MathHelper.floor_double(this.theOwner.posX) - 2; 118 | int j = MathHelper.floor_double(this.theOwner.posZ) - 2; 119 | int k = MathHelper.floor_double(this.theOwner.getEntityBoundingBox().minY); 120 | 121 | for (int l = 0; l <= 4; ++l) 122 | { 123 | for (int i1 = 0; i1 <= 4; ++i1) 124 | { 125 | if ((l < 1 || i1 < 1 || l > 3 || i1 > 3) && World.doesBlockHaveSolidTopSurface(this.theWorld, new BlockPos(i + l, k - 1, j + i1)) && !this.theWorld.getBlockState(new BlockPos(i + l, k, j + i1)).getBlock().isFullCube() && !this.theWorld.getBlockState(new BlockPos(i + l, k + 1, j + i1)).getBlock().isFullCube()) 126 | { 127 | this.chocobo.setLocationAndAngles((double)((float)(i + l) + 0.5F), (double)k, (double)((float)(j + i1) + 0.5F), this.chocobo.rotationYaw, this.chocobo.rotationPitch); 128 | this.petPathfinder.clearPathEntity(); 129 | return; 130 | } 131 | } 132 | } 133 | } 134 | } 135 | } 136 | } 137 | } 138 | } 139 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIHealInPen.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import net.minecraft.block.BlockCauldron; 4 | import net.minecraft.block.state.IBlockState; 5 | import net.minecraft.entity.ai.EntityAIBase; 6 | import net.minecraft.init.Blocks; 7 | import uk.co.haxyshideout.chococraft2.config.Additions; 8 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 9 | import uk.co.haxyshideout.haxylib.utils.RandomHelper; 10 | import uk.co.haxyshideout.haxylib.utils.WorldHelper; 11 | 12 | /** 13 | * Created by clienthax on 20/5/2015. 14 | */ 15 | public class ChocoboAIHealInPen extends EntityAIBase { 16 | 17 | EntityChocobo chocobo; 18 | 19 | public ChocoboAIHealInPen(EntityChocobo chocobo) { 20 | this.chocobo = chocobo; 21 | setMutexBits(4); 22 | } 23 | 24 | @Override 25 | public void startExecuting() { 26 | for(IBlockState cauldronState : WorldHelper.getBlockstatesInRangeOfEntity(Blocks.cauldron, chocobo, 5, 0)) { 27 | if((Integer) cauldronState.getValue(BlockCauldron.LEVEL) == 3) {//cauldron is full 28 | chocobo.heal(RandomHelper.getRandomInt(3) + 1); 29 | } 30 | } 31 | } 32 | 33 | @Override 34 | public boolean shouldExecute() {//check the task is run only every 40 ticks and that the chocobo is standing on straw 35 | if(chocobo.worldObj.getWorldTime() % 40 == 0 && chocobo.getHealth() != chocobo.getMaxHealth()) 36 | if(chocobo.worldObj.getBlockState(chocobo.getPosition()).getBlock() == Additions.strawBlock) { 37 | return true; 38 | } 39 | return false; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIMate.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import java.util.Iterator; 4 | import java.util.List; 5 | import java.util.Random; 6 | import net.minecraft.entity.EntityAgeable; 7 | import net.minecraft.entity.ai.EntityAIBase; 8 | import net.minecraft.entity.item.EntityXPOrb; 9 | import net.minecraft.entity.passive.EntityAnimal; 10 | import net.minecraft.entity.passive.EntityCow; 11 | import net.minecraft.entity.player.EntityPlayer; 12 | import net.minecraft.item.ItemStack; 13 | import net.minecraft.stats.AchievementList; 14 | import net.minecraft.stats.StatList; 15 | import net.minecraft.util.EnumParticleTypes; 16 | import net.minecraft.world.World; 17 | import uk.co.haxyshideout.chococraft2.config.Additions; 18 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 19 | 20 | public class ChocoboAIMate extends EntityAIBase 21 | { 22 | private EntityChocobo theAnimal; 23 | World theWorld; 24 | private EntityChocobo targetMate; 25 | /** Delay preventing a baby from spawning immediately when two mate-able animals find each other. */ 26 | int spawnBabyDelay; 27 | /** The speed the creature moves at during mating behavior. */ 28 | double moveSpeed; 29 | 30 | public ChocoboAIMate(EntityChocobo animal, double speedIn) 31 | { 32 | this.theAnimal = animal; 33 | this.theWorld = animal.worldObj; 34 | this.moveSpeed = speedIn; 35 | this.setMutexBits(3); 36 | } 37 | 38 | /** 39 | * Returns whether the EntityAIBase should begin execution. 40 | */ 41 | public boolean shouldExecute() 42 | { 43 | if (!this.theAnimal.isInLove()) 44 | { 45 | return false; 46 | } 47 | else 48 | { 49 | this.targetMate = this.getNearbyMate(); 50 | return this.targetMate != null; 51 | } 52 | } 53 | 54 | /** 55 | * Returns whether an in-progress EntityAIBase should continue executing 56 | */ 57 | public boolean continueExecuting() 58 | { 59 | return this.targetMate.isEntityAlive() && this.targetMate.isInLove() && this.spawnBabyDelay < 60; 60 | } 61 | 62 | /** 63 | * Resets the task 64 | */ 65 | public void resetTask() 66 | { 67 | this.targetMate = null; 68 | this.spawnBabyDelay = 0; 69 | } 70 | 71 | /** 72 | * Updates the task 73 | */ 74 | public void updateTask() 75 | { 76 | this.theAnimal.getLookHelper().setLookPositionWithEntity(this.targetMate, 10.0F, (float)this.theAnimal.getVerticalFaceSpeed()); 77 | this.theAnimal.getNavigator().tryMoveToEntityLiving(this.targetMate, this.moveSpeed); 78 | ++this.spawnBabyDelay; 79 | 80 | if (this.spawnBabyDelay >= 60 && this.theAnimal.getDistanceSqToEntity(this.targetMate) < 9.0D) 81 | { 82 | this.spawnBaby(); 83 | } 84 | } 85 | 86 | /** 87 | * Loops through nearby animals and finds another animal of the same type that can be mated with. Returns the first 88 | * valid mate found. 89 | */ 90 | @SuppressWarnings("WhileLoopReplaceableByForEach") 91 | private EntityChocobo getNearbyMate() 92 | { 93 | float f = 8.0F; 94 | List list = (List)this.theWorld.getEntitiesWithinAABB(EntityChocobo.class, this.theAnimal.getEntityBoundingBox().expand((double)f, (double)f, (double)f)); 95 | double d0 = Double.MAX_VALUE; 96 | EntityChocobo entityanimal = null; 97 | Iterator iterator = list.iterator(); 98 | 99 | while (iterator.hasNext()) 100 | { 101 | EntityChocobo entityanimal1 = iterator.next(); 102 | 103 | if (this.theAnimal.canMateWith(entityanimal1) && this.theAnimal.getDistanceSqToEntity(entityanimal1) < d0) 104 | { 105 | entityanimal = entityanimal1; 106 | d0 = this.theAnimal.getDistanceSqToEntity(entityanimal1); 107 | } 108 | } 109 | 110 | return entityanimal; 111 | } 112 | 113 | /** 114 | * Spawns a baby animal of the same type. 115 | */ 116 | private void spawnBaby() 117 | { 118 | if(theAnimal.getChocoboColor() == EntityChocobo.ChocoboColor.PURPLE && targetMate.getChocoboColor() == EntityChocobo.ChocoboColor.PURPLE) { 119 | theAnimal.entityDropItem(new ItemStack(Additions.purpleSpawnEggItem), 0); 120 | this.theAnimal.setGrowingAge(6000); 121 | this.targetMate.setGrowingAge(6000); 122 | this.theAnimal.resetInLove(); 123 | this.targetMate.resetInLove(); 124 | return; 125 | } 126 | 127 | EntityAgeable entityageable = this.theAnimal.createChild(this.targetMate); 128 | 129 | if (entityageable != null) 130 | { 131 | EntityPlayer entityplayer = this.theAnimal.getPlayerInLove(); 132 | 133 | if (entityplayer == null && this.targetMate.getPlayerInLove() != null) 134 | { 135 | entityplayer = this.targetMate.getPlayerInLove(); 136 | } 137 | 138 | if (entityplayer != null) 139 | { 140 | entityplayer.triggerAchievement(StatList.animalsBredStat); 141 | } 142 | 143 | this.theAnimal.setGrowingAge(6000); 144 | this.targetMate.setGrowingAge(6000); 145 | this.theAnimal.resetInLove(); 146 | this.targetMate.resetInLove(); 147 | entityageable.setGrowingAge(-24000); 148 | entityageable.setLocationAndAngles(this.theAnimal.posX, this.theAnimal.posY, this.theAnimal.posZ, 0.0F, 0.0F); 149 | this.theWorld.spawnEntityInWorld(entityageable); 150 | Random random = this.theAnimal.getRNG(); 151 | 152 | for (int i = 0; i < 7; ++i) 153 | { 154 | double d0 = random.nextGaussian() * 0.02D; 155 | double d1 = random.nextGaussian() * 0.02D; 156 | double d2 = random.nextGaussian() * 0.02D; 157 | this.theWorld.spawnParticle(EnumParticleTypes.HEART, this.theAnimal.posX + (double)(random.nextFloat() * this.theAnimal.width * 2.0F) - (double)this.theAnimal.width, this.theAnimal.posY + 0.5D + (double)(random.nextFloat() * this.theAnimal.height), this.theAnimal.posZ + (double)(random.nextFloat() * this.theAnimal.width * 2.0F) - (double)this.theAnimal.width, d0, d1, d2); 158 | } 159 | 160 | if (this.theWorld.getGameRules().getGameRuleBooleanValue("doMobLoot")) 161 | { 162 | this.theWorld.spawnEntityInWorld(new EntityXPOrb(this.theWorld, this.theAnimal.posX, this.theAnimal.posY, this.theAnimal.posZ, random.nextInt(7) + 1)); 163 | } 164 | } 165 | } 166 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/ai/ChocoboAIWatchPlayer.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.ai; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.EntityLiving; 5 | import net.minecraft.entity.ai.EntityAIBase; 6 | import net.minecraft.entity.player.EntityPlayer; 7 | 8 | public class ChocoboAIWatchPlayer extends EntityAIBase 9 | { 10 | private EntityLiving theWatcher; 11 | 12 | /** The closest entity which is being watched by this one. */ 13 | protected Entity closestEntity; 14 | private float watchDistance; 15 | private int lookTime; 16 | private Class watchedClass; 17 | 18 | public ChocoboAIWatchPlayer(EntityLiving chocobo, Class entityClass, float distance) 19 | { 20 | this.theWatcher = chocobo; 21 | this.watchedClass = entityClass; 22 | this.watchDistance = distance; 23 | this.setMutexBits(2); 24 | } 25 | 26 | 27 | /** 28 | * Returns whether the EntityAIBase should begin execution. 29 | */ 30 | @Override 31 | public boolean shouldExecute() 32 | { 33 | if (this.theWatcher.getRNG().nextFloat() >= 0.5F) 34 | { 35 | return false; 36 | } 37 | else 38 | { 39 | if (this.theWatcher.getAttackTarget() != null) 40 | { 41 | this.closestEntity = this.theWatcher.getAttackTarget(); 42 | } 43 | 44 | if (this.watchedClass == EntityPlayer.class) 45 | { 46 | this.closestEntity = this.theWatcher.worldObj.getClosestPlayerToEntity(this.theWatcher, (double)this.watchDistance); 47 | } 48 | else 49 | { 50 | this.closestEntity = this.theWatcher.worldObj.findNearestEntityWithinAABB(this.watchedClass, this.theWatcher.getEntityBoundingBox().expand((double)this.watchDistance, 3.0D, (double)this.watchDistance), this.theWatcher); 51 | } 52 | 53 | return this.closestEntity != null; 54 | } 55 | } 56 | 57 | /** 58 | * Returns whether an in-progress EntityAIBase should continue executing 59 | */ 60 | @Override 61 | public boolean continueExecuting() 62 | { 63 | return this.closestEntity.isEntityAlive() && theWatcher.riddenByEntity == null && (this.theWatcher.getDistanceSqToEntity(this.closestEntity) <= (double) (this.watchDistance * this.watchDistance) && this.lookTime > 0); 64 | } 65 | 66 | /** 67 | * Execute a one shot task or start executing a continuous task 68 | */ 69 | @Override 70 | public void startExecuting() 71 | { 72 | this.lookTime = 40 + this.theWatcher.getRNG().nextInt(40); 73 | } 74 | 75 | /** 76 | * Resets the task 77 | */ 78 | @Override 79 | public void resetTask() 80 | { 81 | this.closestEntity = null; 82 | } 83 | 84 | /** 85 | * Updates the task 86 | */ 87 | @Override 88 | public void updateTask() 89 | { 90 | this.theWatcher.getLookHelper().setLookPosition(this.closestEntity.posX, this.closestEntity.posY + (double)this.closestEntity.getEyeHeight()-5, this.closestEntity.posZ, 10.0F, (float)this.theWatcher.getVerticalFaceSpeed()); 91 | --this.lookTime; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/breeding/Breeding.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.breeding; 2 | 3 | import uk.co.haxyshideout.chococraft2.ChocoCraft2; 4 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 5 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo.ChocoboColor; 6 | import uk.co.haxyshideout.haxylib.utils.RandomHelper; 7 | 8 | import static uk.co.haxyshideout.chococraft2.entities.EntityChocobo.ChocoboColor.*; 9 | 10 | import java.util.HashMap; 11 | import java.util.List; 12 | import java.util.Map; 13 | import java.util.regex.Pattern; 14 | 15 | public class Breeding { 16 | 17 | public static ChocoboColor getColour(EntityChocobo firstParent, EntityChocobo secondParent) { 18 | int randColour = RandomHelper.getRandomInt(100); 19 | boolean bothParentsFedGold = firstParent.fedGoldenGyshal && secondParent.fedGoldenGyshal; 20 | HashMap>> secondParentColourMaps = ChocoCraft2.instance.getConfig().getBreedingInfoHashmap().get(firstParent.getChocoboColor().name()); 21 | for(Map.Entry>> secondParentColourEntry : secondParentColourMaps.entrySet()) { 22 | if(secondParentColourEntry.getKey().contains(secondParent.getChocoboColor().name())) { 23 | List> breedingInfoList = secondParentColourEntry.getValue(); 24 | boolean flag = false; 25 | for(HashMap breedingInfo : breedingInfoList) { 26 | String childColour = breedingInfo.get("childColour"); 27 | String conditions = breedingInfo.get("conditions"); 28 | String random = breedingInfo.get("random"); 29 | if(!conditions.equals("none")) { 30 | if(conditions.equals("bothParentsFedGold")) { 31 | flag = true; 32 | if(!bothParentsFedGold) { 33 | continue; 34 | } 35 | } 36 | } else { 37 | if(flag && bothParentsFedGold) { 38 | continue; 39 | } 40 | } 41 | if(!random.equals("none")) { 42 | String[] parts = random.split(Pattern.quote(" ")); 43 | if(parts[0].equals("above")) { 44 | if(!(randColour > Integer.parseInt(parts[1]))) 45 | continue; 46 | } else if(parts[0].equals("under")) { 47 | if(!(randColour < Integer.parseInt(parts[1]))) 48 | continue; 49 | } 50 | } 51 | if(childColour.equals("secondParent")) { 52 | return secondParent.getChocoboColor(); 53 | } else { 54 | return EntityChocobo.ChocoboColor.valueOf(childColour); 55 | } 56 | 57 | } 58 | } 59 | } 60 | return YELLOW; 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/models/ModelBabyChocobo.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.models; 2 | 3 | import net.minecraft.client.model.ModelBase; 4 | import net.minecraft.client.model.ModelRenderer; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.util.MathHelper; 7 | 8 | public class ModelBabyChocobo extends ModelBase 9 | { 10 | public ModelRenderer head; 11 | public ModelRenderer body; 12 | public ModelRenderer rightleg; 13 | public ModelRenderer leftleg; 14 | 15 | public ModelBabyChocobo() 16 | { 17 | head = new ModelRenderer(this, 0, 0); 18 | head.addBox(-1.5F, -3F, -1.5F, 3, 3, 3, 0.0F); 19 | head.setRotationPoint(0.0F, 18F, -2.5F); 20 | body = new ModelRenderer(this, 0, 6); 21 | body.addBox(-2F, -2.5F, -2F, 4, 4, 4, 0.0F); 22 | body.setRotationPoint(0.0F, 20F, 0.0F); 23 | rightleg = new ModelRenderer(this, 12, 0); 24 | rightleg.addBox(-0.5F, 0.0F, -1F, 1, 2, 1, 0.0F); 25 | rightleg.setRotationPoint(-1F, 22F, 0.5F); 26 | leftleg = new ModelRenderer(this, 12, 0); 27 | leftleg.addBox(-0.5F, 0.0F, -1F, 1, 2, 1, 0.0F); 28 | leftleg.setRotationPoint(1.0F, 22F, 0.5F); 29 | } 30 | 31 | @Override 32 | public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) 33 | { 34 | setRotationAngles(f, f1, f2, f3, f4, f5); 35 | head.render(f5); 36 | body.render(f5); 37 | rightleg.render(f5); 38 | leftleg.render(f5); 39 | } 40 | 41 | public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) 42 | { 43 | head.rotateAngleX = -(f4 / 57.29578F); 44 | head.rotateAngleY = f3 / 57.29578F; 45 | rightleg.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; 46 | leftleg.rotateAngleY = MathHelper.cos(f * 0.6662F + 3.141593F) * 1.4F * f1; 47 | } 48 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/renderer/BabyChocoboRenderer.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.renderer; 2 | 3 | import net.minecraft.client.model.ModelBase; 4 | import net.minecraft.client.renderer.GlStateManager; 5 | import net.minecraft.client.renderer.entity.RenderLiving; 6 | import net.minecraft.client.renderer.entity.RenderManager; 7 | import net.minecraft.entity.Entity; 8 | import net.minecraft.entity.EntityLivingBase; 9 | import net.minecraft.util.ResourceLocation; 10 | import uk.co.haxyshideout.chococraft2.config.Constants; 11 | import uk.co.haxyshideout.chococraft2.entities.EntityBabyChocobo; 12 | 13 | /** 14 | * Created by clienthax on 14/4/2015. 15 | */ 16 | public class BabyChocoboRenderer extends RenderLiving 17 | { 18 | 19 | public BabyChocoboRenderer(RenderManager rendermanagerIn, ModelBase modelbaseIn) 20 | { 21 | super(rendermanagerIn, modelbaseIn, 1.5f); 22 | this.shadowSize = 0f; 23 | } 24 | 25 | @Override 26 | public void renderLivingLabel(Entity entityIn, String str, double x, double y, double z, int maxDistance) 27 | { 28 | super.renderLivingLabel(entityIn, str, x, y + 0.2d, z, maxDistance); 29 | } 30 | 31 | @Override 32 | protected void preRenderCallback(EntityLivingBase entityliving, float f) 33 | { 34 | // TODO big hack because the model is positioned wrong 35 | GlStateManager.translate(-0.075, 0, -0.45); 36 | } 37 | 38 | @Override 39 | protected ResourceLocation getEntityTexture(Entity entity) 40 | { 41 | EntityBabyChocobo entityChocobo = (EntityBabyChocobo) entity; 42 | String path = "textures/entities/Chicobos/" + (entityChocobo.isTamed() ? "Tamed" : "Untamed") + "/"; 43 | path += entityChocobo.getChocoboColor().name().toLowerCase() + "chocobo.png"; 44 | return new ResourceLocation(Constants.MODID, path); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/entities/renderer/ChocoboRenderer.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.entities.renderer; 2 | 3 | import net.minecraft.client.model.ModelBase; 4 | import net.minecraft.client.renderer.GlStateManager; 5 | import net.minecraft.client.renderer.entity.RenderLiving; 6 | import net.minecraft.client.renderer.entity.RenderManager; 7 | import net.minecraft.entity.Entity; 8 | import net.minecraft.entity.EntityLivingBase; 9 | import net.minecraft.util.MathHelper; 10 | import net.minecraft.util.ResourceLocation; 11 | import uk.co.haxyshideout.chococraft2.config.Constants; 12 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 13 | 14 | /** 15 | * Created by clienthax on 14/4/2015. 16 | */ 17 | public class ChocoboRenderer extends RenderLiving { 18 | 19 | public ChocoboRenderer(RenderManager rendermanagerIn, ModelBase modelbaseIn) { 20 | super(rendermanagerIn, modelbaseIn, 1.5f); 21 | } 22 | 23 | @Override 24 | public void renderLivingLabel(Entity entityIn, String str, double x, double y, double z, int maxDistance) { 25 | super.renderLivingLabel(entityIn, str, x, y+0.2d, z, maxDistance); 26 | } 27 | 28 | @Override 29 | public float handleRotationFloat(EntityLivingBase entityLiving, float f) {//Wing rotation 30 | EntityChocobo entityChocobo = (EntityChocobo) entityLiving; 31 | return (MathHelper.sin(entityChocobo.wingRotation) + 1F) * entityChocobo.destPos; 32 | } 33 | 34 | @Override 35 | protected void preRenderCallback(EntityLivingBase entityliving, float f) {//TODO big hack because the model is positioned wrong 36 | GlStateManager.translate(-0.075, 0, -0.45); 37 | } 38 | 39 | @Override 40 | protected ResourceLocation getEntityTexture(Entity entity) { 41 | EntityChocobo entityChocobo = (EntityChocobo) entity; 42 | String path = "textures/entities/Chocobos/"+ (entityChocobo.isTamed() ? "Tamed" : "Untamed") +"/"; 43 | if(entityChocobo.getBagType() == EntityChocobo.BagType.PACK) 44 | path += "PackBagged/"; 45 | else if(entityChocobo.getBagType() == EntityChocobo.BagType.SADDLE) 46 | path += "SaddleBagged/"; 47 | else if(entityChocobo.isSaddled()) 48 | path += "Saddled/"; 49 | 50 | path +=(entityChocobo.isMale() ? "Male" : "Female") +"/"+entityChocobo.getChocoboColor().name().toLowerCase()+"chocobo.png"; 51 | return new ResourceLocation(Constants.MODID, path); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/events/EventHandler.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.events; 2 | 3 | import com.google.common.io.CharSource; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.client.gui.GuiScreenBook; 6 | import net.minecraft.event.ClickEvent; 7 | import net.minecraft.init.Items; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.nbt.NBTTagCompound; 10 | import net.minecraft.nbt.NBTTagList; 11 | import net.minecraft.nbt.NBTTagString; 12 | import net.minecraft.util.ChatComponentText; 13 | import net.minecraft.util.ChatStyle; 14 | import net.minecraft.util.EnumChatFormatting; 15 | import net.minecraft.util.ResourceLocation; 16 | import net.minecraftforge.common.ForgeVersion; 17 | import net.minecraftforge.event.entity.player.BonemealEvent; 18 | import net.minecraftforge.event.entity.player.PlayerInteractEvent; 19 | import net.minecraftforge.fml.common.FMLCommonHandler; 20 | import net.minecraftforge.fml.common.eventhandler.Event; 21 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 22 | import net.minecraftforge.fml.common.gameevent.PlayerEvent; 23 | import net.minecraftforge.fml.relauncher.Side; 24 | import net.minecraftforge.fml.relauncher.SideOnly; 25 | import ninja.leaping.configurate.ConfigurationNode; 26 | import ninja.leaping.configurate.hocon.HoconConfigurationLoader; 27 | import org.apache.commons.io.IOUtils; 28 | import uk.co.haxyshideout.chococraft2.ChocoCraft2; 29 | import uk.co.haxyshideout.chococraft2.blocks.GysahlStemBlock; 30 | import uk.co.haxyshideout.chococraft2.config.Additions; 31 | import uk.co.haxyshideout.chococraft2.config.Constants; 32 | import uk.co.haxyshideout.haxylib.utils.FormattingHelper; 33 | 34 | import java.io.FileNotFoundException; 35 | import java.io.IOException; 36 | import java.io.InputStream; 37 | import java.util.List; 38 | 39 | /** 40 | * Created by clienthax on 13/4/2015. 41 | */ 42 | public class EventHandler { 43 | 44 | @SubscribeEvent 45 | @SideOnly(Side.CLIENT) 46 | public void onConnect(PlayerEvent.PlayerLoggedInEvent event) { 47 | ForgeVersion.CheckResult checkResult = ForgeVersion.getResult(FMLCommonHandler.instance().findContainerFor(ChocoCraft2.instance)); 48 | if (checkResult.status == ForgeVersion.Status.OUTDATED) { 49 | ClickEvent clickEvent = new ClickEvent(ClickEvent.Action.OPEN_URL, checkResult.url); 50 | ChatStyle clickableChatStyle = new ChatStyle().setChatClickEvent(clickEvent); 51 | event.player.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD+"Chococraft 2 Update available!, Click here to open website").setChatStyle(clickableChatStyle)); 52 | event.player.addChatMessage(new ChatComponentText(checkResult.changes.get(checkResult.target)).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.AQUA))); 53 | } 54 | } 55 | 56 | @SubscribeEvent 57 | @SideOnly(Side.CLIENT) 58 | public void onRightClickChocopedia(PlayerInteractEvent event) throws IOException {//TODO this is a terrible way to do this 59 | if(event.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR) { 60 | if(event.entityPlayer.getHeldItem() != null && event.entityPlayer.getHeldItem().getItem() == Additions.chocopediaItem) { 61 | ItemStack book = new ItemStack(Items.written_book); 62 | NBTTagCompound tagCompound = new NBTTagCompound(); 63 | tagCompound.setString("title", "Chocopedia"); 64 | tagCompound.setString("author", "Clienthax"); 65 | NBTTagList pageList = new NBTTagList(); 66 | 67 | String languageCode = Minecraft.getMinecraft().gameSettings.language; 68 | 69 | InputStream inputStream; 70 | try { 71 | inputStream = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(Constants.MODID, "lang/chocopedia/" + languageCode +".hocon")).getInputStream(); 72 | } catch (FileNotFoundException e) { 73 | inputStream = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(Constants.MODID, "lang/chocopedia/en_US.hocon")).getInputStream(); 74 | } 75 | 76 | byte[] data = new byte[inputStream.available()]; 77 | IOUtils.readFully(inputStream, data); 78 | ConfigurationNode configurationLoader = HoconConfigurationLoader.builder().setSource(CharSource.wrap(new String(data))).build().load(); 79 | 80 | List pages = configurationLoader.getNode("pages").getChildrenList(); 81 | for(ConfigurationNode node : pages) { 82 | String pageText = ""; 83 | List lines = node.getChildrenList(); 84 | for(ConfigurationNode line : lines) 85 | pageText += line.getString(); 86 | pageList.appendTag(new NBTTagString(FormattingHelper.convertFormattingCodes(pageText))); 87 | } 88 | tagCompound.setTag("pages", pageList); 89 | book.setTagCompound(tagCompound); 90 | 91 | Minecraft.getMinecraft().displayGuiScreen(new GuiScreenBook(event.entityPlayer, book, false)); 92 | event.setCanceled(true); 93 | } 94 | } 95 | } 96 | 97 | @SubscribeEvent 98 | public void onBoneMealUse(BonemealEvent event) { 99 | if(event.block.getBlock() != Additions.gysahlStemBlock) 100 | return; 101 | 102 | //This tells forge we have processed the event 103 | event.setResult(Event.Result.ALLOW); 104 | //If the stage is below max, then set the growth to max stage, if its already fully grown, cancel the event (prevent the player from losing bonemeal) 105 | if((Integer) event.block.getValue(GysahlStemBlock.STAGE) < GysahlStemBlock.MAXSTAGE) { 106 | ((GysahlStemBlock) event.block.getBlock()).setGrowthStage(event.world, event.pos, event.block); 107 | } else 108 | event.setCanceled(true); 109 | } 110 | 111 | } 112 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/items/ChocoboWhistleItem.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.items; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.server.MinecraftServer; 7 | import net.minecraft.util.ChatComponentText; 8 | import net.minecraft.world.World; 9 | import net.minecraft.world.WorldServer; 10 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 11 | import uk.co.haxyshideout.haxylib.items.GenericItem; 12 | 13 | import java.util.UUID; 14 | 15 | public class ChocoboWhistleItem extends GenericItem { 16 | 17 | @Override 18 | public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) { 19 | if (world.isRemote)// return if client 20 | return itemstack; 21 | 22 | itemstack = super.onItemRightClick(itemstack, world, player); 23 | 24 | if(!itemstack.hasTagCompound() || !itemstack.getTagCompound().hasKey("LinkedChocoboUUID")) 25 | return itemstack; 26 | 27 | UUID chocoboUUID = UUID.fromString(itemstack.getTagCompound().getString("LinkedChocoboUUID")); 28 | Entity entity = MinecraftServer.getServer().getEntityFromUuid(chocoboUUID); 29 | if(entity == null) { 30 | player.addChatComponentMessage(new ChatComponentText("Unable to find linked chocobo")); 31 | return itemstack; 32 | } 33 | 34 | if(entity instanceof EntityChocobo) { 35 | if(entity.worldObj != player.worldObj) { 36 | player.addChatComponentMessage(new ChatComponentText("The chocobo is not in the same world as you")); 37 | return itemstack; 38 | // MinecraftServer.getServer().getConfigurationManager().transferEntityToWorld(entity, entity.dimension, (WorldServer)entity.getEntityWorld(), (WorldServer)player.worldObj); 39 | } 40 | entity.setLocationAndAngles(player.posX, player.posY, player.posZ, 0, 0); 41 | player.addChatComponentMessage(new ChatComponentText("You called "+entity.getCommandSenderName()+" to you")); 42 | } 43 | 44 | return itemstack; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/items/SpawnEggItem.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.items; 2 | 3 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo.ChocoboColor; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.world.World; 8 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 9 | import uk.co.haxyshideout.haxylib.items.GenericItem; 10 | import uk.co.haxyshideout.haxylib.utils.RandomHelper; 11 | 12 | /** 13 | * Created by clienthax on 2/6/2015. 14 | */ 15 | public class SpawnEggItem extends GenericItem { 16 | 17 | private ChocoboColor mobColor; 18 | 19 | public SpawnEggItem(ChocoboColor mobColor) 20 | { 21 | super(); 22 | 23 | this.mobColor = mobColor; 24 | } 25 | 26 | @Override 27 | public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) { 28 | if (!player.capabilities.isCreativeMode) 29 | itemstack.stackSize--; 30 | 31 | if (!player.worldObj.isRemote && !player.capabilities.isFlying) { 32 | player.worldObj.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (RandomHelper.random.nextFloat() * 0.4f + 0.8f)); 33 | EntityChocobo entity = new EntityChocobo(player.worldObj); 34 | entity.setColor(mobColor); 35 | entity.setLocationAndAngles(player.posX, player.posY, player.posZ, player.cameraYaw, player.cameraPitch); 36 | player.worldObj.spawnEntityInWorld(entity); 37 | } 38 | 39 | return itemstack; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/network/PacketRegistry.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.network; 2 | 3 | import net.minecraftforge.fml.common.network.NetworkRegistry; 4 | import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; 5 | import net.minecraftforge.fml.relauncher.Side; 6 | import uk.co.haxyshideout.chococraft2.config.Constants; 7 | import uk.co.haxyshideout.chococraft2.network.side.server.ChocopediaEditPacket; 8 | import uk.co.haxyshideout.chococraft2.network.side.server.DropGearPacket; 9 | import uk.co.haxyshideout.chococraft2.network.side.server.RiderStateUpdatePacket; 10 | 11 | /** 12 | * Created by clienthax on 5/5/2015. 13 | */ 14 | public class PacketRegistry { 15 | 16 | public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel(Constants.MODID); 17 | 18 | @SuppressWarnings("UnusedAssignment") 19 | public static void registerPackets() { 20 | int id = 0; 21 | INSTANCE.registerMessage(DropGearPacket.Handler.class, DropGearPacket.class, id++, Side.SERVER); 22 | INSTANCE.registerMessage(ChocopediaEditPacket.Handler.class, ChocopediaEditPacket.class, id++, Side.SERVER); 23 | INSTANCE.registerMessage(RiderStateUpdatePacket.Handler.class, RiderStateUpdatePacket.class, id++, Side.SERVER); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/network/side/server/ChocopediaEditPacket.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.network.side.server; 2 | 3 | import com.mojang.authlib.GameProfile; 4 | import io.netty.buffer.ByteBuf; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.entity.player.EntityPlayerMP; 7 | import net.minecraft.server.MinecraftServer; 8 | import net.minecraft.util.ChatComponentText; 9 | import net.minecraftforge.fml.common.network.ByteBufUtils; 10 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 11 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 12 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 13 | import uk.co.haxyshideout.chococraft2.client.gui.ChocopediaGui; 14 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 15 | 16 | import java.util.UUID; 17 | 18 | /** 19 | * Created by clienthax on 5/5/2015. 20 | */ 21 | public class ChocopediaEditPacket implements IMessage { 22 | 23 | UUID entityID; 24 | String chocoboName; 25 | EntityChocobo.MovementType movementType; 26 | String ownerName; 27 | 28 | public ChocopediaEditPacket() {} 29 | 30 | public ChocopediaEditPacket(ChocopediaGui chocopediaGui) { 31 | entityID = chocopediaGui.chocobo.getUniqueID(); 32 | chocoboName = chocopediaGui.name; 33 | movementType = chocopediaGui.movementType; 34 | ownerName = chocopediaGui.owner; 35 | } 36 | 37 | @Override 38 | public void fromBytes(ByteBuf buf) { 39 | entityID = UUID.fromString(ByteBufUtils.readUTF8String(buf)); 40 | chocoboName = ByteBufUtils.readUTF8String(buf); 41 | movementType = EntityChocobo.MovementType.values()[buf.readByte()]; 42 | ownerName = ByteBufUtils.readUTF8String(buf); 43 | } 44 | 45 | @Override 46 | public void toBytes(ByteBuf buf) { 47 | ByteBufUtils.writeUTF8String(buf, entityID.toString()); 48 | ByteBufUtils.writeUTF8String(buf, chocoboName); 49 | buf.writeByte(movementType.ordinal()); 50 | ByteBufUtils.writeUTF8String(buf, ownerName); 51 | } 52 | 53 | public static class Handler implements IMessageHandler { 54 | 55 | @Override 56 | public IMessage onMessage(ChocopediaEditPacket message, MessageContext ctx) { 57 | Entity entity = MinecraftServer.getServer().getEntityFromUuid(message.entityID); 58 | if (entity != null && entity instanceof EntityChocobo) { 59 | EntityChocobo chocobo = (EntityChocobo) entity; 60 | EntityPlayerMP player = ctx.getServerHandler().playerEntity; 61 | if (player == chocobo.getOwner()) {//Verify that the person who sent the packet is the owner of the chocobo 62 | chocobo.setCustomNameTag(message.chocoboName); 63 | chocobo.setMovementType(message.movementType); 64 | GameProfile ownerProfile = MinecraftServer.getServer().getPlayerProfileCache().getGameProfileForUsername(message.ownerName); 65 | if(ownerProfile != null) { 66 | chocobo.setOwnerId(ownerProfile.getId().toString()); 67 | } else { 68 | ctx.getServerHandler().playerEntity.addChatComponentMessage(new ChatComponentText("Unable to find owner by that name, not applying new owner!")); 69 | } 70 | } 71 | } 72 | 73 | return null; 74 | } 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/network/side/server/DropGearPacket.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.network.side.server; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.entity.player.EntityPlayerMP; 6 | import net.minecraft.server.MinecraftServer; 7 | import net.minecraftforge.fml.common.network.ByteBufUtils; 8 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 9 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 10 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 11 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 12 | 13 | import java.util.UUID; 14 | 15 | /** 16 | * Created by clienthax on 5/5/2015. 17 | */ 18 | public class DropGearPacket implements IMessage { 19 | 20 | public DropGearPacket(){} 21 | 22 | UUID entityID; 23 | 24 | public DropGearPacket(EntityChocobo chocobo) { 25 | entityID = chocobo.getUniqueID(); 26 | } 27 | 28 | @Override 29 | public void fromBytes(ByteBuf buf) { 30 | entityID = UUID.fromString(ByteBufUtils.readUTF8String(buf)); 31 | } 32 | 33 | @Override 34 | public void toBytes(ByteBuf buf) { 35 | ByteBufUtils.writeUTF8String(buf, entityID.toString()); 36 | } 37 | 38 | public static class Handler implements IMessageHandler { 39 | @Override 40 | public IMessage onMessage(DropGearPacket message, MessageContext ctx) { 41 | Entity entity = MinecraftServer.getServer().getEntityFromUuid(message.entityID); 42 | if(entity != null && entity instanceof EntityChocobo) { 43 | EntityChocobo chocobo = (EntityChocobo) entity; 44 | EntityPlayerMP player = ctx.getServerHandler().playerEntity; 45 | if(player == chocobo.getOwner()) {//Verify that the person who sent the packet is the owner of the chocobo 46 | chocobo.dropGear(ctx.getServerHandler().playerEntity); 47 | } 48 | } 49 | 50 | return null; 51 | } 52 | 53 | } 54 | 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/network/side/server/RiderStateUpdatePacket.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.network.side.server; 2 | 3 | import io.netty.buffer.ByteBuf; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage; 6 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; 7 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 8 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 9 | import uk.co.haxyshideout.chococraft2.entities.RiderState; 10 | 11 | /** 12 | * Created by clienthax on 8/6/2015. 13 | */ 14 | public class RiderStateUpdatePacket implements IMessage { 15 | 16 | RiderState riderState; 17 | 18 | public RiderStateUpdatePacket() {} 19 | 20 | public RiderStateUpdatePacket(EntityChocobo riddenEntity) {//TODO make interface for controllable entities for haxylib, edit this to take that interface etc 21 | riderState = riddenEntity.getRiderState(); 22 | } 23 | 24 | @Override 25 | public void fromBytes(ByteBuf buf) { 26 | riderState = new RiderState(); 27 | riderState.setJumping(buf.readBoolean()); 28 | riderState.setSneaking(buf.readBoolean()); 29 | } 30 | 31 | @Override 32 | public void toBytes(ByteBuf buf) { 33 | buf.writeBoolean(riderState.isJumping()); 34 | buf.writeBoolean(riderState.isSneaking()); 35 | } 36 | 37 | public static class Handler implements IMessageHandler { 38 | @Override 39 | public IMessage onMessage(RiderStateUpdatePacket message, MessageContext ctx) { 40 | Entity entity = ctx.getServerHandler().playerEntity.ridingEntity; 41 | if(!(entity instanceof EntityChocobo)) 42 | return null; 43 | 44 | EntityChocobo chocobo = (EntityChocobo) entity; 45 | chocobo.getRiderState().updateState(message.riderState); 46 | 47 | return null; 48 | } 49 | 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/proxies/ClientProxy.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.proxies; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.entity.EntityPlayerSP; 5 | import net.minecraft.client.renderer.entity.RenderManager; 6 | import net.minecraft.entity.Entity; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraftforge.fml.client.registry.RenderingRegistry; 9 | import net.minecraftforge.fml.relauncher.Side; 10 | import net.minecraftforge.fml.relauncher.SideOnly; 11 | import uk.co.haxyshideout.chococraft2.client.gui.ChocopediaGui; 12 | import uk.co.haxyshideout.chococraft2.config.Additions; 13 | import uk.co.haxyshideout.chococraft2.config.Constants; 14 | import uk.co.haxyshideout.chococraft2.entities.EntityBabyChocobo; 15 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 16 | import uk.co.haxyshideout.chococraft2.entities.RiderState; 17 | import uk.co.haxyshideout.chococraft2.entities.models.ModelBabyChocobo; 18 | import uk.co.haxyshideout.chococraft2.entities.models.ModelChocobo; 19 | import uk.co.haxyshideout.chococraft2.entities.renderer.BabyChocoboRenderer; 20 | import uk.co.haxyshideout.chococraft2.entities.renderer.ChocoboRenderer; 21 | import uk.co.haxyshideout.chococraft2.network.PacketRegistry; 22 | import uk.co.haxyshideout.chococraft2.network.side.server.RiderStateUpdatePacket; 23 | import uk.co.haxyshideout.haxylib.utils.RegistryHelper; 24 | 25 | /** 26 | * Created by clienthax on 12/4/2015. 27 | */ 28 | public class ClientProxy extends ServerProxy 29 | { 30 | 31 | private RiderState localRiderState = new RiderState(); 32 | 33 | @Override 34 | public void registerRenderers() 35 | { 36 | RegistryHelper.registerRenderers(Additions.class, Constants.MODID); 37 | } 38 | 39 | @Override 40 | public void registerEntities() 41 | { 42 | super.registerEntities(); 43 | // Have to register renderers in here because mojang is stupid 44 | RenderManager manager = Minecraft.getMinecraft().getRenderManager(); 45 | RenderingRegistry.registerEntityRenderingHandler(EntityChocobo.class, new ChocoboRenderer(manager, new ModelChocobo())); 46 | RenderingRegistry.registerEntityRenderingHandler(EntityBabyChocobo.class, new BabyChocoboRenderer(manager, new ModelBabyChocobo())); 47 | } 48 | 49 | @Override 50 | public void openChocopedia(EntityChocobo chocobo) 51 | { 52 | Minecraft.getMinecraft().displayGuiScreen(new ChocopediaGui(chocobo)); 53 | } 54 | 55 | @Override 56 | public void updateRiderState(EntityPlayer rider) 57 | { 58 | EntityChocobo chocobo = (EntityChocobo) rider.ridingEntity; 59 | chocobo.getRiderState().updateState(getRiderState(rider)); 60 | if (chocobo.getRiderState().hasChanged()) 61 | { 62 | RiderStateUpdatePacket packet = new RiderStateUpdatePacket(chocobo); 63 | PacketRegistry.INSTANCE.sendToServer(packet); 64 | } 65 | chocobo.getRiderState().resetChanged(); 66 | } 67 | 68 | @SideOnly(Side.CLIENT) 69 | private RiderState getRiderState(Entity rider) 70 | { 71 | EntityPlayerSP riderSP = (EntityPlayerSP) rider; 72 | localRiderState.setJumping(riderSP.movementInput.jump); 73 | localRiderState.setSneaking(riderSP.movementInput.sneak); 74 | return localRiderState; 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/proxies/ServerProxy.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.proxies; 2 | 3 | import net.minecraft.entity.EnumCreatureType; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.world.biome.BiomeGenBase; 6 | import net.minecraftforge.fml.common.registry.EntityRegistry; 7 | import net.minecraftforge.fml.common.registry.GameRegistry; 8 | import uk.co.haxyshideout.chococraft2.ChocoCraft2; 9 | import uk.co.haxyshideout.chococraft2.config.ChococraftConfig; 10 | import uk.co.haxyshideout.chococraft2.entities.EntityBabyChocobo; 11 | import uk.co.haxyshideout.chococraft2.entities.EntityChocobo; 12 | import uk.co.haxyshideout.chococraft2.worldgen.GysahlGen; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * Created by clienthax on 12/4/2015. 18 | */ 19 | public class ServerProxy 20 | { 21 | 22 | public void registerRenderers() 23 | { 24 | 25 | } 26 | 27 | @SuppressWarnings("UnusedAssignment") 28 | public void registerEntities() 29 | { 30 | int entityId = 0; 31 | 32 | EntityRegistry.registerModEntity(EntityBabyChocobo.class, "babychocobo", entityId++, ChocoCraft2.instance, 64, 1, true); 33 | EntityRegistry.registerModEntity(EntityChocobo.class, "chocobo", entityId++, ChocoCraft2.instance, 64, 1, true); 34 | ChococraftConfig config = ChocoCraft2.instance.getConfig(); 35 | List spawnBiomes = config.getSpawnBiomes(); 36 | EntityRegistry.addSpawn(EntityChocobo.class, config.getOverworldWeight(), config.getOverworldMinGroup(), config.getOverworldMaxGroup(), EnumCreatureType.CREATURE, spawnBiomes.toArray(new BiomeGenBase[spawnBiomes.size()])); 37 | EntityRegistry.addSpawn(EntityChocobo.class, config.getNetherWeight(), config.getNetherMinGroup(), config.getNetherMaxGroup(), EnumCreatureType.CREATURE, BiomeGenBase.hell); 38 | } 39 | 40 | public void registerWorldGenerators() 41 | { 42 | GameRegistry.registerWorldGenerator(new GysahlGen(), ChocoCraft2.instance.getConfig().getGysahlWorldGenWeight()); 43 | } 44 | 45 | public void openChocopedia(EntityChocobo chocobo) 46 | { 47 | } 48 | 49 | public void updateRiderState(EntityPlayer rider) 50 | { 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/chococraft2/worldgen/GysahlGen.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.chococraft2.worldgen; 2 | 3 | import net.minecraft.block.BlockBush; 4 | import net.minecraft.util.BlockPos; 5 | import net.minecraft.world.World; 6 | import net.minecraft.world.chunk.IChunkProvider; 7 | import net.minecraftforge.fml.common.IWorldGenerator; 8 | import uk.co.haxyshideout.chococraft2.blocks.GysahlStemBlock; 9 | import uk.co.haxyshideout.chococraft2.config.Additions; 10 | import uk.co.haxyshideout.haxylib.worldgen.BushGen; 11 | 12 | import java.util.Random; 13 | 14 | /** 15 | * Created by clienthax on 2/6/2015. 16 | */ 17 | public class GysahlGen implements IWorldGenerator { 18 | 19 | BushGen bushGen = new BushGen((BlockBush) Additions.gysahlStemBlock, Additions.gysahlStemBlock.getDefaultState().withProperty(GysahlStemBlock.STAGE, GysahlStemBlock.MAXSTAGE)); 20 | 21 | @Override 22 | public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { 23 | if(!world.provider.isSurfaceWorld())//Only spawn in the main world 24 | return; 25 | 26 | if(!(random.nextInt(1000) < 100)) 27 | return; 28 | 29 | int poxX = chunkX * 16 + random.nextInt(16);//gets us the world position of where to spawn the gysahls 30 | int posZ = chunkZ * 16 + random.nextInt(16); 31 | BlockPos finalPosition = world.getTopSolidOrLiquidBlock(new BlockPos(poxX, 0, posZ));//Gets the top block 32 | bushGen.generate(world, random, finalPosition);//Generate the blocks in world 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/blocks/GenericBlock.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.blocks; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.material.Material; 5 | 6 | /** 7 | * Created by clienthax on 12/4/2015. 8 | */ 9 | @SuppressWarnings("UnusedReturnValue") 10 | public class GenericBlock extends Block { 11 | 12 | private boolean opaque = true; 13 | private boolean fullcube = true; 14 | 15 | public GenericBlock(Material materialIn) { 16 | super(materialIn); 17 | } 18 | 19 | public Block setFullCube(boolean fullcube) { 20 | this.fullcube = fullcube; 21 | return this; 22 | } 23 | 24 | @Override 25 | public boolean isFullCube() { 26 | return fullcube; 27 | } 28 | 29 | public Block setOpaque(boolean opaque) { 30 | this.opaque = opaque; 31 | return this; 32 | } 33 | 34 | @Override 35 | public boolean isOpaqueCube() { 36 | return opaque; 37 | } 38 | 39 | @Override 40 | public String getUnlocalizedName() { 41 | return super.getUnlocalizedName().substring(5); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/blocks/GenericBush.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.blocks; 2 | 3 | import net.minecraft.block.BlockBush; 4 | 5 | /** 6 | * Created by clienthax on 13/4/2015. 7 | */ 8 | public class GenericBush extends BlockBush { 9 | 10 | @Override 11 | public String getUnlocalizedName() { 12 | return super.getUnlocalizedName().substring(5); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/debug/DebugHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.debug; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.item.Item; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.util.StatCollector; 7 | import net.minecraftforge.fml.common.registry.GameData; 8 | import net.minecraftforge.fml.common.registry.GameRegistry; 9 | 10 | @SuppressWarnings("unchecked") 11 | public class DebugHelper { 12 | 13 | public static void langCheck(String modid) { 14 | checkMissingBlockLangEntries(modid); 15 | checkMissingItemLangEntries(modid); 16 | } 17 | 18 | private static void checkMissingItemLangEntries(String modID) { 19 | for(Item item : (Iterable) GameData.getItemRegistry()) { 20 | if(!GameRegistry.findUniqueIdentifierFor(item).modId.equals(modID))//ONly check items for pixelmon 21 | continue; 22 | 23 | String itemName = item.getItemStackDisplayName(new ItemStack(item, 1)); 24 | if(itemName.contains(".")) 25 | { 26 | String translated = StatCollector.translateToLocal(itemName); 27 | if(translated.equals(itemName)){ 28 | System.out.println("Item " + itemName + " Doesn't have a lang entry"); 29 | } 30 | } 31 | } 32 | } 33 | 34 | private static void checkMissingBlockLangEntries(String modID) {//Check missing block lang entries 35 | for(Block block : (Iterable) GameData.getBlockRegistry()) { 36 | if(!GameRegistry.findUniqueIdentifierFor(block).modId.equals(modID))//Only check blocks for pixelmon 37 | continue; 38 | 39 | Item blockItem = Item.getItemFromBlock(block); 40 | if(blockItem == null) 41 | continue; 42 | 43 | String blockName = blockItem.getItemStackDisplayName(new ItemStack(blockItem, 1)); 44 | 45 | if(blockName.contains(".")) 46 | { 47 | String translated = StatCollector.translateToLocal(blockName); 48 | if(translated.equals(blockName)) { 49 | System.out.println("Block "+ blockName+" Doesn't have a lang entry"); 50 | } 51 | } 52 | 53 | 54 | } 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/GenericArmor.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | import net.minecraft.item.ItemArmor; 4 | 5 | public class GenericArmor extends ItemArmor implements IJsonItem { 6 | 7 | public enum ArmorType {Helm,Plate,Legs,Boots} 8 | public boolean equippedSet = false; 9 | 10 | public GenericArmor(ArmorMaterial material, int renderIndex, ArmorType armorType) { 11 | super(material, renderIndex, armorType.ordinal()); 12 | } 13 | 14 | @Override 15 | public String getUnlocalizedName() { 16 | return super.getUnlocalizedName().substring(5); 17 | } 18 | 19 | @Override 20 | public String getTextureFolder() { 21 | return "items/armor"; 22 | } 23 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/GenericItem.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | import net.minecraft.item.Item; 4 | 5 | /** 6 | * Created by clienthax on 13/4/2015. 7 | */ 8 | public class GenericItem extends Item implements IJsonItem { 9 | 10 | @Override 11 | public String getUnlocalizedName() { 12 | return super.getUnlocalizedName().substring(5); 13 | } 14 | 15 | @Override 16 | public String getTextureFolder() { 17 | return "items"; 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/GenericItemFood.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | import net.minecraft.item.ItemFood; 4 | 5 | /** 6 | * Created by clienthax on 13/4/2015. 7 | */ 8 | public class GenericItemFood extends ItemFood implements IJsonItem { 9 | 10 | public GenericItemFood(int amount, float saturation, boolean isWolfFood) { 11 | super(amount, saturation, isWolfFood); 12 | } 13 | 14 | public GenericItemFood(int amount, boolean isWolfFood) { 15 | super(amount, isWolfFood); 16 | } 17 | 18 | @Override 19 | public String getUnlocalizedName() { 20 | return super.getUnlocalizedName().substring(5); 21 | } 22 | 23 | @Override 24 | public String getTextureFolder() { 25 | return "items"; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/GenericItemSeeds.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.item.ItemSeeds; 5 | 6 | /** 7 | * Created by clienthax on 13/4/2015. 8 | */ 9 | public class GenericItemSeeds extends ItemSeeds implements IJsonItem { 10 | 11 | public GenericItemSeeds(Block crops, Block soil) { 12 | super(crops, soil); 13 | } 14 | 15 | @Override 16 | public String getUnlocalizedName() { 17 | return super.getUnlocalizedName().substring(5); 18 | } 19 | 20 | @Override 21 | public String getTextureFolder() { 22 | return "items"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/GenericSpawnEgg.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | /** 4 | * Created by clienthax on 4/6/2015. 5 | */ 6 | public class GenericSpawnEgg extends GenericItem { 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/items/IJsonItem.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.items; 2 | 3 | /** 4 | * Created by clienthax on 12/4/2015. 5 | */ 6 | public interface IJsonItem { 7 | String getTextureFolder(); 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/FormattingHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | /** 4 | * Created by clienthax on 5/6/2015. 5 | */ 6 | public class FormattingHelper { 7 | 8 | /** 9 | * Converts the formatting oodes from {@literal &}x format to the internal format used by mc. 10 | * @param readable the string to swap the control codes for 11 | */ 12 | public static String convertFormattingCodes(String readable) {//Thanks diesieben07 fir the regex help 13 | return readable.replaceAll("(?i)&([0-9A-FK-OR])", "§$1"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/InventoryHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | import net.minecraft.entity.item.EntityItem; 4 | import net.minecraft.entity.player.EntityPlayerMP; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.world.World; 7 | 8 | /** 9 | * Created by clienthax on 20/5/2015. 10 | */ 11 | public class InventoryHelper { 12 | 13 | /** 14 | * Gives the player a {@link ItemStack} if they do not already have it in their inventory 15 | * @param stack the ItemStack to give to the player if not present 16 | * @param player the player to give the stack to 17 | */ 18 | public static void giveIfMissing(ItemStack stack, EntityPlayerMP player) { 19 | if(!player.inventory.hasItemStack(stack)) { 20 | player.inventory.addItemStackToInventory(stack); 21 | player.inventoryContainer.detectAndSendChanges();//mc is stupid and needs this to "show" the item 22 | } 23 | } 24 | 25 | /** 26 | * Attempts to give the player a item, if their inventory is full, it will drop the item where they are standing in the world. 27 | * @param stack the ItemStack to give to the player 28 | * @param player the player to give the stack to 29 | */ 30 | public static void giveOrDropStack(ItemStack stack, EntityPlayerMP player) { 31 | boolean addedToPlayer = player.inventory.addItemStackToInventory(stack); 32 | if(addedToPlayer) { 33 | player.inventoryContainer.detectAndSendChanges();//mc is stupid and needs this to "show" the item 34 | return; 35 | } 36 | 37 | EntityItem entityItem = new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, stack); 38 | player.worldObj.spawnEntityInWorld(entityItem); 39 | } 40 | 41 | public static void dropStack(ItemStack stack, World world, double x, double y, double z) { 42 | EntityItem entityItem = new EntityItem(world, x, y, z, stack); 43 | world.spawnEntityInWorld(entityItem); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/JsonGenerator.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | import net.minecraft.item.Item; 4 | import net.minecraft.launchwrapper.Launch; 5 | import org.apache.commons.io.FileUtils; 6 | import uk.co.haxyshideout.haxylib.items.IJsonItem; 7 | 8 | import java.io.File; 9 | import java.io.IOException; 10 | 11 | /** 12 | * Created by clienthax on 6/3/2015. 13 | */ 14 | public class JsonGenerator { 15 | 16 | public static boolean devEnviroment = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); 17 | 18 | static File libResourcesFolder = new File("../src/main/resources/assets/haxylib/json/"); 19 | static File modResourcesFolder = null; 20 | static String modid = null; 21 | 22 | public static void setModID(String modId) { 23 | modid = modId; 24 | modResourcesFolder = new File("../src/main/resources/assets/"+modId); 25 | } 26 | 27 | public static void generateSimpleBlockJson(String blockName) throws IOException {//TODO generation for stuff with tile's and icons 28 | if(!devEnviroment) 29 | return; 30 | 31 | if(new File(modResourcesFolder, "blockstates/" + blockName + ".json").exists()) 32 | return; 33 | 34 | System.out.println(libResourcesFolder.getAbsolutePath()); 35 | String blockstateTemplate = FileUtils.readFileToString(new File(libResourcesFolder, "blockstates/basicState.json")); 36 | String blockTemplate = FileUtils.readFileToString(new File(libResourcesFolder, "models/block/basicBlock.json")); 37 | String itemTemplate = FileUtils.readFileToString(new File(libResourcesFolder, "models/item/basicItemBlock.json")); 38 | 39 | blockstateTemplate = blockstateTemplate.replace("%name%", blockName).replace("%modid%",modid); 40 | blockTemplate = blockTemplate.replace("%name%", blockName).replace("%modid%", modid); 41 | itemTemplate = itemTemplate.replace("%name%", blockName).replace("%modid%", modid); 42 | 43 | FileUtils.writeStringToFile(new File(modResourcesFolder, "blockstates/"+blockName+".json"), blockstateTemplate); 44 | FileUtils.writeStringToFile(new File(modResourcesFolder, "models/block/"+blockName+".json"), blockTemplate); 45 | FileUtils.writeStringToFile(new File(modResourcesFolder, "models/item/"+blockName+".json"), itemTemplate); 46 | 47 | } 48 | 49 | public static void generateSimpleItemJson(String itemName, boolean skip5, Item item) throws IOException { 50 | if(!devEnviroment) 51 | return; 52 | 53 | if(new File(modResourcesFolder, "models/item/"+itemName+".json").exists()) 54 | return; 55 | 56 | String itemTemplate = FileUtils.readFileToString(new File(libResourcesFolder, "models/item/basicItem.json")); 57 | if(item instanceof IJsonItem) 58 | itemTemplate = itemTemplate.replace("%texfolder%",((IJsonItem)item).getTextureFolder()); 59 | 60 | if(skip5) 61 | itemTemplate = itemTemplate.replace("%name%", itemName.substring(5)); 62 | else 63 | itemTemplate = itemTemplate.replace("%name%", itemName); 64 | 65 | itemTemplate = itemTemplate.replace("%modid%", modid); 66 | FileUtils.writeStringToFile(new File(modResourcesFolder, "models/item/"+itemName+".json"), itemTemplate); 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/RandomHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | 4 | import java.util.InputMismatchException; 5 | import java.util.Random; 6 | 7 | /** 8 | * Created by clienthax on 20/5/2015. 9 | */ 10 | public class RandomHelper { 11 | public static Random random = new Random(); 12 | 13 | //returns true if random returns a value that is under or equal to the percentage required for success 14 | public static boolean getChanceResult(int percentageForSuccess) { 15 | if(percentageForSuccess == 0) 16 | return false; 17 | if(percentageForSuccess >= 0 && percentageForSuccess <= 100) 18 | return random.nextInt(100) <= percentageForSuccess; 19 | else 20 | throw new InputMismatchException("getChanceResult passed "+percentageForSuccess+" but expected range of 0-100"); 21 | } 22 | 23 | public static int getRandomInt(int maxValue) { 24 | return random.nextInt(maxValue); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/RecipeHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.init.Items; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraftforge.fml.common.registry.GameRegistry; 8 | 9 | /** 10 | * Created by clienthax on 13/4/2015. 11 | */ 12 | 13 | public class RecipeHelper { 14 | 15 | public static void makePickaxeRecipe(Item result, Item craftingMaterial) 16 | { 17 | GameRegistry.addRecipe(new ItemStack(result, 1), 18 | "XXX", 19 | " Y ", 20 | " Y ", 21 | 'X', craftingMaterial, 22 | 'Y', Items.stick 23 | ); 24 | } 25 | 26 | public static void makeAxeRecipe(Item result, Item craftingMaterial) 27 | { 28 | GameRegistry.addRecipe( 29 | new ItemStack(result, 1), 30 | "XX ", 31 | "XY ", 32 | " Y ", 33 | 'X', craftingMaterial, 34 | 'Y', Items.stick 35 | ); 36 | } 37 | 38 | public static void makeShovelRecipe(Item result, Item craftingMaterial) 39 | { 40 | GameRegistry.addRecipe( 41 | new ItemStack(result, 1), 42 | " X ", 43 | " Y ", 44 | " Y ", 45 | 'X', craftingMaterial, 46 | 'Y', Items.stick 47 | ); 48 | } 49 | 50 | public static void makeHoeRecipe(Item result, Item craftingMaterial) 51 | { 52 | GameRegistry.addRecipe( 53 | new ItemStack(result, 1), 54 | "XX ", 55 | " Y ", 56 | " Y ", 57 | 'X', craftingMaterial, 58 | 'Y', Items.stick 59 | ); 60 | } 61 | 62 | public static void makeSwordRecipe(Item result, Item craftingMaterial) 63 | { 64 | GameRegistry.addRecipe( 65 | new ItemStack(result, 1), 66 | " X ", 67 | " X ", 68 | " Y ", 69 | 'X', craftingMaterial, 70 | 'Y', Items.stick 71 | ); 72 | } 73 | 74 | public static void makeHelmRecipe(Item result, Item craftingMaterial) 75 | { 76 | GameRegistry.addRecipe( 77 | new ItemStack(result, 1), 78 | "XXX", 79 | "X X", 80 | " ", 81 | 'X', craftingMaterial 82 | ); 83 | } 84 | 85 | public static void makePlateRecipe(Item result, Item craftingMaterial) 86 | { 87 | GameRegistry.addRecipe( 88 | new ItemStack(result, 1), 89 | "X X", 90 | "XXX", 91 | "XXX", 92 | 'X', craftingMaterial 93 | ); 94 | } 95 | 96 | public static void makeLegsRecipe(Item result, Item craftingMaterial) 97 | { 98 | GameRegistry.addRecipe( 99 | new ItemStack(result, 1), 100 | "XXX", 101 | "X X", 102 | "X X", 103 | 'X', craftingMaterial 104 | ); 105 | } 106 | 107 | public static void makeBootsRecipe(Item result, Item craftingMaterial) 108 | { 109 | GameRegistry.addRecipe( 110 | new ItemStack(result, 1), 111 | "X X", 112 | "X X", 113 | 'X', craftingMaterial 114 | ); 115 | } 116 | 117 | public static void makeItemToBlockRecipe(Block result, Item craftingMaterial) 118 | { 119 | GameRegistry.addRecipe( 120 | new ItemStack(result, 1), 121 | "XXX", 122 | "XXX", 123 | "XXX", 124 | 'X', craftingMaterial 125 | ); 126 | } 127 | 128 | public static void makeItemsFromBlock(Item result, Block craftingMaterial) 129 | { 130 | GameRegistry.addShapelessRecipe( 131 | new ItemStack(result, 9), 132 | new ItemStack(craftingMaterial, 1) 133 | ); 134 | } 135 | 136 | } 137 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/RegistryHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.client.resources.model.ModelResourceLocation; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraftforge.client.model.ModelLoader; 8 | import net.minecraftforge.fml.common.registry.GameRegistry; 9 | import net.minecraftforge.fml.relauncher.Side; 10 | import net.minecraftforge.fml.relauncher.SideOnly; 11 | 12 | import java.lang.reflect.Field; 13 | 14 | /** 15 | * Created by clienthax on 12/4/2015. 16 | */ 17 | public class RegistryHelper { 18 | 19 | public static void addEntityEgg() { 20 | 21 | } 22 | 23 | public static void registerFieldsWithGameRegistry(String modid, Class clazz) { 24 | try { 25 | JsonGenerator.setModID(modid); 26 | for (Field field : clazz.getFields()) { 27 | if (field.get(null) instanceof Block) { 28 | Block block = (Block) field.get(null); 29 | GameRegistry.registerBlock(block, block.getUnlocalizedName()); 30 | JsonGenerator.generateSimpleBlockJson(block.getUnlocalizedName()); 31 | 32 | } else if (field.get(null) instanceof Item) { 33 | Item item = (Item) field.get(null); 34 | GameRegistry.registerItem(item, item.getUnlocalizedName()); 35 | JsonGenerator.generateSimpleItemJson(item.getUnlocalizedName(), item instanceof ItemBlock, item); 36 | 37 | } 38 | } 39 | } catch (Exception e) { 40 | e.printStackTrace(); 41 | } 42 | } 43 | 44 | @SideOnly(Side.CLIENT) 45 | public static void registerRenderers(Class clazz, String modId) { 46 | try { 47 | for (Field field : clazz.getFields()) { 48 | if (field.get(null) instanceof Block) { 49 | Block block = (Block) field.get(null); 50 | ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, 51 | new ModelResourceLocation(modId + ":" + block.getUnlocalizedName(), "inventory")); 52 | } else if (field.get(null) instanceof Item) { 53 | Item item = (Item) field.get(null); 54 | ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(modId + ":" + item.getUnlocalizedName(), 55 | "inventory")); 56 | } 57 | } 58 | } catch (Exception e) { 59 | e.printStackTrace(); 60 | } 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/utils/WorldHelper.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.utils; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.state.IBlockState; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.util.BlockPos; 7 | import net.minecraft.world.World; 8 | import net.minecraft.world.WorldProviderHell; 9 | 10 | import java.util.ArrayList; 11 | import java.util.Iterator; 12 | import java.util.List; 13 | 14 | /** 15 | * Created by clienthax on 20/5/2015. 16 | */ 17 | @SuppressWarnings("WhileLoopReplaceableByForEach") 18 | public class WorldHelper { 19 | 20 | public static boolean isHellWorld(World world) { 21 | return world.provider instanceof WorldProviderHell; 22 | } 23 | 24 | public static boolean isBlockAtPositionLiquid(World world, BlockPos pos) { 25 | return world.getBlockState(pos).getBlock().getMaterial().isLiquid(); 26 | } 27 | 28 | public static boolean isNormalCubesAround(World world, BlockPos pos) { 29 | for(int x = pos.getX() -1; x <= pos.getX() + 1; x++) 30 | for(int z = pos.getZ() -1; z <= pos.getZ() + 1; z++) 31 | if(!isNormalBlockAtPos(world, pos.add(x,0,z))) 32 | return false; 33 | return true; 34 | } 35 | 36 | private static boolean isNormalBlockAtPos(World world, BlockPos pos) { 37 | return world.getBlockState(pos).getBlock().isNormalCube(); 38 | } 39 | 40 | public static BlockPos getFirstSolidWithAirAbove(World world, BlockPos pos) {//TODO more efficient way of doing this 41 | for(int y = pos.getY(); y < world.getHeight(); y++) { 42 | pos = new BlockPos(pos.getX(), y, pos.getZ()); 43 | if(world.getBlockState(pos).getBlock().isNormalCube() && world.isAirBlock(pos.up())) 44 | return pos; 45 | } 46 | return null; 47 | } 48 | 49 | public static List getBlockstatesInRangeOfEntity(Block blockType, Entity entity, int rangeXZ, int rangeY) { 50 | ArrayList blockStates = new ArrayList(); 51 | Iterator iterator = BlockPos.getAllInBox(entity.getPosition().add(-rangeXZ, -rangeY, -rangeXZ), entity.getPosition().add(rangeXZ, rangeY, rangeXZ)).iterator(); 52 | while (iterator.hasNext()) { 53 | BlockPos pos = (BlockPos) iterator.next(); 54 | IBlockState blockState = entity.worldObj.getBlockState(pos); 55 | if (blockState.getBlock() == blockType) 56 | blockStates.add(blockState); 57 | } 58 | return blockStates; 59 | } 60 | 61 | public static List getBlockPositionsInRangeOfEntity(Block blockType, Entity entity, int rangeXZ, int rangeY) { 62 | ArrayList blockPoses = new ArrayList(); 63 | Iterator iterator = BlockPos.getAllInBox(entity.getPosition().add(-rangeXZ, -rangeY, -rangeXZ), entity.getPosition().add(rangeXZ, rangeY, rangeXZ)).iterator(); 64 | while (iterator.hasNext()) { 65 | BlockPos pos = (BlockPos) iterator.next(); 66 | IBlockState blockState = entity.worldObj.getBlockState(pos); 67 | if (blockState.getBlock() == blockType) 68 | blockPoses.add(pos); 69 | } 70 | 71 | return blockPoses; 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/uk/co/haxyshideout/haxylib/worldgen/BushGen.java: -------------------------------------------------------------------------------- 1 | package uk.co.haxyshideout.haxylib.worldgen; 2 | 3 | import net.minecraft.block.BlockBush; 4 | import net.minecraft.block.state.IBlockState; 5 | import net.minecraft.util.BlockPos; 6 | import net.minecraft.world.World; 7 | 8 | import java.util.Random; 9 | 10 | /** 11 | * Created by clienthax on 2/6/2015. 12 | * Like WorldGenFlowers, but for bushs 13 | */ 14 | public class BushGen { 15 | 16 | private BlockBush flower; 17 | private IBlockState blockState; 18 | 19 | /** 20 | * @param block the bush block 21 | * @param state the state at which the flower should be fully grown 22 | */ 23 | public BushGen(BlockBush block, IBlockState state) 24 | { 25 | this.flower = block; 26 | this.blockState = state; 27 | } 28 | 29 | public void generate(World worldIn, Random rand, BlockPos position) 30 | { 31 | for (int i = 0; i < 64; ++i) 32 | { 33 | BlockPos blockPos = position.add(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); 34 | 35 | if (worldIn.isAirBlock(blockPos) && (!worldIn.provider.getHasNoSky() || blockPos.getY() < 255) && this.flower.canBlockStay(worldIn, blockPos, this.blockState)) 36 | { 37 | worldIn.setBlockState(blockPos, this.blockState, 2); 38 | } 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/blockstates/gysahlStemBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "normal": { "model": "chococraft2:gysahlStem0" }, 4 | "stage=0": { "model": "chococraft2:gysahlStem0" }, 5 | "stage=1": { "model": "chococraft2:gysahlStem1" }, 6 | "stage=2": { "model": "chococraft2:gysahlStem2" }, 7 | "stage=3": { "model": "chococraft2:gysahlStem3" }, 8 | "stage=4": { "model": "chococraft2:gysahlGreenBlock" } 9 | } 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/blockstates/strawBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "normal": { "model": "chococraft2:strawBlock" } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | 2 | gysahlStemBlock.name=Gysahl Stem 3 | strawBlock.name=Straw 4 | 5 | item.gysahlGreenItem.name=Gysahl Green 6 | item.gysahlSeedsItem.name=Gysahl Seeds 7 | item.gysahlGoldenItem.name=Golden Gysahl 8 | item.gysahlLoverlyItem.name=Loverly Gysahl 9 | item.gysahlPinkItem.name=Pink Gysahl 10 | item.gysahlRedItem.name=Red Gysahl 11 | item.gysahlRawPicklesItem.name=Raw Gysahl Pickles 12 | item.gysahlCookedPicklesItem.name=Gysahl Pickles 13 | item.gysahlCakeItem.name=Gysahl Cake 14 | item.gysahlChibiItem.name=Chibi Gysahl 15 | item.chocoboFeatherItem.name=Chocobo Feather 16 | item.chocoboLegRawItem.name=Raw Chocobo Leg 17 | item.chocoboLegCookedItem.name=Cooked Chocobo Leg 18 | item.chocopediaItem.name=Chocopedia 19 | item.chocoboSaddleItem.name=Chocobo Saddle 20 | item.chocoboSaddleBagItem.name=Chocobo Saddle Bag 21 | item.chocoboPackBagItem.name=Chocobo Pack Bag 22 | item.chocoboWhistleItem.name=Chocobo Whistle 23 | item.chocoDisguiseHelm.name=Chocodisguise Helmet 24 | item.chocoDisguiseChest.name=Chocodisguise Body 25 | item.chocoDisguiseLegs.name=Chocodisguise Legs 26 | item.chocoDisguiseBoots.name=Chocodisguise Boots 27 | itemGroup.Chococraft2=ChocoCraft 2 28 | entity.chocobo.name=Chocobo 29 | entity.babychocobo.name=Baby Chocobo 30 | 31 | item.purpleSpawnEggItem.name=Purple Chocobo Egg 32 | item.yellowSpawnEggItem.name=Yellow Chocobo Egg 33 | item.greenSpawnEggItem.name=Green Chocobo Egg 34 | item.blueSpawnEggItem.name=Blue Chocobo Egg 35 | item.whiteSpawnEggItem.name=White Chocobo Egg 36 | item.blackSpawnEggItem.name=Black Chocobo Egg 37 | item.goldSpawnEggItem.name=Gold Chocobo Egg 38 | item.pinkSpawnEggItem.name=Pink Chocobo Egg 39 | item.redSpawnEggItem.name=Red Chocobo Egg 40 | 41 | -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/gysahlGreenBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem05" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/gysahlStem0.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem01" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/gysahlStem1.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem02" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/gysahlStem2.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem03" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/gysahlStem3.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem04" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/block/strawBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/carpet", 3 | "textures": { 4 | "particle": "chococraft2:blocks/chocoboStraw", 5 | "wool": "chococraft2:blocks/chocoboStraw" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/baseItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "builtin/generated", 3 | "display": { 4 | "thirdperson": { 5 | "rotation": [ -90, 0, 0 ], 6 | "translation": [ 0, 1, -3 ], 7 | "scale": [ 0.55, 0.55, 0.55 ] 8 | }, 9 | "firstperson": { 10 | "rotation": [ 0, -135, 25 ], 11 | "translation": [ 0, 4, 2 ], 12 | "scale": [ 1.7, 1.7, 1.7 ] 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/blackSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/blackSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/blueSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/blueSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoDisguiseBoots.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/armor/chocoDisguiseBoots" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoDisguiseChest.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/armor/chocoDisguiseChest" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoDisguiseHelm.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/armor/chocoDisguiseHelm" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoDisguiseLegs.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/armor/chocoDisguiseLegs" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboFeatherItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboFeatherItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboLegCookedItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboLegCookedItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboLegRawItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboLegRawItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboPackBagItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboPackBagItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboSaddleBagItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboSaddleBagItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboSaddleItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboSaddleItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocoboWhistleItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocoboWhistleItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/chocopediaItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/chocopediaItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/goldSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/goldSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/greenSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/greenSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlCakeItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlCakeItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlChibiItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlChibiItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlCookedPicklesItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlCookedPicklesItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlGoldenItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlGoldenItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlGreenItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlGreenItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlLoverlyItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlLoverlyItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlPinkItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlPinkItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlRawPicklesItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlRawPicklesItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlRedItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlRedItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlSeedsItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/gysahlSeedsItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/gysahlStemBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cross", 3 | "textures": { 4 | "cross": "chococraft2:blocks/gysahl_stem01" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/pinkSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/pinkSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/purpleSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/purpleSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/redSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/redSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/strawBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:block/strawBlock", 3 | "display": { 4 | "thirdperson": { 5 | "rotation": [ 10, -45, 170 ], 6 | "translation": [ 0, 0.25, -2.75 ], 7 | "scale": [ 0.375, 0.375, 0.375 ] 8 | }, 9 | "firstperson": { 10 | "rotation": [ 0, 0, 0 ], 11 | "translation": [ 0, 5.25, 0 ], 12 | "scale": [ 1, 1, 1 ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/whiteSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/whiteSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/models/item/yellowSpawnEggItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "chococraft2:item/baseItem", 3 | "textures": { 4 | "layer0": "chococraft2:items/yellowSpawnEggItem" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/pack.mcmeta: -------------------------------------------------------------------------------- 1 | {"pack": { "pack_format": 1, "description": "Chococraft2 resources"}} -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/sounds.json: -------------------------------------------------------------------------------- 1 | { 2 | "choco_kweh": {"category": "neutral", "sounds": [{"name": "choco_kweh","stream": false}]}, 3 | "chico_kweh": {"category": "neutral", "sounds": [{"name": "choco_kweh","stream": false, "pitch": 5}]} 4 | } -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/sounds/choco_kweh.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/sounds/choco_kweh.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/chocoboStraw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/chocoboStraw.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem01.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem02.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem03.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem04.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/blocks/gysahl_stem05.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Tamed/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chicobos/Untamed/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Female/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Male/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Female/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/PackBagged/Male/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Female/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/SaddleBagged/Male/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Female/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Tamed/Saddled/Male/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Female/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/blackchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/bluechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/goldchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/greenchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/pinkchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/purplechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/redchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/whitechocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/entities/Chocobos/Untamed/Male/yellowchocobo.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseBoots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseBoots.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseChest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseChest.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseHelm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseHelm.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseLegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/armor/chocoDisguiseLegs.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/blackSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/blackSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/blueSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/blueSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboFeatherItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboFeatherItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboLegCookedItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboLegCookedItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboLegRawItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboLegRawItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboPackBagItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboPackBagItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboSaddleBagItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboSaddleBagItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboSaddleItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboSaddleItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocoboWhistleItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocoboWhistleItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/chocopediaItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/chocopediaItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/goldSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/goldSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/greenSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/greenSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlCakeItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlCakeItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlChibiItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlChibiItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlCookedPicklesItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlCookedPicklesItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlGoldenItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlGoldenItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlGreenItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlGreenItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlLoverlyItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlLoverlyItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlPinkItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlPinkItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlRawPicklesItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlRawPicklesItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlRedItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlRedItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/gysahlSeedsItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/gysahlSeedsItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/liquefiedchocopedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/liquefiedchocopedia.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/pinkSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/pinkSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/purpleSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/purpleSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/redSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/redSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/whiteSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/whiteSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/items/yellowSpawnEggItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/items/yellowSpawnEggItem.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/models/armor/chocoDisguise_layer_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/models/armor/chocoDisguise_layer_1.png -------------------------------------------------------------------------------- /src/main/resources/assets/chococraft2/textures/models/armor/chocoDisguise_layer_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/src/main/resources/assets/chococraft2/textures/models/armor/chocoDisguise_layer_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/haxylib/json/blockstates/basicState.json: -------------------------------------------------------------------------------- 1 | { 2 | "variants": { 3 | "normal": { "model": "%modid%:%name%" } 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/haxylib/json/models/block/basicBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "block/cube_all", 3 | "textures": { 4 | "all": "%modid%:blocks/%name%" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/haxylib/json/models/item/basicItem.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "%modid%:item/baseItem", 3 | "textures": { 4 | "layer0": "%modid%:%texfolder%/%name%" 5 | } 6 | } -------------------------------------------------------------------------------- /src/main/resources/assets/haxylib/json/models/item/basicItemBlock.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "%modid%:block/%name%", 3 | "display": { 4 | "thirdperson": { 5 | "rotation": [ 10, -45, 170 ], 6 | "translation": [ 0, 1.5, -2.75 ], 7 | "scale": [ 0.375, 0.375, 0.375 ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "chococraft2", 4 | "name": "ChocoCraft2", 5 | "description": "Adds a mountable, breedable mob and supporting items.", 6 | "version": "0.0.2", 7 | "credits": "The MinecraftForge Community.", 8 | "logoFile": "chococraft_icon.png", 9 | "mcversion": "1.8", 10 | "url": "http://www.minecraftforum.net/topic/1119809-", 11 | "updateUrl": "", 12 | "authors": ["Clienthax", "HassanS6000"], 13 | "parent": "", 14 | "screenshots": [], 15 | "dependencies": [ 16 | "mod_MinecraftForge" 17 | ], 18 | "useDependencyInformation": "true" 19 | } 20 | ] -------------------------------------------------------------------------------- /tools/Chocobos/blackchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/blackchocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/bluechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/bluechocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/chocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/chocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/goldchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/goldchocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/greenchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/greenchocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/pinkchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/pinkchocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/purplechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/purplechocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/redchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/redchocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/whitechocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/whitechocobo.png -------------------------------------------------------------------------------- /tools/Chocobos/yellowchocobo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Chocobos/yellowchocobo.png -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | # Tools 2 | 3 | ## Generate Textures 4 | 5 | ImageMagick 6.7.5 is needed to use this tool. 6 | 7 | This is currently only set up for adult Chocobos, Chicabos will need to be done manually for now, but I feel we don't need that at this time. 8 | 9 | You can run generate texture like this 10 | ```$ ./generate_texture.sh``` 11 | An output directory will be created, all files in there can be copied into choco folder. 12 | 13 | To add another Chocobo color, just create a new Chocobo in the Chocobo folder, when you run generate, it will be generate the appropriate textures for it. 14 | 15 | To add another texture overlay, like with saddle bags, create the overlay in the Textures folder. You can look there to see how it should be made. 16 | 17 | To add another variation to a Chocobo, in this case male and female, just create the appropriate texture in the variations folder. 18 | 19 | Note: All texture sizes must be the same in order for them to be overlayed properly. 20 | 21 | -------------------------------------------------------------------------------- /tools/Textures/PackBagged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/PackBagged.png -------------------------------------------------------------------------------- /tools/Textures/SaddleBagged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/SaddleBagged.png -------------------------------------------------------------------------------- /tools/Textures/SaddleBagged2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/SaddleBagged2.png -------------------------------------------------------------------------------- /tools/Textures/Saddled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/Saddled.png -------------------------------------------------------------------------------- /tools/Textures/Tamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/Tamed.png -------------------------------------------------------------------------------- /tools/Textures/Untamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures/Untamed.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/Untamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/Untamed.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/packbagged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/packbagged.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/saddlebagged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/saddlebagged.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/saddlebagged2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/saddlebagged2.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/saddled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/saddled.png -------------------------------------------------------------------------------- /tools/Textures_blueCollar/tamed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Textures_blueCollar/tamed.png -------------------------------------------------------------------------------- /tools/Variations/Female.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Variations/Female.png -------------------------------------------------------------------------------- /tools/Variations/Male.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clienthax/ChocoCraft2/c51ea7dc4372f95234dd847d5d9002665c4f3796/tools/Variations/Male.png -------------------------------------------------------------------------------- /tools/generate_textures.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # variables for the different directories 4 | # chocobo_dir has all the types of chocobos 5 | chocobo_dir=Chocobos 6 | # textures holds any overlays for the Chocobo 7 | texture_dir=Textures 8 | # variation holds any two types of certain color Chocobo (male/female) 9 | variation_dir=Variations 10 | # the output directory will be where the generated textures go 11 | output_dir=Output 12 | 13 | # remove the output directory 14 | rm -rf $output_dir 15 | 16 | # we will now generate textures 17 | echo "Generating textures..." 18 | 19 | # loop over files with png extension 20 | for f in `cd $chocobo_dir && ls && cd ..` 21 | do 22 | # store color as the filename without extension 23 | color=$(basename $f) 24 | color=${color%.*} 25 | 26 | # generating all textures for this chocobo color 27 | echo "> Generating textures for $f..." 28 | # loop over the textures to overlay 29 | for t in `cd $texture_dir && ls && cd ..` 30 | do 31 | # generating this texture 32 | echo ">> Generating $t..." 33 | 34 | # store the texture as the filename without extension 35 | texture=$(basename "$t") 36 | texture=${texture%.*} 37 | 38 | # make the directory 39 | mkdir -p $output_dir/$texture 40 | 41 | # loop over each variation 42 | for v in `cd $variation_dir && ls && cd ..` 43 | do 44 | # generating the texture 45 | echo ">>> Generating for $v" 46 | 47 | # store the variation as the filename without extension 48 | variation=$(basename "$v") 49 | variation=${variation%.*} 50 | 51 | # make the variation directory 52 | mkdir -p $output_dir/$texture/$variation 53 | 54 | # create the new filename 55 | filename=$output_dir/$texture/$variation/$color.png 56 | # first pass over with variation 57 | composite -gravity center $variation_dir/$v $chocobo_dir/$f $filename 58 | # then pass over with the texture overlay 59 | composite -gravity center $texture_dir/$t $filename $filename 60 | done # done with variation loop 61 | done # done with texture loop 62 | done # done with chocobo loop 63 | 64 | find ./Output -empty -type d -delete 65 | cd Output 66 | mv PackBagged Tamed/ 67 | mv SaddleBagged Tamed/ 68 | mv SaddleBagged2 Tamed/ 69 | mv Saddled Tamed/ 70 | -------------------------------------------------------------------------------- /updater/update.json: -------------------------------------------------------------------------------- 1 | { 2 | "homepage": "http://minecraft.curseforge.com/projects/chococraft", 3 | "promos": { 4 | "1.8-latest": "0.0.2", 5 | "1.8-recommended": "0.0.2" 6 | }, 7 | "1.8": { 8 | "0.0.2": "Alpha 2, Fix purple chocobos not dropping egg when breed, Fix items not being consumed on interaction with chocobos\nImplemented config system\nAll abilities and breeding are now configurable.", 9 | "0.0.1": "Alpha 1, Rewrite for 1.8" 10 | } 11 | } 12 | --------------------------------------------------------------------------------