From cf3a4c3e71b49796fff89b97d4fec2df37c3cc74 Mon Sep 17 00:00:00 2001 From: soultek101 Date: Sun, 8 Feb 2015 21:54:57 -0500 Subject: [PATCH] Removed bugspawning as well as misc fixes Removed bugspawning as well as misc fixes --- .classpath | 122 +- build.gradle | 2 +- eclipse/.metadata/.log | 598 +++ .../28/70576a0beeac0014196dc3517d78505a | 287 ++ .../34/907ddb99eeac0014196dc3517d78505a | 287 ++ .../4e/c0cd2df9eeac0014196dc3517d78505a | 334 ++ .../67/a00708d6ebac0014196dc3517d78505a | 336 ++ .../6a/908afa90eeac0014196dc3517d78505a | 288 ++ .../77/7037417febac0014196dc3517d78505a | 334 ++ .../88/307f67f99dac0014171585e4f63f5ff8 | 122 + .../8c/a0b1445beeac0014196dc3517d78505a | 288 ++ .../91/005c710aefac0014196dc3517d78505a | 287 ++ .../a6/60ef76089eac0014171585e4f63f5ff8 | 52 + .../bb/00f03852ecac0014196dc3517d78505a | 253 + .../be/90ad44a8ecac0014196dc3517d78505a | 334 ++ .../ea/008ce011eeac0014196dc3517d78505a | 288 ++ .../f4/701e27baedac0014196dc3517d78505a | 334 ++ .../fe/f0e37e309eac0014171585e4f63f5ff8 | 299 ++ .../.markers.snap | Bin 784 -> 480 bytes .../.syncinfo.snap | Bin 784 -> 480 bytes .../e4/b9/22/81/35/63/15/73/96/history.index | Bin 0 -> 530 bytes .../e4/b9/22/81/35/63/15/9f/history.index | Bin 640 -> 784 bytes .../e4/b9/22/81/35/63/15/history.index | Bin 220 -> 244 bytes .../.projects/Minecraft/.markers | Bin 8918 -> 8918 bytes .../.projects/Minecraft/.markers.snap | Bin 7851 -> 10170 bytes .../.projects/Minecraft/.syncinfo.snap | Bin 784 -> 480 bytes .../RemoteSystemsTempFiles/.markers.snap | Bin 784 -> 480 bytes .../RemoteSystemsTempFiles/.syncinfo.snap | Bin 784 -> 480 bytes .../.root/.indexes/properties.index | Bin 151 -> 151 bytes .../.root/.markers.snap | Bin 811 -> 480 bytes .../org.eclipse.core.resources/.root/8.tree | Bin 0 -> 786362 bytes .../.safetable/org.eclipse.core.resources | Bin 36240 -> 23228 bytes .../org.eclipse.core.resources/8.snap | Bin 0 -> 43577 bytes .../.settings/org.eclipse.jdt.launching.prefs | 2 +- .../.settings/org.eclipse.jdt.ui.prefs | 2 + .../.settings/org.eclipse.mylyn.java.ui.prefs | 3 + .../.settings/org.eclipse.search.prefs | 2 + .../org.eclipse.wst.ws.service.policy.prefs | 3 + .../org.eclipse.debug.ui/dialog_settings.xml | 8 + .../org.eclipse.e4.workbench/workbench.xmi | 4317 ++++++++--------- .../org.eclipse.jdt.core/286606776.index | Bin 469620 -> 469137 bytes .../org.eclipse.jdt.core/externalFilesCache | Bin 16809 -> 16809 bytes .../org.eclipse.jdt.core/indexNamesMap.txt | 1 + .../org.eclipse.jdt.core/savedIndexNames.txt | 4 +- .../org.eclipse.jdt.ui/dialog_settings.xml | 13 + .../.cache/clean-cache.properties | 2 +- .../org.eclipse.search/dialog_settings.xml | 115 + .../task-tags.properties | 3 + eclipse/.metadata/version.ini | 2 +- .../projectzulu/common/ProjectZulu_Core.java | 1 + .../projectzulu/common/ProjectZulu_Mobs.java | 15 +- .../projectzulu/common/core/DefaultProps.java | 2 +- .../common/core/EventHookContainerClass.java | 133 - .../common/mobs/models/ModelBear.java | 4 +- .../common/mobs/models/ModelBeaver.java | 4 +- .../common/mobs/models/ModelBoar.java | 4 +- .../common/mobs/models/ModelCamel.java | 28 +- .../common/mobs/models/ModelCrocodile.java | 4 +- .../common/mobs/models/ModelDeer.java | 11 +- .../common/mobs/models/ModelElephant.java | 20 +- .../common/mobs/models/ModelFox.java | 1 + .../common/mobs/models/ModelGiantRat.java | 4 +- .../common/mobs/models/ModelGoat.java | 4 +- .../common/mobs/models/ModelMonkeyTailed.java | 11 - .../common/mobs/models/ModelRhino.java | 4 +- src/main/resources/mcmod.info | 2 +- 66 files changed, 7011 insertions(+), 2563 deletions(-) create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/28/70576a0beeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/907ddb99eeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/c0cd2df9eeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/a00708d6ebac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/908afa90eeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/7037417febac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/307f67f99dac0014171585e4f63f5ff8 create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0b1445beeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/91/005c710aefac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/60ef76089eac0014171585e4f63f5ff8 create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/00f03852ecac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/90ad44a8ecac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/008ce011eeac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/701e27baedac0014196dc3517d78505a create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0e37e309eac0014171585e4f63f5ff8 create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/73/96/history.index create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/8.tree create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/8.snap create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.java.ui.prefs create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs create mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.ws.service.policy.prefs create mode 100644 eclipse/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml create mode 100644 eclipse/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt create mode 100644 eclipse/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml create mode 100644 eclipse/.metadata/.plugins/org.eclipse.search/dialog_settings.xml create mode 100644 eclipse/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties diff --git a/.classpath b/.classpath index 3159304..f8ce38f 100644 --- a/.classpath +++ b/.classpath @@ -1,66 +1,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index f9d0068..e31c4c6 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.7.10-1.4b3" +version = "1.7.10-1.4b4" group= "com.stek101.projectzulu" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "ProjectZulu" diff --git a/eclipse/.metadata/.log b/eclipse/.metadata/.log index ffb1fa2..05c4ce5 100644 --- a/eclipse/.metadata/.log +++ b/eclipse/.metadata/.log @@ -141,3 +141,601 @@ user global configuration and to define the default location to store repositori not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and EGit might behave differently since they see different configuration options. This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.core.resources 4 566 2015-02-03 14:10:24.316 +!MESSAGE Workspace was not properly initialized or has already shutdown. + +!ENTRY org.eclipse.core.jobs 4 1 2015-02-03 14:10:24.320 +!MESSAGE Worker thread ended job: Refreshing workspace(10), but still holds rule: ThreadJob(Refreshing workspace(10),[F/Minecraft/build/resources/main/assets/projectzuludungeon]) +!SESSION 2015-02-03 21:55:30.130 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-03 21:55:33.916 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.core.resources 2 10035 2015-02-03 22:04:31.936 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-03 22:04:34.123 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-03 22:05:10.513 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-03 22:05:10.515 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-02-04 13:40:17.926 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-04 13:40:21.051 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-04 13:40:50.848 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-04 13:42:04.118 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-04 13:42:04.118 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.core.resources 4 566 2015-02-04 14:53:12.239 +!MESSAGE Workspace was not properly initialized or has already shutdown. + +!ENTRY org.eclipse.core.jobs 4 1 2015-02-04 14:53:12.263 +!MESSAGE Worker thread ended job: Refreshing workspace(10), but still holds rule: ThreadJob(Refreshing workspace(10),[F/Minecraft/eclipse/.metadata/.plugins]) +!SESSION 2015-02-04 22:07:05.372 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-04 22:07:07.883 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.core.resources 2 10035 2015-02-04 22:07:12.519 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-04 22:07:16.669 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-04 22:08:00.238 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-04 22:08:00.240 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.core.resources 4 566 2015-02-04 23:43:18.101 +!MESSAGE Workspace was not properly initialized or has already shutdown. + +!ENTRY org.eclipse.core.jobs 4 1 2015-02-04 23:43:18.105 +!MESSAGE Worker thread ended job: Refreshing workspace(10), but still holds rule: ThreadJob(Refreshing workspace(10),[F/Minecraft/src/main/resources/assets/projectzulublock]) +!SESSION 2015-02-05 09:28:01.645 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-05 09:28:05.538 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-05 09:28:13.173 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 09:28:58.566 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 09:28:58.568 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-02-05 11:54:00.028 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-05 11:54:02.889 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.core.resources 4 567 2015-02-05 11:54:40.195 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-02-05 11:54:40.195 +!MESSAGE Could not read metadata for '.org.eclipse.jdt.core.external.folders'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for '.org.eclipse.jdt.core.external.folders' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:884) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:864) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:715) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1565) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2464) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2219) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:447) + at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771) + at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) + at java.security.AccessController.doPrivileged(Native Method) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319) + at org.eclipse.osgi.container.Module.doStart(Module.java:571) + at org.eclipse.osgi.container.Module.start(Module.java:439) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36) + at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:391) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160) + at java.lang.ClassLoader.loadClass(Unknown Source) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:136) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) + at org.eclipse.equinox.launcher.Main.run(Main.java:1465) + at org.eclipse.equinox.launcher.Main.main(Main.java:1438) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-02-05 11:54:40.197 +!MESSAGE The project description file (.project) for '.org.eclipse.jdt.core.external.folders' is missing. This file contains important information about the project. The project will not function properly until this file is restored. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-02-05 11:54:40.197 +!MESSAGE Could not read metadata for 'Minecraft'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'Minecraft' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:884) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:864) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:715) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1565) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2464) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2219) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:447) + at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771) + at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) + at java.security.AccessController.doPrivileged(Native Method) + at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764) + at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721) + at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:936) + at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:319) + at org.eclipse.osgi.container.Module.doStart(Module.java:571) + at org.eclipse.osgi.container.Module.start(Module.java:439) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454) + at org.eclipse.osgi.internal.hooks.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) + at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:531) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:324) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:320) + at org.eclipse.osgi.internal.loader.sources.SingleSourcePackage.loadClass(SingleSourcePackage.java:36) + at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:391) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337) + at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160) + at java.lang.ClassLoader.loadClass(Unknown Source) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:136) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) + at org.eclipse.equinox.launcher.Main.run(Main.java:1465) + at org.eclipse.equinox.launcher.Main.main(Main.java:1438) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-02-05 11:54:40.198 +!MESSAGE The project description file (.project) for 'Minecraft' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-05 11:54:40.997 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 11:54:54.606 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 11:54:54.608 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-02-05 11:55:12.032 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-05 11:55:14.939 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.core.resources 2 10035 2015-02-05 11:55:32.443 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-05 11:55:33.377 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 11:55:44.425 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 11:55:44.427 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-02-05 14:20:32.365 ----------------------------------------------- +eclipse.buildId=4.4.1.M20140925-0400 +java.version=1.8.0_11 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.jpt.dbws.eclipselink.ui 4 0 2015-02-05 14:20:34.851 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.BundleException: Could not resolve module: org.eclipse.jpt.dbws.eclipselink.ui [394] + Bundle was not resolved because of a uses contraint violation. + org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] because it is exposed to package 'javax.xml.bind' from resources org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] and javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] via two dependency chains. + +Chain 1: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.wst.common.project.facet.ui)(&(bundle-version>=1.3.0)(!(bundle-version>=2.0.0)))) + | + provide: osgi.wiring.bundle: org.eclipse.wst.common.project.facet.ui + org.eclipse.osgi [osgi.identity; osgi.identity="org.eclipse.osgi"; type="osgi.bundle"; version:Version="3.10.1.v20140909-1633"; singleton:="true"] + +Chain 2: + org.eclipse.jpt.dbws.eclipselink.ui [osgi.identity; osgi.identity="org.eclipse.jpt.dbws.eclipselink.ui"; type="osgi.bundle"; version:Version="1.1.100.v201310142259"; singleton:="true"] + require: (&(osgi.wiring.bundle=org.eclipse.persistence.dbws.builder)(&(bundle-version>=2.3.0)(!(bundle-version>=3.0.0)))) + | + provide: osgi.wiring.bundle; bundle-version:Version="2.6.0.v20130815-a4708b6"; osgi.wiring.bundle="org.eclipse.persistence.dbws.builder" + org.eclipse.persistence.dbws.builder [osgi.identity; osgi.identity="org.eclipse.persistence.dbws.builder"; type="osgi.bundle"; version:Version="2.6.0.v20130815-a4708b6"] + import: (osgi.wiring.package=javax.xml.bind) + | + export: osgi.wiring.package: javax.xml.bind + javax.xml.bind [osgi.identity; osgi.identity="javax.xml.bind"; type="osgi.bundle"; version:Version="2.1.9.v201005080401"] + at org.eclipse.osgi.container.Module.start(Module.java:434) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1582) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1561) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1533) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1476) + at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) + at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) + at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) + +!ENTRY org.eclipse.core.resources 2 10035 2015-02-05 14:21:05.412 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY org.eclipse.m2e.logback.configuration 2 0 2015-02-05 14:21:06.504 +!MESSAGE Exception while setting up logging:org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String +!STACK 0 +java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String + at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26) + at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189) + at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144) + at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107) + at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62) + at java.util.TimerThread.mainLoop(Unknown Source) + at java.util.TimerThread.run(Unknown Source) + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 14:21:20.419 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-02-05 14:21:20.421 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\BELFAM_ADMIN'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/28/70576a0beeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/28/70576a0beeac0014196dc3517d78505a new file mode 100644 index 0000000..46c83d7 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/28/70576a0beeac0014196dc3517d78505a @@ -0,0 +1,287 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/907ddb99eeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/907ddb99eeac0014196dc3517d78505a new file mode 100644 index 0000000..7976d19 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/34/907ddb99eeac0014196dc3517d78505a @@ -0,0 +1,287 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/c0cd2df9eeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/c0cd2df9eeac0014196dc3517d78505a new file mode 100644 index 0000000..b3734db --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/4e/c0cd2df9eeac0014196dc3517d78505a @@ -0,0 +1,334 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelCamel extends ModelBase +{ + float heightToRaise = 33f; + float renderScale = 1.0f; + //fields + //fields + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer HEADbump; + ModelRenderer HEAD; + ModelRenderer neckTop; + ModelRenderer neckBase; + ModelRenderer humpMain; + ModelRenderer humpMain2; + ModelRenderer saddleBase; + ModelRenderer saddleHorn1; + ModelRenderer saddleHorn2; + ModelRenderer Body; + ModelRenderer hip1; + ModelRenderer Leg1toProt; + ModelRenderer Leg1BotRot; + ModelRenderer hip2; + ModelRenderer Leg2toProt; + ModelRenderer Leg2BotRot; + ModelRenderer hip3; + ModelRenderer Leg3toProt; + ModelRenderer Leg3BotRot; + ModelRenderer hip4; + ModelRenderer Leg4toProt; + ModelRenderer Leg4BotRot; + ModelRenderer tail; + + public ModelCamel() + { + textureWidth = 128; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -3F, -4F, 5, 4, 7); + HEAD.setRotationPoint(0F, 3F - heightToRaise, -15F); + HEAD.setTextureSize(128, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.2268928F, 0F, 0F); + HEADbump = new ModelRenderer(this, 105, 42); + HEADbump.addBox(-2F, -2F, -3F, 3, 2, 6); + //HEADbump.setRotationPoint(1F, 1.5F, -15.5F); + HEADbump.setRotationPoint(1F, -1.5F, -0.5F); + HEADbump.setTextureSize(128, 64); + HEADbump.mirror = true; + setRotation(HEADbump, 0.296706F, 0F, 0F); + HEAD.addChild(HEADbump); + earLeft = new ModelRenderer(this, 60, 6); + earLeft.addBox(0F, -3F, -1F, 1, 4, 1); + //earLeft.setRotationPoint(1.5F, 1F, -13F); + earLeft.setRotationPoint(1.5F, -1.0F, 2.5F); + earLeft.setTextureSize(128, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, 0.5235988F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 60, 1); + earRight.addBox(-1F, -3F, -1F, 1, 4, 1); + //earRight.setRotationPoint(-0.5F, 1F, -13F); + earRight.setRotationPoint(-0.5F, -1.0F, 2.5F); + earRight.setTextureSize(128, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, -0.5235988F); + HEAD.addChild(earRight); + + neckTop = new ModelRenderer(this, 29, 1); + neckTop.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + neckTop.setRotationPoint(0.5F, 1.8F - heightToRaise , -14F); + neckTop.setTextureSize(128, 64); + neckTop.mirror = true; + setRotation(neckTop, 0.6457718F, 0F, 0F); + neckBase = new ModelRenderer(this, 43, 1); + neckBase.addBox(-1.5F, 0F, -1.5F, 3, 6, 4); + neckBase.setRotationPoint(0.5F, 6F - heightToRaise, -11.5F); + neckBase.setTextureSize(128, 64); + neckBase.mirror = true; + setRotation(neckBase, 1.117011F, 0F, 0F); + humpMain = new ModelRenderer(this, 1, 41); + humpMain.addBox(-3.5F, -2F, -2F, 8, 4, 9); + humpMain.setRotationPoint(0F, 3F - heightToRaise, -0.5F); + humpMain.setTextureSize(128, 64); + humpMain.mirror = true; + setRotation(humpMain, 0F, 0F, 0F); + humpMain2 = new ModelRenderer(this, 37, 42); + humpMain2.addBox(-3F, -2F, -2F, 7, 4, 7); + humpMain2.setRotationPoint(0F, 0.75F - heightToRaise, 0.5F); + humpMain2.setTextureSize(128, 64); + humpMain2.mirror = true; + setRotation(humpMain2, 0F, 0F, 0F); + saddleBase = new ModelRenderer(this, 68, 52); + saddleBase.addBox(-3.5F, -2F, -2F, 6, 1, 5); + saddleBase.setRotationPoint(1F, 4F - heightToRaise, -5F); + saddleBase.setTextureSize(128, 64); + saddleBase.mirror = true; + setRotation(saddleBase, 0F, 0F, 0F); + saddleHorn1 = new ModelRenderer(this, 67, 1); + saddleHorn1.addBox(-1F, -3F, -1F, 1, 5, 1); + saddleHorn1.setRotationPoint(1F, 1F - heightToRaise, -6F); + saddleHorn1.setTextureSize(128, 64); + saddleHorn1.mirror = true; + setRotation(saddleHorn1, 0.3346075F, 0F, 0F); + saddleHorn2 = new ModelRenderer(this, 73, 5); + saddleHorn2.addBox(-2F, -1F, -1F, 4, 1, 1); + saddleHorn2.setRotationPoint(0.5F, 0F - heightToRaise, -7F); + saddleHorn2.setTextureSize(128, 64); + saddleHorn2.mirror = true; + setRotation(saddleHorn2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 1, 14); + Body.addBox(-3.5F, -2F, -10F, 9, 9, 16); + Body.setRotationPoint(-0.5F, 5F - heightToRaise, 3F); + Body.setTextureSize(128, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + hip1 = new ModelRenderer(this, 68, 42); + hip1.addBox(-1F, -3F, -1F, 4, 4, 4); + hip1.setRotationPoint(-4F, 12F - heightToRaise, -5.5F); + hip1.setTextureSize(128, 64); + hip1.mirror = true; + setRotation(hip1, 0.0698132F, 0F, 0F); + Leg1toProt = new ModelRenderer(this, 65, 13); + Leg1toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg1toProt.setRotationPoint(-3F, 12F, -4.5F); + Leg1toProt.setRotationPoint(1F, 0F, 0.5F); + Leg1toProt.setTextureSize(128, 64); + Leg1toProt.mirror = true; + setRotation(Leg1toProt, 0.0698132F, 0F, 0F); + hip1.addChild(Leg1toProt); + Leg1BotRot = new ModelRenderer(this, 65, 25); + Leg1BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg1BotRot.setRotationPoint(-3F, 17F, -4F); + Leg1BotRot.setRotationPoint(0F, 6F, 0F); + Leg1BotRot.setTextureSize(128, 64); + Leg1BotRot.mirror = true; + setRotation(Leg1BotRot, -0.0698132F, 0F, 0F); + Leg1toProt.addChild(Leg1BotRot); + hip2 = new ModelRenderer(this, 68, 42); + hip2.addBox(-1F, -1F, -1F, 4, 4, 4); + hip2.setRotationPoint(3F, 10F - heightToRaise, -5.5F); + hip2.setTextureSize(128, 64); + hip2.mirror = true; + setRotation(hip2, 0.0698132F, 0F, 0F); + Leg2toProt = new ModelRenderer(this, 52, 13); + Leg2toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg2toProt.setRotationPoint(4F, 11F, -4.5F); + Leg2toProt.setRotationPoint(1F, 2F, 0.5F); + Leg2toProt.setTextureSize(128, 64); + Leg2toProt.mirror = true; + setRotation(Leg2toProt, 0.0698132F, 0F, 0F); + hip2.addChild(Leg2toProt); + Leg2BotRot = new ModelRenderer(this, 52, 25); + Leg2BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg2BotRot.setRotationPoint(4F, 17F, -4F); + Leg2BotRot.setRotationPoint(0F, 6F, 0F); + Leg2BotRot.setTextureSize(128, 64); + Leg2BotRot.mirror = true; + setRotation(Leg2BotRot, -0.0698132F, 0F, 0F); + Leg2toProt.addChild(Leg2BotRot); + hip3 = new ModelRenderer(this, 87, 42); + hip3.addBox(-1F, -1F, -1F, 4, 5, 4); + hip3.setRotationPoint(-4F, 9F - heightToRaise, 5F); + hip3.setTextureSize(128, 64); + hip3.mirror = true; + setRotation(hip3, 0.0698132F, 0F, 0F); + Leg3toProt = new ModelRenderer(this, 95, 13); + Leg3toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg3toProt.setRotationPoint(-3F, 12F, 6F); + Leg3toProt.setRotationPoint(1F, 2F, 1F); + Leg3toProt.setTextureSize(128, 64); + Leg3toProt.mirror = true; + setRotation(Leg3toProt, 0.0872665F, 0F, 0F); + hip3.addChild(Leg3toProt); + Leg3BotRot = new ModelRenderer(this, 95, 25); + Leg3BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg3BotRot.setRotationPoint(-3F, 17F, 6.5F); + Leg3BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg3BotRot.setTextureSize(128, 64); + Leg3BotRot.mirror = true; + setRotation(Leg3BotRot, -0.0698132F, 0F, 0F); + Leg3toProt.addChild(Leg3BotRot); + + hip4 = new ModelRenderer(this, 87, 42); + hip4.addBox(-1F, -1F, -1F, 4, 5, 4); + hip4.setRotationPoint(3F, 9F - heightToRaise, 5F); + hip4.setTextureSize(128, 64); + hip4.mirror = true; + setRotation(hip4, 0.0698132F, 0F, 0F); + Leg4toProt = new ModelRenderer(this, 81, 13); + Leg4toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg4toProt.setRotationPoint(4F, 12F, 6F); + Leg4toProt.setRotationPoint(1F, 2F, 1F); + Leg4toProt.setTextureSize(128, 64); + Leg4toProt.mirror = true; + setRotation(Leg4toProt, 0.0872665F, 0F, 0F); + hip4.addChild(Leg4toProt); + Leg4BotRot = new ModelRenderer(this, 81, 25); + Leg4BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg4BotRot.setRotationPoint(4F, 17F, 6.5F); + Leg4BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg4BotRot.setTextureSize(128, 64); + Leg4BotRot.mirror = true; + setRotation(Leg4BotRot, -0.0698132F, 0F, 0F); + Leg4toProt.addChild(Leg4BotRot); + tail = new ModelRenderer(this, 109, 13); + tail.addBox(-1F, -1F, 0F, 2, 7, 2); + tail.setRotationPoint(0F, 7F - heightToRaise, 7.6F); + tail.setTextureSize(128, 64); + tail.mirror = true; + setRotation(tail, 0.5585054F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + //Leg1toProt.render(f5); + //Leg1BotRot.render(f5); + hip2.render(renderScale * f5); + //Leg2toProt.render(f5); + //Leg2BotRot.render(f5); + hip3.render(renderScale * f5); + //Leg3toProt.render(f5); + //Leg3BotRot.render(f5); + hip4.render(renderScale * f5); + //Leg4toProt.render(f5); + //Leg4BotRot.render(f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.6F, 1.6F, 1.6F); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + hip2.render(renderScale * f5); + hip3.render(renderScale * f5); + hip4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Tail Rotation */ + //NECKROT.rotateAngleX = (float) (45 * Math.PI / 180 + 7 * Math.PI / 180 + //* MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + /* Tail Rotation */ + tail.rotateAngleZ = (float) (0.5f * MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + /* Leg Animation */ + hip1.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + hip2.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + Leg1BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg2BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + hip3.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + hip4.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + Leg3BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg4BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEAD.rotateAngleX = f3 / (180F / (float)Math.PI); //Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = f3 / (180F / (float)Math.PI); + } + + } diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/a00708d6ebac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/a00708d6ebac0014196dc3517d78505a new file mode 100644 index 0000000..d36260d --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/67/a00708d6ebac0014196dc3517d78505a @@ -0,0 +1,336 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelCamel extends ModelBase +{ + float heightToRaise = 33f; + float renderScale = 1.0f; + //fields + //fields + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer HEADbump; + ModelRenderer HEAD; + ModelRenderer neckTop; + ModelRenderer neckBase; + ModelRenderer humpMain; + ModelRenderer humpMain2; + ModelRenderer saddleBase; + ModelRenderer saddleHorn1; + ModelRenderer saddleHorn2; + ModelRenderer Body; + ModelRenderer hip1; + ModelRenderer Leg1toProt; + ModelRenderer Leg1BotRot; + ModelRenderer hip2; + ModelRenderer Leg2toProt; + ModelRenderer Leg2BotRot; + ModelRenderer hip3; + ModelRenderer Leg3toProt; + ModelRenderer Leg3BotRot; + ModelRenderer hip4; + ModelRenderer Leg4toProt; + ModelRenderer Leg4BotRot; + ModelRenderer tail; + + public ModelCamel() + { + textureWidth = 128; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -3F, -4F, 5, 4, 7); + HEAD.setRotationPoint(0F, 3F - heightToRaise, -15F); + HEAD.setTextureSize(128, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.2268928F, 0F, 0F); + HEADbump = new ModelRenderer(this, 105, 42); + HEADbump.addBox(-2F, -2F, -3F, 3, 2, 6); + //HEADbump.setRotationPoint(1F, 1.5F, -15.5F); + HEADbump.setRotationPoint(1F, -1.5F, -0.5F); + HEADbump.setTextureSize(128, 64); + HEADbump.mirror = true; + setRotation(HEADbump, 0.296706F, 0F, 0F); + HEAD.addChild(HEADbump); + earLeft = new ModelRenderer(this, 60, 6); + earLeft.addBox(0F, -3F, -1F, 1, 4, 1); + //earLeft.setRotationPoint(1.5F, 1F, -13F); + earLeft.setRotationPoint(1.5F, -1.0F, 2.5F); + earLeft.setTextureSize(128, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, 0.5235988F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 60, 1); + earRight.addBox(-1F, -3F, -1F, 1, 4, 1); + //earRight.setRotationPoint(-0.5F, 1F, -13F); + earRight.setRotationPoint(-0.5F, -1.0F, 2.5F); + earRight.setTextureSize(128, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, -0.5235988F); + HEAD.addChild(earRight); + + neckTop = new ModelRenderer(this, 29, 1); + neckTop.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + neckTop.setRotationPoint(0.5F, 1.8F - heightToRaise , -14F); + neckTop.setTextureSize(128, 64); + neckTop.mirror = true; + setRotation(neckTop, 0.6457718F, 0F, 0F); + neckBase = new ModelRenderer(this, 43, 1); + neckBase.addBox(-1.5F, 0F, -1.5F, 3, 6, 4); + neckBase.setRotationPoint(0.5F, 6F - heightToRaise, -11.5F); + neckBase.setTextureSize(128, 64); + neckBase.mirror = true; + setRotation(neckBase, 1.117011F, 0F, 0F); + humpMain = new ModelRenderer(this, 1, 41); + humpMain.addBox(-3.5F, -2F, -2F, 8, 4, 9); + humpMain.setRotationPoint(0F, 3F - heightToRaise, -0.5F); + humpMain.setTextureSize(128, 64); + humpMain.mirror = true; + setRotation(humpMain, 0F, 0F, 0F); + humpMain2 = new ModelRenderer(this, 37, 42); + humpMain2.addBox(-3F, -2F, -2F, 7, 4, 7); + humpMain2.setRotationPoint(0F, 0.75F - heightToRaise, 0.5F); + humpMain2.setTextureSize(128, 64); + humpMain2.mirror = true; + setRotation(humpMain2, 0F, 0F, 0F); + saddleBase = new ModelRenderer(this, 68, 52); + saddleBase.addBox(-3.5F, -2F, -2F, 6, 1, 5); + saddleBase.setRotationPoint(1F, 4F - heightToRaise, -5F); + saddleBase.setTextureSize(128, 64); + saddleBase.mirror = true; + setRotation(saddleBase, 0F, 0F, 0F); + saddleHorn1 = new ModelRenderer(this, 67, 1); + saddleHorn1.addBox(-1F, -3F, -1F, 1, 5, 1); + saddleHorn1.setRotationPoint(1F, 1F - heightToRaise, -6F); + saddleHorn1.setTextureSize(128, 64); + saddleHorn1.mirror = true; + setRotation(saddleHorn1, 0.3346075F, 0F, 0F); + saddleHorn2 = new ModelRenderer(this, 73, 5); + saddleHorn2.addBox(-2F, -1F, -1F, 4, 1, 1); + saddleHorn2.setRotationPoint(0.5F, 0F - heightToRaise, -7F); + saddleHorn2.setTextureSize(128, 64); + saddleHorn2.mirror = true; + setRotation(saddleHorn2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 1, 14); + Body.addBox(-3.5F, -2F, -10F, 9, 9, 16); + Body.setRotationPoint(-0.5F, 5F - heightToRaise, 3F); + Body.setTextureSize(128, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + hip1 = new ModelRenderer(this, 68, 42); + hip1.addBox(-1F, -3F, -1F, 4, 4, 4); + hip1.setRotationPoint(-4F, 12F - heightToRaise, -5.5F); + hip1.setTextureSize(128, 64); + hip1.mirror = true; + setRotation(hip1, 0.0698132F, 0F, 0F); + Leg1toProt = new ModelRenderer(this, 65, 13); + Leg1toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg1toProt.setRotationPoint(-3F, 12F, -4.5F); + Leg1toProt.setRotationPoint(1F, 0F, 0.5F); + Leg1toProt.setTextureSize(128, 64); + Leg1toProt.mirror = true; + setRotation(Leg1toProt, 0.0698132F, 0F, 0F); + hip1.addChild(Leg1toProt); + Leg1BotRot = new ModelRenderer(this, 65, 25); + Leg1BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg1BotRot.setRotationPoint(-3F, 17F, -4F); + Leg1BotRot.setRotationPoint(0F, 6F, 0F); + Leg1BotRot.setTextureSize(128, 64); + Leg1BotRot.mirror = true; + setRotation(Leg1BotRot, -0.0698132F, 0F, 0F); + Leg1toProt.addChild(Leg1BotRot); + hip2 = new ModelRenderer(this, 68, 42); + hip2.addBox(-1F, -1F, -1F, 4, 4, 4); + hip2.setRotationPoint(3F, 10F - heightToRaise, -5.5F); + hip2.setTextureSize(128, 64); + hip2.mirror = true; + setRotation(hip2, 0.0698132F, 0F, 0F); + Leg2toProt = new ModelRenderer(this, 52, 13); + Leg2toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg2toProt.setRotationPoint(4F, 11F, -4.5F); + Leg2toProt.setRotationPoint(1F, 2F, 0.5F); + Leg2toProt.setTextureSize(128, 64); + Leg2toProt.mirror = true; + setRotation(Leg2toProt, 0.0698132F, 0F, 0F); + hip2.addChild(Leg2toProt); + Leg2BotRot = new ModelRenderer(this, 52, 25); + Leg2BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg2BotRot.setRotationPoint(4F, 17F, -4F); + Leg2BotRot.setRotationPoint(0F, 6F, 0F); + Leg2BotRot.setTextureSize(128, 64); + Leg2BotRot.mirror = true; + setRotation(Leg2BotRot, -0.0698132F, 0F, 0F); + Leg2toProt.addChild(Leg2BotRot); + hip3 = new ModelRenderer(this, 87, 42); + hip3.addBox(-1F, -1F, -1F, 4, 5, 4); + hip3.setRotationPoint(-4F, 9F - heightToRaise, 5F); + hip3.setTextureSize(128, 64); + hip3.mirror = true; + setRotation(hip3, 0.0698132F, 0F, 0F); + Leg3toProt = new ModelRenderer(this, 95, 13); + Leg3toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg3toProt.setRotationPoint(-3F, 12F, 6F); + Leg3toProt.setRotationPoint(1F, 2F, 1F); + Leg3toProt.setTextureSize(128, 64); + Leg3toProt.mirror = true; + setRotation(Leg3toProt, 0.0872665F, 0F, 0F); + hip3.addChild(Leg3toProt); + Leg3BotRot = new ModelRenderer(this, 95, 25); + Leg3BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg3BotRot.setRotationPoint(-3F, 17F, 6.5F); + Leg3BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg3BotRot.setTextureSize(128, 64); + Leg3BotRot.mirror = true; + setRotation(Leg3BotRot, -0.0698132F, 0F, 0F); + Leg3toProt.addChild(Leg3BotRot); + + hip4 = new ModelRenderer(this, 87, 42); + hip4.addBox(-1F, -1F, -1F, 4, 5, 4); + hip4.setRotationPoint(3F, 9F - heightToRaise, 5F); + hip4.setTextureSize(128, 64); + hip4.mirror = true; + setRotation(hip4, 0.0698132F, 0F, 0F); + Leg4toProt = new ModelRenderer(this, 81, 13); + Leg4toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg4toProt.setRotationPoint(4F, 12F, 6F); + Leg4toProt.setRotationPoint(1F, 2F, 1F); + Leg4toProt.setTextureSize(128, 64); + Leg4toProt.mirror = true; + setRotation(Leg4toProt, 0.0872665F, 0F, 0F); + hip4.addChild(Leg4toProt); + Leg4BotRot = new ModelRenderer(this, 81, 25); + Leg4BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg4BotRot.setRotationPoint(4F, 17F, 6.5F); + Leg4BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg4BotRot.setTextureSize(128, 64); + Leg4BotRot.mirror = true; + setRotation(Leg4BotRot, -0.0698132F, 0F, 0F); + Leg4toProt.addChild(Leg4BotRot); + tail = new ModelRenderer(this, 109, 13); + tail.addBox(-1F, -1F, 0F, 2, 7, 2); + tail.setRotationPoint(0F, 7F - heightToRaise, 7.6F); + tail.setTextureSize(128, 64); + tail.mirror = true; + setRotation(tail, 0.5585054F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + //Leg1toProt.render(f5); + //Leg1BotRot.render(f5); + hip2.render(renderScale * f5); + //Leg2toProt.render(f5); + //Leg2BotRot.render(f5); + hip3.render(renderScale * f5); + //Leg3toProt.render(f5); + //Leg3BotRot.render(f5); + hip4.render(renderScale * f5); + //Leg4toProt.render(f5); + //Leg4BotRot.render(f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.6F, 1.6F, 1.6F); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + hip2.render(renderScale * f5); + hip3.render(renderScale * f5); + hip4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Tail Rotation */ + //NECKROT.rotateAngleX = (float) (45 * Math.PI / 180 + 7 * Math.PI / 180 + //* MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + /* Tail Rotation */ + tail.rotateAngleZ = (float) (0.5f * MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + /* Leg Animation */ + hip1.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + hip2.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + Leg1BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg2BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + hip3.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + hip4.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + Leg3BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg4BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + //HEAD.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + //HEAD.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = f3 / (180F / (float)Math.PI); + HEAD.rotateAngleX = f3 / (180F / (float)Math.PI); + } + + } diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/908afa90eeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/908afa90eeac0014196dc3517d78505a new file mode 100644 index 0000000..bb05d4d --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/6a/908afa90eeac0014196dc3517d78505a @@ -0,0 +1,288 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + //HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + //HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + HEADROT.rotateAngleX = f4 / (180F / (float)Math.PI); //Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEADROT.rotateAngleY = f3 / (180F / (float)Math.PI); + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/7037417febac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/7037417febac0014196dc3517d78505a new file mode 100644 index 0000000..efc63be --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/77/7037417febac0014196dc3517d78505a @@ -0,0 +1,334 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelCamel extends ModelBase +{ + float heightToRaise = 33f; + float renderScale = 1.0f; + //fields + //fields + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer HEADbump; + ModelRenderer HEAD; + ModelRenderer neckTop; + ModelRenderer neckBase; + ModelRenderer humpMain; + ModelRenderer humpMain2; + ModelRenderer saddleBase; + ModelRenderer saddleHorn1; + ModelRenderer saddleHorn2; + ModelRenderer Body; + ModelRenderer hip1; + ModelRenderer Leg1toProt; + ModelRenderer Leg1BotRot; + ModelRenderer hip2; + ModelRenderer Leg2toProt; + ModelRenderer Leg2BotRot; + ModelRenderer hip3; + ModelRenderer Leg3toProt; + ModelRenderer Leg3BotRot; + ModelRenderer hip4; + ModelRenderer Leg4toProt; + ModelRenderer Leg4BotRot; + ModelRenderer tail; + + public ModelCamel() + { + textureWidth = 128; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -3F, -4F, 5, 4, 7); + HEAD.setRotationPoint(0F, 3F - heightToRaise, -15F); + HEAD.setTextureSize(128, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.2268928F, 0F, 0F); + HEADbump = new ModelRenderer(this, 105, 42); + HEADbump.addBox(-2F, -2F, -3F, 3, 2, 6); + //HEADbump.setRotationPoint(1F, 1.5F, -15.5F); + HEADbump.setRotationPoint(1F, -1.5F, -0.5F); + HEADbump.setTextureSize(128, 64); + HEADbump.mirror = true; + setRotation(HEADbump, 0.296706F, 0F, 0F); + HEAD.addChild(HEADbump); + earLeft = new ModelRenderer(this, 60, 6); + earLeft.addBox(0F, -3F, -1F, 1, 4, 1); + //earLeft.setRotationPoint(1.5F, 1F, -13F); + earLeft.setRotationPoint(1.5F, -1.0F, 2.5F); + earLeft.setTextureSize(128, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, 0.5235988F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 60, 1); + earRight.addBox(-1F, -3F, -1F, 1, 4, 1); + //earRight.setRotationPoint(-0.5F, 1F, -13F); + earRight.setRotationPoint(-0.5F, -1.0F, 2.5F); + earRight.setTextureSize(128, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, -0.5235988F); + HEAD.addChild(earRight); + + neckTop = new ModelRenderer(this, 29, 1); + neckTop.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + neckTop.setRotationPoint(0.5F, 1.8F - heightToRaise , -14F); + neckTop.setTextureSize(128, 64); + neckTop.mirror = true; + setRotation(neckTop, 0.6457718F, 0F, 0F); + neckBase = new ModelRenderer(this, 43, 1); + neckBase.addBox(-1.5F, 0F, -1.5F, 3, 6, 4); + neckBase.setRotationPoint(0.5F, 6F - heightToRaise, -11.5F); + neckBase.setTextureSize(128, 64); + neckBase.mirror = true; + setRotation(neckBase, 1.117011F, 0F, 0F); + humpMain = new ModelRenderer(this, 1, 41); + humpMain.addBox(-3.5F, -2F, -2F, 8, 4, 9); + humpMain.setRotationPoint(0F, 3F - heightToRaise, -0.5F); + humpMain.setTextureSize(128, 64); + humpMain.mirror = true; + setRotation(humpMain, 0F, 0F, 0F); + humpMain2 = new ModelRenderer(this, 37, 42); + humpMain2.addBox(-3F, -2F, -2F, 7, 4, 7); + humpMain2.setRotationPoint(0F, 0.75F - heightToRaise, 0.5F); + humpMain2.setTextureSize(128, 64); + humpMain2.mirror = true; + setRotation(humpMain2, 0F, 0F, 0F); + saddleBase = new ModelRenderer(this, 68, 52); + saddleBase.addBox(-3.5F, -2F, -2F, 6, 1, 5); + saddleBase.setRotationPoint(1F, 4F - heightToRaise, -5F); + saddleBase.setTextureSize(128, 64); + saddleBase.mirror = true; + setRotation(saddleBase, 0F, 0F, 0F); + saddleHorn1 = new ModelRenderer(this, 67, 1); + saddleHorn1.addBox(-1F, -3F, -1F, 1, 5, 1); + saddleHorn1.setRotationPoint(1F, 1F - heightToRaise, -6F); + saddleHorn1.setTextureSize(128, 64); + saddleHorn1.mirror = true; + setRotation(saddleHorn1, 0.3346075F, 0F, 0F); + saddleHorn2 = new ModelRenderer(this, 73, 5); + saddleHorn2.addBox(-2F, -1F, -1F, 4, 1, 1); + saddleHorn2.setRotationPoint(0.5F, 0F - heightToRaise, -7F); + saddleHorn2.setTextureSize(128, 64); + saddleHorn2.mirror = true; + setRotation(saddleHorn2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 1, 14); + Body.addBox(-3.5F, -2F, -10F, 9, 9, 16); + Body.setRotationPoint(-0.5F, 5F - heightToRaise, 3F); + Body.setTextureSize(128, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + hip1 = new ModelRenderer(this, 68, 42); + hip1.addBox(-1F, -3F, -1F, 4, 4, 4); + hip1.setRotationPoint(-4F, 12F - heightToRaise, -5.5F); + hip1.setTextureSize(128, 64); + hip1.mirror = true; + setRotation(hip1, 0.0698132F, 0F, 0F); + Leg1toProt = new ModelRenderer(this, 65, 13); + Leg1toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg1toProt.setRotationPoint(-3F, 12F, -4.5F); + Leg1toProt.setRotationPoint(1F, 0F, 0.5F); + Leg1toProt.setTextureSize(128, 64); + Leg1toProt.mirror = true; + setRotation(Leg1toProt, 0.0698132F, 0F, 0F); + hip1.addChild(Leg1toProt); + Leg1BotRot = new ModelRenderer(this, 65, 25); + Leg1BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg1BotRot.setRotationPoint(-3F, 17F, -4F); + Leg1BotRot.setRotationPoint(0F, 6F, 0F); + Leg1BotRot.setTextureSize(128, 64); + Leg1BotRot.mirror = true; + setRotation(Leg1BotRot, -0.0698132F, 0F, 0F); + Leg1toProt.addChild(Leg1BotRot); + hip2 = new ModelRenderer(this, 68, 42); + hip2.addBox(-1F, -1F, -1F, 4, 4, 4); + hip2.setRotationPoint(3F, 10F - heightToRaise, -5.5F); + hip2.setTextureSize(128, 64); + hip2.mirror = true; + setRotation(hip2, 0.0698132F, 0F, 0F); + Leg2toProt = new ModelRenderer(this, 52, 13); + Leg2toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg2toProt.setRotationPoint(4F, 11F, -4.5F); + Leg2toProt.setRotationPoint(1F, 2F, 0.5F); + Leg2toProt.setTextureSize(128, 64); + Leg2toProt.mirror = true; + setRotation(Leg2toProt, 0.0698132F, 0F, 0F); + hip2.addChild(Leg2toProt); + Leg2BotRot = new ModelRenderer(this, 52, 25); + Leg2BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg2BotRot.setRotationPoint(4F, 17F, -4F); + Leg2BotRot.setRotationPoint(0F, 6F, 0F); + Leg2BotRot.setTextureSize(128, 64); + Leg2BotRot.mirror = true; + setRotation(Leg2BotRot, -0.0698132F, 0F, 0F); + Leg2toProt.addChild(Leg2BotRot); + hip3 = new ModelRenderer(this, 87, 42); + hip3.addBox(-1F, -1F, -1F, 4, 5, 4); + hip3.setRotationPoint(-4F, 9F - heightToRaise, 5F); + hip3.setTextureSize(128, 64); + hip3.mirror = true; + setRotation(hip3, 0.0698132F, 0F, 0F); + Leg3toProt = new ModelRenderer(this, 95, 13); + Leg3toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg3toProt.setRotationPoint(-3F, 12F, 6F); + Leg3toProt.setRotationPoint(1F, 2F, 1F); + Leg3toProt.setTextureSize(128, 64); + Leg3toProt.mirror = true; + setRotation(Leg3toProt, 0.0872665F, 0F, 0F); + hip3.addChild(Leg3toProt); + Leg3BotRot = new ModelRenderer(this, 95, 25); + Leg3BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg3BotRot.setRotationPoint(-3F, 17F, 6.5F); + Leg3BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg3BotRot.setTextureSize(128, 64); + Leg3BotRot.mirror = true; + setRotation(Leg3BotRot, -0.0698132F, 0F, 0F); + Leg3toProt.addChild(Leg3BotRot); + + hip4 = new ModelRenderer(this, 87, 42); + hip4.addBox(-1F, -1F, -1F, 4, 5, 4); + hip4.setRotationPoint(3F, 9F - heightToRaise, 5F); + hip4.setTextureSize(128, 64); + hip4.mirror = true; + setRotation(hip4, 0.0698132F, 0F, 0F); + Leg4toProt = new ModelRenderer(this, 81, 13); + Leg4toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg4toProt.setRotationPoint(4F, 12F, 6F); + Leg4toProt.setRotationPoint(1F, 2F, 1F); + Leg4toProt.setTextureSize(128, 64); + Leg4toProt.mirror = true; + setRotation(Leg4toProt, 0.0872665F, 0F, 0F); + hip4.addChild(Leg4toProt); + Leg4BotRot = new ModelRenderer(this, 81, 25); + Leg4BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg4BotRot.setRotationPoint(4F, 17F, 6.5F); + Leg4BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg4BotRot.setTextureSize(128, 64); + Leg4BotRot.mirror = true; + setRotation(Leg4BotRot, -0.0698132F, 0F, 0F); + Leg4toProt.addChild(Leg4BotRot); + tail = new ModelRenderer(this, 109, 13); + tail.addBox(-1F, -1F, 0F, 2, 7, 2); + tail.setRotationPoint(0F, 7F - heightToRaise, 7.6F); + tail.setTextureSize(128, 64); + tail.mirror = true; + setRotation(tail, 0.5585054F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + //Leg1toProt.render(f5); + //Leg1BotRot.render(f5); + hip2.render(renderScale * f5); + //Leg2toProt.render(f5); + //Leg2BotRot.render(f5); + hip3.render(renderScale * f5); + //Leg3toProt.render(f5); + //Leg3BotRot.render(f5); + hip4.render(renderScale * f5); + //Leg4toProt.render(f5); + //Leg4BotRot.render(f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.6F, 1.6F, 1.6F); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + hip2.render(renderScale * f5); + hip3.render(renderScale * f5); + hip4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Tail Rotation */ + //NECKROT.rotateAngleX = (float) (45 * Math.PI / 180 + 7 * Math.PI / 180 + //* MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + /* Tail Rotation */ + tail.rotateAngleZ = (float) (0.5f * MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + /* Leg Animation */ + hip1.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + hip2.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + Leg1BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg2BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + hip3.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + hip4.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + Leg3BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg4BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEAD.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + } + + } diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/307f67f99dac0014171585e4f63f5ff8 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/307f67f99dac0014171585e4f63f5ff8 new file mode 100644 index 0000000..d3597c5 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/88/307f67f99dac0014171585e4f63f5ff8 @@ -0,0 +1,122 @@ +package com.stek101.projectzulu.common; + +import java.io.File; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.config.Configuration; + +import com.stek101.projectzulu.common.core.CustomEntityManager; +import com.stek101.projectzulu.common.core.DefaultProps; +import com.stek101.projectzulu.common.mobs.ChangeVanillaDrops; +import com.stek101.projectzulu.common.mobs.entitydefaults.AlligatorDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.ArmadilloDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BearBlackDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BearBrownDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BearPolarDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BeaverDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BeetleASDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BeetleBSDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BloomDoomDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BlueFinchDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.BoarDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.CamelDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.CentipedeDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.CrowDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.DeerDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.DuckDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.DuckEggDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.EagleDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.ElephantDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.FishADeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.FishBDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.FollowerDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.FoxDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.FrogDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.GiantRatDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.GiraffeDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.GoatDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.GorillaDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.GreenFinchDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.HauntedArmorDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.HornbillDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.HorseBlackDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.LizardDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.LizardSpitDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.MammothDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.MimicDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.MinotaurDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.MonkeyDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.MummyDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.OstrichDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.OstrichEggDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.PZBatDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.PelicanDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.PenguinDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.PharaohDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.RabbitDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.RedFinchDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.RhinoDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.RipperFinDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.SandwormDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.SkeletonnDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.ThrowingRockDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.TreeEntDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.VultureDeclaration; +import com.stek101.projectzulu.common.mobs.entitydefaults.YellowFinchDeclaration; + +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; + +public class ProjectZulu_Mobs extends BaseModule { + private Configuration config; + private boolean bugRelease = false; + private boolean stickSpawn = true; + private int bugReleaseRate = 5; + private int stickSpawnRate = 5; + + + @Override + public String getIdentifier() { + return DefaultProps.MobsModId; + } + + @Override + public void registration(CustomEntityManager manager) { + manager.addEntity(new ArmadilloDeclaration(), new SandwormDeclaration(), new LizardDeclaration(), + new LizardSpitDeclaration(), new PharaohDeclaration(), new MummyDeclaration(), + new VultureDeclaration(), new TreeEntDeclaration(), new MammothDeclaration(), new FoxDeclaration(), + new BoarDeclaration(), new MimicDeclaration(), new AlligatorDeclaration(), new FrogDeclaration(), + new PenguinDeclaration(), new BeaverDeclaration(), new BearBlackDeclaration(), + new BearBrownDeclaration(), new BearPolarDeclaration(), new OstrichDeclaration(), + new RhinoDeclaration(), new RabbitDeclaration(), new RedFinchDeclaration(), + new GreenFinchDeclaration(), new BlueFinchDeclaration(), new GorillaDeclaration(), + new GiraffeDeclaration(), new ElephantDeclaration(), new HorseBlackDeclaration(), + //new HorseBrownDeclaration(), new HorseDarkBlackDeclaration(), new HorseBeigeDeclaration(), + //new HorseDarkBrownDeclaration(), new HorseGreyDeclaration(), new HorseWhiteDeclaration(), + new EagleDeclaration(), new HornbillDeclaration(), new PelicanDeclaration(), new MinotaurDeclaration(), + new HauntedArmorDeclaration(), new CentipedeDeclaration(), new FollowerDeclaration(), + new YellowFinchDeclaration(), new GoatDeclaration(), new DuckDeclaration(), + new DuckEggDeclaration(), new DeerDeclaration(), new SkeletonnDeclaration(), new FishADeclaration(), + new RipperFinDeclaration(), new OstrichEggDeclaration(), new GiantRatDeclaration(), new FishBDeclaration(), + new CrowDeclaration(), new CamelDeclaration(), new MonkeyDeclaration(), new ThrowingRockDeclaration(), // new AntRavegerDeclaration(), + new BeetleASDeclaration(), new BeetleBSDeclaration(), new BloomDoomDeclaration(), new PZBatDeclaration()); + } + + @Override + public void preInit(FMLPreInitializationEvent event, File configDirectory) { + config = new Configuration(new File( "." + "/config/", DefaultProps.configDirectory + + DefaultProps.defaultConfigFile)); + config.load(); + //displayBossHealth = config.get("mob controls", "Display PZBoss HealthBar", this.displayBossHealth).getBoolean(displayBossHealth); + bugRelease = config.get("mob controls", "Spawn Ambient Bugs on Block Break", this.bugRelease).getBoolean(bugRelease); + bugReleaseRate = config.get("mob controls", "Spawn Rate of Ambient Bugs on Block Break", this.bugReleaseRate).getInt(bugReleaseRate); + stickSpawn = config.get("mob controls", "Spawn Wood Sticks on Block Break", this.stickSpawn).getBoolean(stickSpawn); + stickSpawnRate = config.get("mob controls", "Spawn Rate of Wood Sticks on Block Break", this.stickSpawnRate).getInt(stickSpawnRate); + config.save(); + } + + @Override + public void init(FMLInitializationEvent event, File configDirectory) { + MinecraftForge.EVENT_BUS.register(new ChangeVanillaDrops()); + } +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0b1445beeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0b1445beeac0014196dc3517d78505a new file mode 100644 index 0000000..5cbcdbc --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0b1445beeac0014196dc3517d78505a @@ -0,0 +1,288 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + //HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + //HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + HEADROT.rotateAngleX = f3 / (180F / (float)Math.PI); //Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEADROT.rotateAngleY = f3 / (180F / (float)Math.PI); + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/91/005c710aefac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/91/005c710aefac0014196dc3517d78505a new file mode 100644 index 0000000..557a88f --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/91/005c710aefac0014196dc3517d78505a @@ -0,0 +1,287 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +45) * (float) (Math.PI / 180f); + HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +45) * (float) (Math.PI / 180f); + + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/60ef76089eac0014171585e4f63f5ff8 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/60ef76089eac0014171585e4f63f5ff8 new file mode 100644 index 0000000..6a7b538 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/a6/60ef76089eac0014171585e4f63f5ff8 @@ -0,0 +1,52 @@ +package com.stek101.projectzulu.common.core; + + +public class DefaultProps { + + /* ModIDs, Dependencies, and Version */ + public static final String DesiredBefore = "after:ExtrabiomesXL@"; + public static final String VERSION_STRING = "1.7.10-1.4b3"; + public static final int Version_Code = 1710135; + public static final String CoreModId = "ProjectZulu|Core"; + public static final String BlocksModId = "ProjectZulu|Block"; + public static final String MobsModId = "ProjectZulu|Mob"; + public static final String WorldModId = "ProjectZulu|World"; + public static final String DungeonModId = "ProjectZulu|Dungeon"; + public static final String DEPENDENCY_CORE = "required-after:" + CoreModId + "@"; + + /* Packet Channels */ + public static final String defaultChannel = "Channel_Zulu"; + + /* Module Directory Keys */ + public static final String coreKey = "projectzulucore"; + public static final String mobKey = "projectzulumob"; + public static final String blockKey = "projectzulublock"; + public static final String worldKey = "projectzuluworld"; + public static final String dungeonKey = "projectzuludungeon"; + + /* Module Resource Directories */ + public static final String coreDiretory = "/mods/" + coreKey + "/"; + public static final String mobDiretory = "/mods/" + mobKey + "/"; + public static final String blockDiretory = "/mods/" + blockKey + "/"; + public static final String worldDiretory = "/mods/" + worldKey + "/"; + public static final String dungeonDiretory = "/mods/" + dungeonKey + "/"; + public static final String entitySoundDir = "mob/"; + public static final String entitySounds = entitySoundDir.replace("/", "."); + + /* Common Resource Sub-Directories */ + public static final String itemSubDir = "textures/blocks/"; + public static final String blockSubDir = "textures/blocks/"; +// public static final String blockSpriteSheet = blockDiretory + "/textures/blocks_projectzulu.png"; // TODO: Delete +// public static final String itemSpriteSheet = blockDiretory + "/textures/items_projectzulu.png"; // TODO: Delete + + /* Config Directories */ + public static final String configDirectory = "/Project Zulu/"; + public static final String customResourcesDirectory = "CustomResources/"; + public static final String streamingResourcesDirectory = "streaming/"; + public static final String soundResourcesDirectory = "sound/"; + public static final String defaultConfigFile = "ProjectZuluConfig.cfg"; + public static final String moduleConfigFile = "ProjectZuluModules.cfg"; + public static final String tempConfigFile = "tempSettingsConfig.cfg"; + public static final String mobBiomeSpawnConfigFile = "ProjectZuluMobBiomeConfig.cfg"; + public static final String structureBiomeConfigFile = "ProjectZuluTerrainFeature.cfg"; +} \ No newline at end of file diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/00f03852ecac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/00f03852ecac0014196dc3517d78505a new file mode 100644 index 0000000..5209b0b --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/bb/00f03852ecac0014196dc3517d78505a @@ -0,0 +1,253 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelMonkeyTailed extends ModelBase { + + float heightToRaise = 1f; + float renderScale = 0.80f; + + //fields + ModelRenderer HEAD; + ModelRenderer neck; + ModelRenderer snoutHEAD; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer BODYbase; + ModelRenderer BODYtop; + ModelRenderer leftTopArm; + ModelRenderer leftBotArm; + ModelRenderer rightTopArm; + ModelRenderer rightBotArm; + ModelRenderer leftTopLeg; + ModelRenderer leftBotLeg; + ModelRenderer rightTopLeg; + ModelRenderer rightBotLeg; + ModelRenderer tailBase; + ModelRenderer tailExt1; + ModelRenderer tailExt2; + + public ModelMonkeyTailed() + { + textureWidth = 64; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -4F, -3F, 5, 5, 5); + HEAD.setRotationPoint(0.5F, 11F - heightToRaise, -5F); + HEAD.setTextureSize(64, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.1745329F, 0F, 0F); + neck = new ModelRenderer(this, 19, 44); + neck.addBox(-2F, -2F, -1F, 3, 4, 3); + neck.setRotationPoint(1.5F, 11F - heightToRaise, -4F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, 0.0174533F, 0F, 0F); + snoutHEAD = new ModelRenderer(this, 21, 1); + snoutHEAD.addBox(-1F, -1F, -3F, 3, 3, 5); + //snoutHEAD.setRotationPoint(0.5F, 10.2F, -7F); + snoutHEAD.setRotationPoint(0F, -0.9F, -1.0F); + snoutHEAD.setTextureSize(64, 64); + snoutHEAD.mirror = true; + setRotation(snoutHEAD, 0.1745329F, 0F, 0F); + HEAD.addChild(snoutHEAD); + earLeft = new ModelRenderer(this, 1, 44); + earLeft.addBox(0F, -1F, 0F, 3, 3, 1); + //earLeft.setRotationPoint(2F, 8.4F, -5F); + earLeft.setRotationPoint(2.0F, -2.6F, 0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0.1396263F, 0F, 0F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 1, 50); + earRight.addBox(-2F, -1F, 0F, 3, 3, 1); + //earRight.setRotationPoint(-1F, 8.4F, -5F); + earRight.setRotationPoint(-2.0F, -2.6F, 0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0.1396263F, 0F, 0F); + HEAD.addChild(earRight); + BODYbase = new ModelRenderer(this, 1, 12); + BODYbase.addBox(-2F, -2F, -2F, 6, 5, 12); + BODYbase.setRotationPoint(0F, 11F - heightToRaise, -1F); + BODYbase.setTextureSize(64, 64); + BODYbase.mirror = true; + setRotation(BODYbase, -0.2974289F, 0F, 0F); + BODYtop = new ModelRenderer(this, 1, 30); + BODYtop.addBox(-2F, -1F, -2F, 5, 4, 8); + BODYtop.setRotationPoint(0.5F, 9.5F - heightToRaise, 0F); + BODYtop.setTextureSize(64, 64); + BODYtop.mirror = true; + setRotation(BODYtop, -0.2974289F, 0F, 0F); + leftTopArm = new ModelRenderer(this, 37, 1); + leftTopArm.addBox(0F, -1F, -1F, 3, 7, 3); + leftTopArm.setRotationPoint(3F, 11F - heightToRaise, -2F); + leftTopArm.setTextureSize(64, 64); + leftTopArm.mirror = true; + setRotation(leftTopArm, -0.1858931F, 0F, 0F); + leftBotArm = new ModelRenderer(this, 37, 12); + leftBotArm.addBox(-1F, 0F, -1F, 3, 8, 3); + //leftBotArm.setRotationPoint(4F, 16F, -3F); + leftBotArm.setRotationPoint(1.0F, 5.0F, 0.0F); + leftBotArm.setTextureSize(64, 64); + leftBotArm.mirror = true; + setRotation(leftBotArm, -0.5576792F, 0F, 0F); + leftTopArm.addChild(leftBotArm); + rightTopArm = new ModelRenderer(this, 51, 1); + rightTopArm.addBox(-2F, -1F, -1F, 3, 7, 3); + rightTopArm.setRotationPoint(-2F, 11F - heightToRaise, -2F); + rightTopArm.setTextureSize(64, 64); + rightTopArm.mirror = true; + setRotation(rightTopArm, -0.1858931F, 0F, 0F); + rightBotArm = new ModelRenderer(this, 51, 12); + rightBotArm.addBox(-1F, 0F, -1F, 3, 8, 3); + //rightBotArm.setRotationPoint(-3F, 16F, -3F); + rightBotArm.setRotationPoint(-1.0F, 5.0F, 0.0F); + rightBotArm.setTextureSize(64, 64); + rightBotArm.mirror = true; + setRotation(rightBotArm, -0.5576792F, 0F, 0F); + rightTopArm.addChild(rightBotArm); + leftTopLeg = new ModelRenderer(this, 37, 25); + leftTopLeg.addBox(0F, -1F, -1F, 3, 7, 3); + leftTopLeg.setRotationPoint(2F, 13F - heightToRaise, 6F); + leftTopLeg.setTextureSize(64, 64); + leftTopLeg.mirror = true; + setRotation(leftTopLeg, -0.6108652F, 0F, 0F); + leftBotLeg = new ModelRenderer(this, 37, 36); + leftBotLeg.addBox(-1F, 0F, -1F, 3, 7, 3); + //leftBotLeg.setRotationPoint(3F, 17F, 3F); + leftBotLeg.setRotationPoint(1F, 4F, 0F); + leftBotLeg.setTextureSize(64, 64); + leftBotLeg.mirror = true; + setRotation(leftBotLeg, 0.3717861F, 0F, 0F); + leftTopLeg.addChild(leftBotLeg); + rightTopLeg = new ModelRenderer(this, 51, 25); + rightTopLeg.addBox(-2F, -1F, -1F, 3, 7, 3); + rightTopLeg.setRotationPoint(-1F, 13F - heightToRaise, 6F); + rightTopLeg.setTextureSize(64, 64); + rightTopLeg.mirror = true; + setRotation(rightTopLeg, -0.6108652F, 0F, 0F); + rightBotLeg = new ModelRenderer(this, 51, 36); + rightBotLeg.addBox(-1F, 0F, -1F, 3, 7, 3); + //rightBotLeg.setRotationPoint(-2F, 17F, 3F); + rightBotLeg.setRotationPoint(-1F, 4F, 0F); + rightBotLeg.setTextureSize(64, 64); + rightBotLeg.mirror = true; + setRotation(rightBotLeg, 0.3717861F, 0F, 0F); + rightTopLeg.addChild(rightBotLeg); + tailBase = new ModelRenderer(this, 1, 56); + tailBase.addBox(0F, 0F, 0F, 1, 1, 6); + tailBase.setRotationPoint(0.5F, 13F - heightToRaise, 7F); + tailBase.setTextureSize(64, 64); + tailBase.mirror = true; + setRotation(tailBase, 0F, 0F, 0F); + tailExt1 = new ModelRenderer(this, 16, 56); + tailExt1.addBox(0F, 0F, 0F, 1, 1, 6); + tailExt1.setRotationPoint(0.5F, 13F - heightToRaise, 13F); + tailExt1.setTextureSize(64, 64); + tailExt1.mirror = true; + setRotation(tailExt1, -0.5576792F, 0F, 0F); + tailExt2 = new ModelRenderer(this, 29, 55); + tailExt2.addBox(0F, 0F, 0F, 1, 1, 7); + tailExt2.setRotationPoint(0.5F, 15.9F - heightToRaise, 18F); + tailExt2.setTextureSize(64, 64); + tailExt2.mirror = true; + setRotation(tailExt2, -0.9856463F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neck.render(renderScale * f5); + BODYbase.render(renderScale * f5); + BODYtop.render(renderScale * f5); + leftTopArm.render(renderScale * f5); + rightTopArm.render(renderScale * f5); + leftTopLeg.render(renderScale * f5); + rightTopLeg.render(renderScale * f5); + tailBase.render(renderScale * f5); + tailExt1.render(renderScale * f5); + tailExt2.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //GL11.glPushMatrix(); + // GL11.glScalef(0.85F, 0.85F, 0.85F); + // GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(f5); + neck.render(f5); + //snoutHEAD.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + BODYbase.render(f5); + BODYtop.render(f5); + leftTopArm.render(f5); + //leftBotArm.render(f5); + rightTopArm.render(f5); + //rightBotArm.render(f5); + leftTopLeg.render(f5); + //leftBotLeg.render(f5); + rightTopLeg.render(f5); + //rightBotLeg.render(f5); + tailBase.render(f5); + tailExt1.render(f5); + tailExt2.render(f5); + // GL11.glPopMatrix(); + } + + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + + leftTopArm.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + rightTopArm.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + + leftTopLeg.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + rightTopLeg.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + leftBotLeg.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + rightBotLeg.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEAD.rotateAngleY = f3 / (180F / (float)Math.PI); + HEAD.rotateAngleX = f3 / (180F / (float)Math.PI); + //HEAD.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + //HEAD.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + } +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/90ad44a8ecac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/90ad44a8ecac0014196dc3517d78505a new file mode 100644 index 0000000..52bc2a1 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/be/90ad44a8ecac0014196dc3517d78505a @@ -0,0 +1,334 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelCamel extends ModelBase +{ + float heightToRaise = 33f; + float renderScale = 1.0f; + //fields + //fields + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer HEADbump; + ModelRenderer HEAD; + ModelRenderer neckTop; + ModelRenderer neckBase; + ModelRenderer humpMain; + ModelRenderer humpMain2; + ModelRenderer saddleBase; + ModelRenderer saddleHorn1; + ModelRenderer saddleHorn2; + ModelRenderer Body; + ModelRenderer hip1; + ModelRenderer Leg1toProt; + ModelRenderer Leg1BotRot; + ModelRenderer hip2; + ModelRenderer Leg2toProt; + ModelRenderer Leg2BotRot; + ModelRenderer hip3; + ModelRenderer Leg3toProt; + ModelRenderer Leg3BotRot; + ModelRenderer hip4; + ModelRenderer Leg4toProt; + ModelRenderer Leg4BotRot; + ModelRenderer tail; + + public ModelCamel() + { + textureWidth = 128; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -3F, -4F, 5, 4, 7); + HEAD.setRotationPoint(0F, 3F - heightToRaise, -15F); + HEAD.setTextureSize(128, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.2268928F, 0F, 0F); + HEADbump = new ModelRenderer(this, 105, 42); + HEADbump.addBox(-2F, -2F, -3F, 3, 2, 6); + //HEADbump.setRotationPoint(1F, 1.5F, -15.5F); + HEADbump.setRotationPoint(1F, -1.5F, -0.5F); + HEADbump.setTextureSize(128, 64); + HEADbump.mirror = true; + setRotation(HEADbump, 0.296706F, 0F, 0F); + HEAD.addChild(HEADbump); + earLeft = new ModelRenderer(this, 60, 6); + earLeft.addBox(0F, -3F, -1F, 1, 4, 1); + //earLeft.setRotationPoint(1.5F, 1F, -13F); + earLeft.setRotationPoint(1.5F, -1.0F, 2.5F); + earLeft.setTextureSize(128, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, 0.5235988F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 60, 1); + earRight.addBox(-1F, -3F, -1F, 1, 4, 1); + //earRight.setRotationPoint(-0.5F, 1F, -13F); + earRight.setRotationPoint(-0.5F, -1.0F, 2.5F); + earRight.setTextureSize(128, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, -0.5235988F); + HEAD.addChild(earRight); + + neckTop = new ModelRenderer(this, 29, 1); + neckTop.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + neckTop.setRotationPoint(0.5F, 1.8F - heightToRaise , -14F); + neckTop.setTextureSize(128, 64); + neckTop.mirror = true; + setRotation(neckTop, 0.6457718F, 0F, 0F); + neckBase = new ModelRenderer(this, 43, 1); + neckBase.addBox(-1.5F, 0F, -1.5F, 3, 6, 4); + neckBase.setRotationPoint(0.5F, 6F - heightToRaise, -11.5F); + neckBase.setTextureSize(128, 64); + neckBase.mirror = true; + setRotation(neckBase, 1.117011F, 0F, 0F); + humpMain = new ModelRenderer(this, 1, 41); + humpMain.addBox(-3.5F, -2F, -2F, 8, 4, 9); + humpMain.setRotationPoint(0F, 3F - heightToRaise, -0.5F); + humpMain.setTextureSize(128, 64); + humpMain.mirror = true; + setRotation(humpMain, 0F, 0F, 0F); + humpMain2 = new ModelRenderer(this, 37, 42); + humpMain2.addBox(-3F, -2F, -2F, 7, 4, 7); + humpMain2.setRotationPoint(0F, 0.75F - heightToRaise, 0.5F); + humpMain2.setTextureSize(128, 64); + humpMain2.mirror = true; + setRotation(humpMain2, 0F, 0F, 0F); + saddleBase = new ModelRenderer(this, 68, 52); + saddleBase.addBox(-3.5F, -2F, -2F, 6, 1, 5); + saddleBase.setRotationPoint(1F, 4F - heightToRaise, -5F); + saddleBase.setTextureSize(128, 64); + saddleBase.mirror = true; + setRotation(saddleBase, 0F, 0F, 0F); + saddleHorn1 = new ModelRenderer(this, 67, 1); + saddleHorn1.addBox(-1F, -3F, -1F, 1, 5, 1); + saddleHorn1.setRotationPoint(1F, 1F - heightToRaise, -6F); + saddleHorn1.setTextureSize(128, 64); + saddleHorn1.mirror = true; + setRotation(saddleHorn1, 0.3346075F, 0F, 0F); + saddleHorn2 = new ModelRenderer(this, 73, 5); + saddleHorn2.addBox(-2F, -1F, -1F, 4, 1, 1); + saddleHorn2.setRotationPoint(0.5F, 0F - heightToRaise, -7F); + saddleHorn2.setTextureSize(128, 64); + saddleHorn2.mirror = true; + setRotation(saddleHorn2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 1, 14); + Body.addBox(-3.5F, -2F, -10F, 9, 9, 16); + Body.setRotationPoint(-0.5F, 5F - heightToRaise, 3F); + Body.setTextureSize(128, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + hip1 = new ModelRenderer(this, 68, 42); + hip1.addBox(-1F, -3F, -1F, 4, 4, 4); + hip1.setRotationPoint(-4F, 12F - heightToRaise, -5.5F); + hip1.setTextureSize(128, 64); + hip1.mirror = true; + setRotation(hip1, 0.0698132F, 0F, 0F); + Leg1toProt = new ModelRenderer(this, 65, 13); + Leg1toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg1toProt.setRotationPoint(-3F, 12F, -4.5F); + Leg1toProt.setRotationPoint(1F, 0F, 0.5F); + Leg1toProt.setTextureSize(128, 64); + Leg1toProt.mirror = true; + setRotation(Leg1toProt, 0.0698132F, 0F, 0F); + hip1.addChild(Leg1toProt); + Leg1BotRot = new ModelRenderer(this, 65, 25); + Leg1BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg1BotRot.setRotationPoint(-3F, 17F, -4F); + Leg1BotRot.setRotationPoint(0F, 6F, 0F); + Leg1BotRot.setTextureSize(128, 64); + Leg1BotRot.mirror = true; + setRotation(Leg1BotRot, -0.0698132F, 0F, 0F); + Leg1toProt.addChild(Leg1BotRot); + hip2 = new ModelRenderer(this, 68, 42); + hip2.addBox(-1F, -1F, -1F, 4, 4, 4); + hip2.setRotationPoint(3F, 10F - heightToRaise, -5.5F); + hip2.setTextureSize(128, 64); + hip2.mirror = true; + setRotation(hip2, 0.0698132F, 0F, 0F); + Leg2toProt = new ModelRenderer(this, 52, 13); + Leg2toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg2toProt.setRotationPoint(4F, 11F, -4.5F); + Leg2toProt.setRotationPoint(1F, 2F, 0.5F); + Leg2toProt.setTextureSize(128, 64); + Leg2toProt.mirror = true; + setRotation(Leg2toProt, 0.0698132F, 0F, 0F); + hip2.addChild(Leg2toProt); + Leg2BotRot = new ModelRenderer(this, 52, 25); + Leg2BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg2BotRot.setRotationPoint(4F, 17F, -4F); + Leg2BotRot.setRotationPoint(0F, 6F, 0F); + Leg2BotRot.setTextureSize(128, 64); + Leg2BotRot.mirror = true; + setRotation(Leg2BotRot, -0.0698132F, 0F, 0F); + Leg2toProt.addChild(Leg2BotRot); + hip3 = new ModelRenderer(this, 87, 42); + hip3.addBox(-1F, -1F, -1F, 4, 5, 4); + hip3.setRotationPoint(-4F, 9F - heightToRaise, 5F); + hip3.setTextureSize(128, 64); + hip3.mirror = true; + setRotation(hip3, 0.0698132F, 0F, 0F); + Leg3toProt = new ModelRenderer(this, 95, 13); + Leg3toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg3toProt.setRotationPoint(-3F, 12F, 6F); + Leg3toProt.setRotationPoint(1F, 2F, 1F); + Leg3toProt.setTextureSize(128, 64); + Leg3toProt.mirror = true; + setRotation(Leg3toProt, 0.0872665F, 0F, 0F); + hip3.addChild(Leg3toProt); + Leg3BotRot = new ModelRenderer(this, 95, 25); + Leg3BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg3BotRot.setRotationPoint(-3F, 17F, 6.5F); + Leg3BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg3BotRot.setTextureSize(128, 64); + Leg3BotRot.mirror = true; + setRotation(Leg3BotRot, -0.0698132F, 0F, 0F); + Leg3toProt.addChild(Leg3BotRot); + + hip4 = new ModelRenderer(this, 87, 42); + hip4.addBox(-1F, -1F, -1F, 4, 5, 4); + hip4.setRotationPoint(3F, 9F - heightToRaise, 5F); + hip4.setTextureSize(128, 64); + hip4.mirror = true; + setRotation(hip4, 0.0698132F, 0F, 0F); + Leg4toProt = new ModelRenderer(this, 81, 13); + Leg4toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg4toProt.setRotationPoint(4F, 12F, 6F); + Leg4toProt.setRotationPoint(1F, 2F, 1F); + Leg4toProt.setTextureSize(128, 64); + Leg4toProt.mirror = true; + setRotation(Leg4toProt, 0.0872665F, 0F, 0F); + hip4.addChild(Leg4toProt); + Leg4BotRot = new ModelRenderer(this, 81, 25); + Leg4BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg4BotRot.setRotationPoint(4F, 17F, 6.5F); + Leg4BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg4BotRot.setTextureSize(128, 64); + Leg4BotRot.mirror = true; + setRotation(Leg4BotRot, -0.0698132F, 0F, 0F); + Leg4toProt.addChild(Leg4BotRot); + tail = new ModelRenderer(this, 109, 13); + tail.addBox(-1F, -1F, 0F, 2, 7, 2); + tail.setRotationPoint(0F, 7F - heightToRaise, 7.6F); + tail.setTextureSize(128, 64); + tail.mirror = true; + setRotation(tail, 0.5585054F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + //Leg1toProt.render(f5); + //Leg1BotRot.render(f5); + hip2.render(renderScale * f5); + //Leg2toProt.render(f5); + //Leg2BotRot.render(f5); + hip3.render(renderScale * f5); + //Leg3toProt.render(f5); + //Leg3BotRot.render(f5); + hip4.render(renderScale * f5); + //Leg4toProt.render(f5); + //Leg4BotRot.render(f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.6F, 1.6F, 1.6F); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + hip2.render(renderScale * f5); + hip3.render(renderScale * f5); + hip4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Tail Rotation */ + //NECKROT.rotateAngleX = (float) (45 * Math.PI / 180 + 7 * Math.PI / 180 + //* MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + /* Tail Rotation */ + tail.rotateAngleZ = (float) (0.5f * MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + /* Leg Animation */ + hip1.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + hip2.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + Leg1BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg2BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + hip3.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + hip4.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + Leg3BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg4BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEAD.rotateAngleX = Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = Math.min(Math.max(f3, -15), +35) * (float) (Math.PI / 180f); + } + + } diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/008ce011eeac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/008ce011eeac0014196dc3517d78505a new file mode 100644 index 0000000..a5c3bd8 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/ea/008ce011eeac0014196dc3517d78505a @@ -0,0 +1,288 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +public class ModelDeer extends ModelBase + { + float heightToRaise = 5f; + float renderScale = 1.3f; + + //fields + ModelRenderer top4hornRight; + ModelRenderer top4hornLeft; + ModelRenderer top3hornRight; + ModelRenderer top3hornLeft; + ModelRenderer top1hornRight; + ModelRenderer top1hornLeft; + ModelRenderer HEADROT; + ModelRenderer hornLeft; + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer neck; + ModelRenderer BODYROT; + ModelRenderer leg1; + ModelRenderer leg2; + ModelRenderer leg3; + ModelRenderer leg4; + ModelRenderer tail; + ModelRenderer top2hornLeft; + ModelRenderer hornRight; + ModelRenderer top2hornRight; + + public ModelDeer() + { + textureWidth = 64; + textureHeight = 64; + + HEADROT = new ModelRenderer(this, 1, 19); + HEADROT.addBox(-1.5F, -6F, -7F, 5, 4, 7); + HEADROT.setRotationPoint(-2F, 4F - heightToRaise , -6F); + HEADROT.setTextureSize(64, 64); + HEADROT.mirror = true; + setRotation(HEADROT, 0.5230717F, 0F, 0F); + + earLeft = new ModelRenderer(this, 43, 33); + earLeft.addBox(0F, 1F, 0F, 1, 3, 1); + //earLeft.setRotationPoint(0F, 0.5F, -9F); + earLeft.setRotationPoint(2F, -3.5F, -2.0F); + earLeft.setTextureSize(64, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, -2.199115F); + HEADROT.addChild(earLeft); + + earRight = new ModelRenderer(this, 50, 33); + earRight.addBox(-1F, 1F, 0F, 1, 3, 1); + //earRight.setRotationPoint(-2F, 0.5F, -9F); + earRight.setRotationPoint(-0.5F, -3.5F, -2.0F); + earRight.setTextureSize(64, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, 2.199115F); + HEADROT.addChild(earRight); + + hornLeft = new ModelRenderer(this, 8, 5); + hornLeft.addBox(0F, -3F, 0F, 1, 5, 1); + //hornLeft.setRotationPoint(0F, -3F, -9F); + hornLeft.setRotationPoint(2F, -8F, -2F); + hornLeft.setTextureSize(64, 64); + hornLeft.mirror = true; + setRotation(hornLeft, -0.5410521F, 0.1396263F, 0F); + HEADROT.addChild(hornLeft); + + hornRight = new ModelRenderer(this, 2, 5); + hornRight.addBox(-1F, -3F, 0F, 1, 5, 1); + //hornRight.setRotationPoint(-2F, -3F, -9F); + hornRight.setRotationPoint(0F, -8F, -2F); + hornRight.setTextureSize(64, 64); + hornRight.mirror = true; + setRotation(hornRight, -0.5410521F, -0.1396263F, 0F); + HEADROT.addChild(hornRight); + + top2hornLeft = new ModelRenderer(this, 21, 5); + top2hornLeft.addBox(0F, -3F, 0F, 1, 4, 1); + //top2hornLeft.setRotationPoint(0.3F, -5.5F, -8F); + top2hornLeft.setRotationPoint(0.3F, -3.5F, 0F); + top2hornLeft.setTextureSize(64, 64); + top2hornLeft.mirror = true; + setRotation(top2hornLeft, 0.6372665F, 0.0349066F, 0.0523599F); + hornLeft.addChild(top2hornLeft); + + top2hornRight = new ModelRenderer(this, 15, 5); + top2hornRight.addBox(-1F, -3F, 0F, 1, 4, 1); + //top2hornRight.setRotationPoint(-2.3F, -5.5F, -8F); + top2hornRight.setRotationPoint(0F, -3.5F, 0F); + top2hornRight.setTextureSize(64, 64); + top2hornRight.mirror = true; + setRotation(top2hornRight, 0.6372665F, -0.0349066F, -0.0523599F); + hornRight.addChild(top2hornRight); + + top1hornRight = new ModelRenderer(this, 41, 5); + top1hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top1hornRight.setRotationPoint(-2.4F, -7.5F, -8F); + top1hornRight.setRotationPoint(-0.4F, -2.0F, -0F); + top1hornRight.setTextureSize(64, 64); + top1hornRight.mirror = true; + setRotation(top1hornRight, 1.047198F, 0.1047198F, 0F); + top2hornRight.addChild(top1hornRight); + + top1hornLeft = new ModelRenderer(this, 41, 10); + top1hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top1hornLeft.setRotationPoint(0.5F, -7.5F, -8F); + top1hornLeft.setRotationPoint(0.5F, -2.0F, -0F); + top1hornLeft.setTextureSize(64, 64); + top1hornLeft.mirror = true; + setRotation(top1hornLeft, 1.047198F, -0.1047198F, 0F); + top2hornLeft.addChild(top1hornLeft); + + top3hornRight = new ModelRenderer(this, 34, 5); + top3hornRight.addBox(-1F, -3F, 0F, 1, 3, 1); + //top3hornRight.setRotationPoint(-2.2F, -5F, -8F); + top3hornRight.setRotationPoint(-0.2F, -2.0F, 0F); + top3hornRight.setTextureSize(64, 64); + top3hornRight.mirror = true; + setRotation(top3hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top3hornRight); + + top3hornLeft = new ModelRenderer(this, 34, 10); + top3hornLeft.addBox(0F, -3F, 0F, 1, 3, 1); + //top3hornLeft.setRotationPoint(0.2F, -5F, -8F); + top3hornLeft.setRotationPoint(0.2F, -2.0F, 0F); + top3hornLeft.setTextureSize(64, 64); + top3hornLeft.mirror = true; + setRotation(top3hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top3hornLeft); + + top4hornRight = new ModelRenderer(this, 28, 5); + top4hornRight.addBox(-1F, -3F, 0F, 1, 2, 1); + //top4hornRight.setRotationPoint(-2F, -2F, -8F); + top4hornRight.setRotationPoint(-0F, 1.5F, 1.5F); + top4hornRight.setTextureSize(64, 64); + top4hornRight.mirror = true; + setRotation(top4hornRight, 1.747198F, 0.1047198F, 0F); + hornRight.addChild(top4hornRight); + + top4hornLeft = new ModelRenderer(this, 28, 9); + top4hornLeft.addBox(0F, -3F, 0F, 1, 2, 1); + //top4hornLeft.setRotationPoint(0F, -2F, -8F); + top4hornLeft.setRotationPoint(0F, 1.5F, 1.5F); + top4hornLeft.setTextureSize(64, 64); + top4hornLeft.mirror = true; + setRotation(top4hornLeft, 1.72173F, -0.1047198F, 0F); + hornLeft.addChild(top4hornLeft); + + neck = new ModelRenderer(this, 28, 21); + neck.addBox(0F, -2F, -2F, 4, 3, 8); + neck.setRotationPoint(-3F, 2F - heightToRaise, -8F); + neck.setTextureSize(64, 64); + neck.mirror = true; + setRotation(neck, -0.9294653F, 0F, 0F); + BODYROT = new ModelRenderer(this, 28, 41); + BODYROT.addBox(-4F, -8F, -5F, 8, 15, 6); + BODYROT.setRotationPoint(-1F, 6F - heightToRaise, 1F); + BODYROT.setTextureSize(64, 64); + BODYROT.mirror = true; + setRotation(BODYROT, 1.570796F, 0F, 0F); + leg1 = new ModelRenderer(this, 0, 32); + leg1.addBox(-1F, 0F, -1F, 3, 10, 3); + leg1.setRotationPoint(-4F, 11F - heightToRaise, 6F); + leg1.setTextureSize(64, 64); + leg1.mirror = true; + setRotation(leg1, 0F, 0F, 0F); + leg2 = new ModelRenderer(this, 13, 32); + leg2.addBox(-1F, 0F, -1F, 3, 10, 3); + leg2.setRotationPoint(1F, 11F - heightToRaise, 6F); + leg2.setTextureSize(64, 64); + leg2.mirror = true; + setRotation(leg2, 0F, 0F, 0F); + leg3 = new ModelRenderer(this, 13, 49); + leg3.addBox(-2F, 0F, -1F, 3, 10, 3); + leg3.setRotationPoint(-3F, 11F - heightToRaise, -6F); + leg3.setTextureSize(64, 64); + leg3.mirror = true; + setRotation(leg3, 0F, 0F, 0F); + leg4 = new ModelRenderer(this, 0, 49); + leg4.addBox(-1F, 0F, -1F, 3, 10, 3); + leg4.setRotationPoint(1F, 11F - heightToRaise, -6F); + leg4.setTextureSize(64, 64); + leg4.mirror = true; + setRotation(leg4, 0F, 0F, 0F); + tail = new ModelRenderer(this, 28, 34); + tail.addBox(-1F, 0F, 0F, 2, 1, 3); + tail.setRotationPoint(-1F, 5.5F - heightToRaise, 7F); + tail.setTextureSize(64, 64); + tail.mirror = true; + setRotation(tail, -0.4506874F, 0F, 0F); + + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + //top4hornRight.render(f5); + //top4hornLeft.render(f5); + //top3hornRight.render(f5); + //top3hornLeft.render(f5); + //top2hornLeft.render(f5); + //top2hornRight.render(f5); + //top1hornRight.render(f5); + //top1hornLeft.render(f5); + //hornLeft.render(f5); + //hornRight.render(f5); + //earLeft.render(f5); + //earRight.render(f5); + HEADROT.render(renderScale * f5); + neck.render(renderScale * f5); + BODYROT.render(renderScale * f5); + leg1.render(renderScale * f5); + leg2.render(renderScale * f5); + leg3.render(renderScale * f5); + leg4.render(renderScale * f5); + tail.render(renderScale * f5); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Constant Animation Rotations */ + leg1.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + leg3.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg2.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f + (float) Math.PI) * 1.2F * par3; + leg4.rotateAngleX = MathHelper.cos(par2 * 0.6662F * 2f) * 1.2F * par3; + + /*tail.rotateAngleZ = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math + .log(par3 + 1))); + + earLeft.rotateAngleY = (float) (70 * Math.PI / 180 + MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1))); + earRight.rotateAngleY = (float) (-70 * Math.PI / 180 - MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.2F + * ModelHelper.abs(Math.log(par3 + 1)));*/ + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + //HEADROT.rotateAngleX = Math.min(Math.max(f4, -14), +15) * (float) (Math.PI / 180f); + //HEADROT.rotateAngleY = Math.min(Math.max(f3, -15), +15) * (float) (Math.PI / 180f); + HEAD.rotateAngleX = f3 / (180F / (float)Math.PI); //Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = f3 / (180F / (float)Math.PI); + } + + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/701e27baedac0014196dc3517d78505a b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/701e27baedac0014196dc3517d78505a new file mode 100644 index 0000000..0117b84 --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/f4/701e27baedac0014196dc3517d78505a @@ -0,0 +1,334 @@ +package com.stek101.projectzulu.common.mobs.models; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; + +import org.lwjgl.opengl.GL11; + +import com.stek101.projectzulu.common.core.ModelHelper; + +public class ModelCamel extends ModelBase +{ + float heightToRaise = 33f; + float renderScale = 1.0f; + //fields + //fields + ModelRenderer earLeft; + ModelRenderer earRight; + ModelRenderer HEADbump; + ModelRenderer HEAD; + ModelRenderer neckTop; + ModelRenderer neckBase; + ModelRenderer humpMain; + ModelRenderer humpMain2; + ModelRenderer saddleBase; + ModelRenderer saddleHorn1; + ModelRenderer saddleHorn2; + ModelRenderer Body; + ModelRenderer hip1; + ModelRenderer Leg1toProt; + ModelRenderer Leg1BotRot; + ModelRenderer hip2; + ModelRenderer Leg2toProt; + ModelRenderer Leg2BotRot; + ModelRenderer hip3; + ModelRenderer Leg3toProt; + ModelRenderer Leg3BotRot; + ModelRenderer hip4; + ModelRenderer Leg4toProt; + ModelRenderer Leg4BotRot; + ModelRenderer tail; + + public ModelCamel() + { + textureWidth = 128; + textureHeight = 64; + + HEAD = new ModelRenderer(this, 1, 1); + HEAD.addBox(-2F, -3F, -4F, 5, 4, 7); + HEAD.setRotationPoint(0F, 3F - heightToRaise, -15F); + HEAD.setTextureSize(128, 64); + HEAD.mirror = true; + setRotation(HEAD, 0.2268928F, 0F, 0F); + HEADbump = new ModelRenderer(this, 105, 42); + HEADbump.addBox(-2F, -2F, -3F, 3, 2, 6); + //HEADbump.setRotationPoint(1F, 1.5F, -15.5F); + HEADbump.setRotationPoint(1F, -1.5F, -0.5F); + HEADbump.setTextureSize(128, 64); + HEADbump.mirror = true; + setRotation(HEADbump, 0.296706F, 0F, 0F); + HEAD.addChild(HEADbump); + earLeft = new ModelRenderer(this, 60, 6); + earLeft.addBox(0F, -3F, -1F, 1, 4, 1); + //earLeft.setRotationPoint(1.5F, 1F, -13F); + earLeft.setRotationPoint(1.5F, -1.0F, 2.5F); + earLeft.setTextureSize(128, 64); + earLeft.mirror = true; + setRotation(earLeft, 0F, 0F, 0.5235988F); + HEAD.addChild(earLeft); + earRight = new ModelRenderer(this, 60, 1); + earRight.addBox(-1F, -3F, -1F, 1, 4, 1); + //earRight.setRotationPoint(-0.5F, 1F, -13F); + earRight.setRotationPoint(-0.5F, -1.0F, 2.5F); + earRight.setTextureSize(128, 64); + earRight.mirror = true; + setRotation(earRight, 0F, 0F, -0.5235988F); + HEAD.addChild(earRight); + + neckTop = new ModelRenderer(this, 29, 1); + neckTop.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + neckTop.setRotationPoint(0.5F, 1.8F - heightToRaise , -14F); + neckTop.setTextureSize(128, 64); + neckTop.mirror = true; + setRotation(neckTop, 0.6457718F, 0F, 0F); + neckBase = new ModelRenderer(this, 43, 1); + neckBase.addBox(-1.5F, 0F, -1.5F, 3, 6, 4); + neckBase.setRotationPoint(0.5F, 6F - heightToRaise, -11.5F); + neckBase.setTextureSize(128, 64); + neckBase.mirror = true; + setRotation(neckBase, 1.117011F, 0F, 0F); + humpMain = new ModelRenderer(this, 1, 41); + humpMain.addBox(-3.5F, -2F, -2F, 8, 4, 9); + humpMain.setRotationPoint(0F, 3F - heightToRaise, -0.5F); + humpMain.setTextureSize(128, 64); + humpMain.mirror = true; + setRotation(humpMain, 0F, 0F, 0F); + humpMain2 = new ModelRenderer(this, 37, 42); + humpMain2.addBox(-3F, -2F, -2F, 7, 4, 7); + humpMain2.setRotationPoint(0F, 0.75F - heightToRaise, 0.5F); + humpMain2.setTextureSize(128, 64); + humpMain2.mirror = true; + setRotation(humpMain2, 0F, 0F, 0F); + saddleBase = new ModelRenderer(this, 68, 52); + saddleBase.addBox(-3.5F, -2F, -2F, 6, 1, 5); + saddleBase.setRotationPoint(1F, 4F - heightToRaise, -5F); + saddleBase.setTextureSize(128, 64); + saddleBase.mirror = true; + setRotation(saddleBase, 0F, 0F, 0F); + saddleHorn1 = new ModelRenderer(this, 67, 1); + saddleHorn1.addBox(-1F, -3F, -1F, 1, 5, 1); + saddleHorn1.setRotationPoint(1F, 1F - heightToRaise, -6F); + saddleHorn1.setTextureSize(128, 64); + saddleHorn1.mirror = true; + setRotation(saddleHorn1, 0.3346075F, 0F, 0F); + saddleHorn2 = new ModelRenderer(this, 73, 5); + saddleHorn2.addBox(-2F, -1F, -1F, 4, 1, 1); + saddleHorn2.setRotationPoint(0.5F, 0F - heightToRaise, -7F); + saddleHorn2.setTextureSize(128, 64); + saddleHorn2.mirror = true; + setRotation(saddleHorn2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 1, 14); + Body.addBox(-3.5F, -2F, -10F, 9, 9, 16); + Body.setRotationPoint(-0.5F, 5F - heightToRaise, 3F); + Body.setTextureSize(128, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + hip1 = new ModelRenderer(this, 68, 42); + hip1.addBox(-1F, -3F, -1F, 4, 4, 4); + hip1.setRotationPoint(-4F, 12F - heightToRaise, -5.5F); + hip1.setTextureSize(128, 64); + hip1.mirror = true; + setRotation(hip1, 0.0698132F, 0F, 0F); + Leg1toProt = new ModelRenderer(this, 65, 13); + Leg1toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg1toProt.setRotationPoint(-3F, 12F, -4.5F); + Leg1toProt.setRotationPoint(1F, 0F, 0.5F); + Leg1toProt.setTextureSize(128, 64); + Leg1toProt.mirror = true; + setRotation(Leg1toProt, 0.0698132F, 0F, 0F); + hip1.addChild(Leg1toProt); + Leg1BotRot = new ModelRenderer(this, 65, 25); + Leg1BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg1BotRot.setRotationPoint(-3F, 17F, -4F); + Leg1BotRot.setRotationPoint(0F, 6F, 0F); + Leg1BotRot.setTextureSize(128, 64); + Leg1BotRot.mirror = true; + setRotation(Leg1BotRot, -0.0698132F, 0F, 0F); + Leg1toProt.addChild(Leg1BotRot); + hip2 = new ModelRenderer(this, 68, 42); + hip2.addBox(-1F, -1F, -1F, 4, 4, 4); + hip2.setRotationPoint(3F, 10F - heightToRaise, -5.5F); + hip2.setTextureSize(128, 64); + hip2.mirror = true; + setRotation(hip2, 0.0698132F, 0F, 0F); + Leg2toProt = new ModelRenderer(this, 52, 13); + Leg2toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg2toProt.setRotationPoint(4F, 11F, -4.5F); + Leg2toProt.setRotationPoint(1F, 2F, 0.5F); + Leg2toProt.setTextureSize(128, 64); + Leg2toProt.mirror = true; + setRotation(Leg2toProt, 0.0698132F, 0F, 0F); + hip2.addChild(Leg2toProt); + Leg2BotRot = new ModelRenderer(this, 52, 25); + Leg2BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg2BotRot.setRotationPoint(4F, 17F, -4F); + Leg2BotRot.setRotationPoint(0F, 6F, 0F); + Leg2BotRot.setTextureSize(128, 64); + Leg2BotRot.mirror = true; + setRotation(Leg2BotRot, -0.0698132F, 0F, 0F); + Leg2toProt.addChild(Leg2BotRot); + hip3 = new ModelRenderer(this, 87, 42); + hip3.addBox(-1F, -1F, -1F, 4, 5, 4); + hip3.setRotationPoint(-4F, 9F - heightToRaise, 5F); + hip3.setTextureSize(128, 64); + hip3.mirror = true; + setRotation(hip3, 0.0698132F, 0F, 0F); + Leg3toProt = new ModelRenderer(this, 95, 13); + Leg3toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg3toProt.setRotationPoint(-3F, 12F, 6F); + Leg3toProt.setRotationPoint(1F, 2F, 1F); + Leg3toProt.setTextureSize(128, 64); + Leg3toProt.mirror = true; + setRotation(Leg3toProt, 0.0872665F, 0F, 0F); + hip3.addChild(Leg3toProt); + Leg3BotRot = new ModelRenderer(this, 95, 25); + Leg3BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg3BotRot.setRotationPoint(-3F, 17F, 6.5F); + Leg3BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg3BotRot.setTextureSize(128, 64); + Leg3BotRot.mirror = true; + setRotation(Leg3BotRot, -0.0698132F, 0F, 0F); + Leg3toProt.addChild(Leg3BotRot); + + hip4 = new ModelRenderer(this, 87, 42); + hip4.addBox(-1F, -1F, -1F, 4, 5, 4); + hip4.setRotationPoint(3F, 9F - heightToRaise, 5F); + hip4.setTextureSize(128, 64); + hip4.mirror = true; + setRotation(hip4, 0.0698132F, 0F, 0F); + Leg4toProt = new ModelRenderer(this, 81, 13); + Leg4toProt.addBox(-1.5F, 0F, -1.5F, 3, 6, 3); + //Leg4toProt.setRotationPoint(4F, 12F, 6F); + Leg4toProt.setRotationPoint(1F, 2F, 1F); + Leg4toProt.setTextureSize(128, 64); + Leg4toProt.mirror = true; + setRotation(Leg4toProt, 0.0872665F, 0F, 0F); + hip4.addChild(Leg4toProt); + Leg4BotRot = new ModelRenderer(this, 81, 25); + Leg4BotRot.addBox(-1.5F, 0F, -1.5F, 3, 7, 3); + //Leg4BotRot.setRotationPoint(4F, 17F, 6.5F); + Leg4BotRot.setRotationPoint(0F, 6F, 0.5F); + Leg4BotRot.setTextureSize(128, 64); + Leg4BotRot.mirror = true; + setRotation(Leg4BotRot, -0.0698132F, 0F, 0F); + Leg4toProt.addChild(Leg4BotRot); + tail = new ModelRenderer(this, 109, 13); + tail.addBox(-1F, -1F, 0F, 2, 7, 2); + tail.setRotationPoint(0F, 7F - heightToRaise, 7.6F); + tail.setTextureSize(128, 64); + tail.mirror = true; + setRotation(tail, 0.5585054F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) + { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + + float field_78145_x = 0.0f; + float field_78145_g = 2.2F; + float field_78151_h = 3.4F; + + if (this.isChild) { + float var8 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.0F / var8, 1.0F / var8, 1.0F / var8); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + //GL11.glTranslatef(field_78145_x, field_78145_g * f5, field_78151_h * f5); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + //Leg1toProt.render(f5); + //Leg1BotRot.render(f5); + hip2.render(renderScale * f5); + //Leg2toProt.render(f5); + //Leg2BotRot.render(f5); + hip3.render(renderScale * f5); + //Leg3toProt.render(f5); + //Leg3BotRot.render(f5); + hip4.render(renderScale * f5); + //Leg4toProt.render(f5); + //Leg4BotRot.render(f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.6F, 1.6F, 1.6F); + GL11.glTranslatef(0.0F, 24.0F * f5, 0.0F); + HEAD.render(renderScale * f5); + neckTop.render(renderScale * f5); + neckBase.render(renderScale * f5); + humpMain.render(renderScale * f5); + humpMain2.render(renderScale * f5); + saddleBase.render(renderScale * f5); + saddleHorn1.render(renderScale * f5); + saddleHorn2.render(renderScale * f5); + Body.render(renderScale * f5); + hip1.render(renderScale * f5); + hip2.render(renderScale * f5); + hip3.render(renderScale * f5); + hip4.render(renderScale * f5); + tail.render(renderScale * f5); + GL11.glPopMatrix(); + } + } + + @Override + public void setLivingAnimations(EntityLivingBase par1EntityLiving, float par2, float par3, float par4) { + /* Tail Rotation */ + //NECKROT.rotateAngleX = (float) (45 * Math.PI / 180 + 7 * Math.PI / 180 + //* MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + /* Tail Rotation */ + tail.rotateAngleZ = (float) (0.5f * MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + /* Leg Animation */ + hip1.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + hip2.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + Leg1BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg2BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + hip3.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F) * 1.8F * ModelHelper.abs(Math.log(par3 + 1))); + + hip4.rotateAngleX = (float) (MathHelper.cos(par2 * 0.6662F + (float) Math.PI) * 1.8F * ModelHelper + .abs(Math.log(par3 + 1))); + + Leg3BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + Leg4BotRot.rotateAngleX = (float) Math.abs(MathHelper.cos(par2 * 0.6662F / 2 + (float) Math.PI) * 1.8F + * ModelHelper.abs(Math.log(par3 + 1))); + + super.setLivingAnimations(par1EntityLiving, par2, par3, par4); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) + { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) + { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + HEAD.rotateAngleX = f4 / (180F / (float)Math.PI); //Math.min(Math.max(f4, -14), +35) * (float) (Math.PI / 180f); + HEAD.rotateAngleY = f3 / (180F / (float)Math.PI); + } + + } diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0e37e309eac0014171585e4f63f5ff8 b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0e37e309eac0014171585e4f63f5ff8 new file mode 100644 index 0000000..dafa38a --- /dev/null +++ b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0e37e309eac0014171585e4f63f5ff8 @@ -0,0 +1,299 @@ +package com.stek101.projectzulu.common.core; + +import java.io.File; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed; +import net.minecraftforge.event.world.BlockEvent.BreakEvent; + +import com.stek101.projectzulu.common.api.CustomEntityList; +import com.stek101.projectzulu.common.api.ItemList; +import com.stek101.projectzulu.common.mobs.entity.EntityBeetleAS; +import com.stek101.projectzulu.common.mobs.entity.EntityBeetleBS; +import com.stek101.projectzulu.common.mobs.entity.EntityCentipede; +import com.stek101.projectzulu.common.mobs.entity.EntityTreeEnt; + +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; + +public class EventHookContainerClass { + // zLevel is protected float copied from GUI along with drawTexturedModelRect + protected float zLevel = 0.0F; + boolean nearBossTriggered = false; + private Configuration config; + private boolean bugRelease = false; + private boolean stickSpawn = true; + private int bugReleaseRate = 5; + private int stickSpawnRate = 5; + Random classRand = new Random(); + + + + @SubscribeEvent + public void onPlayerUpdateStarve(LivingUpdateEvent event) { + World worldObj = event.entity.worldObj; + if (worldObj != null && event.entity != null && event.entity instanceof EntityPlayer) { + + EntityPlayer thePlayer = (EntityPlayer) event.entity; + + int var1 = MathHelper.floor_double(thePlayer.posX); + int var2 = MathHelper.floor_double(thePlayer.boundingBox.minY); + int var3 = MathHelper.floor_double(thePlayer.posZ); + BiomeGenBase currentBiome = worldObj.getBiomeGenForCoords(var1, var3); + boolean isDesertSun = worldObj.canBlockSeeTheSky(var1, var2, var3) && worldObj.isDaytime() == true + && (currentBiome == BiomeGenBase.desert || currentBiome == BiomeGenBase.desertHills); + + /* Armor Effect Only Occurs When Block/Item Package is Installed */ + if (!thePlayer.capabilities.isCreativeMode && isDesertSun == true + && Loader.isModLoaded(DefaultProps.BlocksModId)) { + float exhaustion = 0.0032f; + switch (worldObj.difficultySetting) { + case PEACEFUL: + exhaustion = 0.0f; + break; + case EASY: + exhaustion = 0.0032f * 1; + break; + case NORMAL: + exhaustion = 0.0032f * 2; + break; + case HARD: + exhaustion = 0.0032f * 3; + default: + break; + } + + for (int i = 0; i < 4; i++) { + if (thePlayer.inventory.armorInventory[i] == null) { + exhaustion -= (exhaustion - exhaustion * 0.4) / 4f; + break; + } + } + thePlayer.addExhaustion(Math.max(exhaustion, 0)); + } + } + } + + /* Armor Effect Only Occurs When Block/Item Package is Installed */ + @SubscribeEvent + public void cactusArmorDamage(LivingHurtEvent event) { + if (Loader.isModLoaded(DefaultProps.BlocksModId) && event.entity != null + && event.entity instanceof EntityPlayer && event.source.getSourceOfDamage() instanceof EntityLiving) { + EntityPlayer hurtEntity = (EntityPlayer) event.entity; + EntityLiving attackingEntity = (EntityLiving) event.source.getSourceOfDamage(); + if (attackingEntity != null && event.source.getDamageType() == "mob") { + + double cactusDamage = 0; + if (hurtEntity.inventory.armorInventory[3] != null && ItemList.cactusArmorHead.isPresent() + && hurtEntity.inventory.armorInventory[3].getItem() == ItemList.cactusArmorHead.get()) { + cactusDamage += 0.5; + } + if (hurtEntity.inventory.armorInventory[2] != null && ItemList.cactusArmorChest.isPresent() + && hurtEntity.inventory.armorInventory[2].getItem() == ItemList.cactusArmorChest.get()) { + cactusDamage += 0.5; + } + if (hurtEntity.inventory.armorInventory[1] != null && ItemList.cactusArmorLeg.isPresent() + && hurtEntity.inventory.armorInventory[1].getItem() == ItemList.cactusArmorLeg.get()) { + cactusDamage += 0.5; + } + if (hurtEntity.inventory.armorInventory[0] != null && ItemList.cactusArmorBoots.isPresent() + && hurtEntity.inventory.armorInventory[0].getItem() == ItemList.cactusArmorBoots.get()) { + cactusDamage += 0.5; + } + + if (cactusDamage > 0) { + attackingEntity.attackEntityFrom(DamageSource.causeThornsDamage(hurtEntity), + MathHelper.ceiling_double_int(cactusDamage)); + } + + } + } + } + + /** + * Used to Notify nearby Treeents they should be attacking this Player. Triggered by the Player breaking Wood Only + * notifies TreeEnts that are looking at the Player + */ + @SubscribeEvent + public void treeEntDefendForest(BreakSpeed event) { + if (Loader.isModLoaded(DefaultProps.MobsModId)) { + if (event.entity != null && event.entity instanceof EntityPlayer + && (event.block == Blocks.log || event.block == Blocks.log2)) { + EntityPlayer player = (EntityPlayer) (event.entity); + World worldObj = player.worldObj; + AxisAlignedBB playerBounding = player.boundingBox.copy(); + playerBounding = playerBounding.expand(24, 24, 24); + List listOfTreeEnts = player.worldObj + .getEntitiesWithinAABB(EntityTreeEnt.class, playerBounding); + if (!listOfTreeEnts.isEmpty()) { + Iterator entIterator = listOfTreeEnts.iterator(); + while (entIterator.hasNext()) { + Entity entity = (Entity) entIterator.next(); + if (((EntityTreeEnt) entity).getAngerLevel() <= 0 + && worldObj.rayTraceBlocks( + // worldObj.getWorldVec3Pool().getVecFromPool(player.posX, + // player.posY + player.getEyeHeight(), player.posZ), + // worldObj.getWorldVec3Pool().getVecFromPool(entity.posX, entity.posY, + // entity.posZ)) == null) { + // worldObj.getWorldVec3Pool().getVecFromPool(player.posX, + // player.posY + player.getEyeHeight(), player.posZ), + Vec3.createVectorHelper((double)player.posX, (double)player.posY + player.getEyeHeight(), (double)player.posZ), + // worldObj.getWorldVec3Pool().getVecFromPool(entity.posX, entity.posY, + // entity.posZ) + Vec3.createVectorHelper((double)entity.posX, (double)entity.posY, (double) entity.posZ) + ) == null) { + if (!worldObj.isRemote) { + ((EntityTreeEnt) entity).setAttackTarget(player); + } + ((EntityTreeEnt) entity).setAngerLevel(60); + } + } + } + } + } + + } + + @SubscribeEvent + public void onBreakBlock(BreakEvent event) + { + Random rand1 = new Random(); + + config = new Configuration(new File( "." + "/config/", DefaultProps.configDirectory + + DefaultProps.defaultConfigFile)); + + config.load(); + + bugRelease = config.get("mob controls", "Spawn Ambient Bugs on Block Break", this.bugRelease).getBoolean(bugRelease); + bugReleaseRate = config.get("mob controls", "Spawn Rate of Ambient Bugs on Block Break", this.bugReleaseRate).getInt(bugReleaseRate); + stickSpawn = config.get("mob controls", "Spawn Wood Sticks on Block Break", this.stickSpawn).getBoolean(stickSpawn); + stickSpawnRate = config.get("mob controls", "Spawn Rate of Wood Sticks on Block Break", this.stickSpawnRate).getInt(stickSpawnRate); + + config.save(); + + //System.out.println("***** Done setting up the config for spawned bugs"); + if (stickSpawn == true) { + if (event.block == Blocks.leaves || event.block == Blocks.leaves2){ + int stickDrop = rand1.nextInt(101); + + if (stickDrop <= stickSpawnRate) { + ItemStack itemstack1 = new ItemStack(Items.stick, 1); + + double xrand = (double) (event.world.rand.nextFloat() * 0.7F) + (double) (0.3F) * 0.5D; + double yrand = (double) (event.world.rand.nextFloat() * 0.7F) + (double) (0.3F) * 0.5D; + double zrand = (double) (event.world.rand.nextFloat() * 0.7F) + (double) (0.3F) * 0.5D; + EntityItem itemDrop1 = new EntityItem(event.world, (double) event.x + xrand, (double) event.y + yrand, (double) event.z + zrand, itemstack1); + itemDrop1.delayBeforeCanPickup = 10; + event.world.spawnEntityInWorld(itemDrop1); + + } + } + } + if (CustomEntityList.BEETLEAS.modData.isPresent() && CustomEntityList.BEETLEAS.modData.isPresent() && CustomEntityList.CENTIPEDE.modData.isPresent()) { + if (bugRelease == true) { + + //TileEntity entity = event.world.getTileEntity(event.x, event.y, event.z); + if (event.block == Blocks.tallgrass || event.block == Blocks.vine + || event.block == Blocks.brown_mushroom_block || event.block == Blocks.yellow_flower + || event.block == Blocks.red_flower || event.block == Blocks.deadbush || event.block == Blocks.double_plant + || event.block == Blocks.leaves || event.block == Blocks.leaves2) + { + // Makes sure to only run on server, entity spawns must be done on server + if (!event.world.isRemote && rand1.nextInt(101) <= bugReleaseRate) { + int bugType = rand1.nextInt(10); + int bugCount1 = rand1.nextInt(2); + int bugCount2 = rand1.nextInt(2); + int bugCount3 = rand1.nextInt(2); + + if (bugType <= 2 ) { + for (int i=0; i <= bugCount1; i++) { + EntityBeetleAS entity = new EntityBeetleAS(event.world); + + // Places the entity close to the coords of the block (par2 = x, par3 = y, par4 = z) + entity.setLocationAndAngles((double)event.x + 0.5D, (double)event.y, (double)event.z + 0.5D, 0.0F, 0.0F); + + // Insert the bug in the world + event.world.spawnEntityInWorld(entity); + + // Creates the "puff" effect + entity.spawnExplosionParticle(); + } + + for (int i=0; i <= bugCount2; i++) { + EntityBeetleBS entity = new EntityBeetleBS(event.world); + + // Places the entity close to the coords of the block (par2 = x, par3 = y, par4 = z) + entity.setLocationAndAngles((double)event.x + 0.5D, (double)event.y, (double)event.z + 0.5D, 0.0F, 0.0F); + + // Insert the bug in the world + event.world.spawnEntityInWorld(entity); + + // Creates the "puff" effect + entity.spawnExplosionParticle(); + } + + } else if ((bugType >= 3) && (bugType <= 5) ) { + for (int i=0; i <= bugCount1; i++) { + EntityBeetleAS entity = new EntityBeetleAS(event.world); + + // Places the entity close to the coords of the block (par2 = x, par3 = y, par4 = z) + entity.setLocationAndAngles((double)event.x + 0.5D, (double)event.y, (double)event.z + 0.5D, 0.0F, 0.0F); + + // Insert the bug in the world + event.world.spawnEntityInWorld(entity); + + // Creates the "puff" effect + entity.spawnExplosionParticle(); + } + } else if ((bugType >= 6) && (bugType <= 8) ) { + for (int i=0; i <= bugCount1; i++) { + EntityBeetleBS entity = new EntityBeetleBS(event.world); + + // Places the entity close to the coords of the block (par2 = x, par3 = y, par4 = z) + entity.setLocationAndAngles((double)event.x + 0.5D, (double)event.y, (double)event.z + 0.5D, 0.0F, 0.0F); + + // Insert the bug in the world + event.world.spawnEntityInWorld(entity); + + // Creates the "puff" effect + entity.spawnExplosionParticle(); + } + } else { + for (int i=0; i <= bugCount3; i++) { + EntityCentipede entity = new EntityCentipede(event.world); + + // Places the entity close to the coords of the block (par2 = x, par3 = y, par4 = z) + entity.setLocationAndAngles((double)event.x + 0.5D, (double)event.y, (double)event.z + 0.5D, 0.0F, 0.0F); + + // Insert the bug in the world + event.world.spawnEntityInWorld(entity); + + // Creates the "puff" effect + entity.spawnExplosionParticle(); + } + } + } + } + } + } + } + +} diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap index 79d9508d54f2934854dded58537c40c258aabeb7..0b992ea000d9b3a2ea7306597387370cb29de77e 100644 GIT binary patch delta 7 OcmbQh_JDcA14aN0SOW_H delta 11 ScmaFBJb`V)1ICR428;k4a|8VV diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.syncinfo.snap index 79d9508d54f2934854dded58537c40c258aabeb7..0b992ea000d9b3a2ea7306597387370cb29de77e 100644 GIT binary patch delta 7 OcmbQh_JDcA14aN0SOW_H delta 11 ScmaFBJb`V)1ICR428;k4a|8VV diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/73/96/history.index b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/73/96/history.index new file mode 100644 index 0000000000000000000000000000000000000000..b3c1cd1c5da4c79fc5a1dbfc1328a84c555e2d40 GIT binary patch literal 530 zcmZQ#U|?Wo@X#+VO4iR!%*@lzN-Rs%PtMQPFD^;VHZ(BQFDS~-N=+`QD$OYciRb3$ z>F4Gr6$6Qs)SO~{Ul8Sznp&g>(#gQa5L3wYehq_&WbWa>+KPavpR<34dowaHOsKs* z^Bt1-&P1qq*RKi4;=34sfYmS9=n{=AepKNbSe&8ffgrMY+qbV^@q+LyZe(%3eYYX% zJt_2?b7F344#ab;2hQsLM7HGa!_N@Q<YcH1szh#LUq Cm&L{a literal 0 HcmV?d00001 diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/9f/history.index b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/9f/history.index index f53b47c491c64db3f1f8c3c14068ee7a7dd954ef..1a6b4182892f9a4771d6866ab122cc59b83a6e66 100644 GIT binary patch delta 116 zcmZo*oxsM<#K6G7#NaZK-PqYBH7&6;rzD^#zo1wzE3qt*fhpmA8OOXe3?ky9txvw$ z$Ny+~F*m@Qk%7U1>A3d!)eItXFZUY+9At`qP*dUz5}(K#Bq{OXah(COrXthnU`-n% GG?)OG;wQiW delta 19 acmbQh*1*cj#K6G7II%W}QGDYI4JH63_5@!5 diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/history.index b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.indexes/e4/b9/22/81/35/63/15/history.index index 27fed8ac3063b1d54d1ffa52026ee2f27cc8c568..cd3f009633bc75ed2a24ff43f82437e7283cc937 100644 GIT binary patch delta 35 rcmcb^_=RzTwD;OnV$meQq%OKJ!A#2#bwpv(vSu+Vh%Us6=pqTG zXIFxCp)O&445xkAhgqw%^g%&zu*7-&-1?TvrxNG8#xH$ z{lQ^vAb#PC*o9|x)mR6sAc-^TH5h>@5(7(OFNv*qNmULLBz*Wmb&3S4ML-ex7*ji8 zlH`yS2mTW`HBPw2bze0nq>PHz>{K$x2DiB~lOrpm|0d(wb#RBLernHYNSw!ceFLU- zHn_`JuTK#k4iWBzDMszN5{+y}kD&wZF&Z;4>cz0J3+^-eZS12(BYk{|dVHT}hX*Wd zCYc>wj~`7Tc*rQ6e~7Z9QThO%OuKPIK@m)|I8ty~WjIWxl zFvED!oT8f87O{t3ydJ-=u)t#$8&|S8F7}hC#;{e7HI{OC!t$bJjHa&DW@RO$Sj<|x z^GNiH<>x6u9|ns;GJQrgXRBr0|h$^p9vW|?Q~9n^GVlhX8@VV(Un zg$cHEQ^ZjLb1W7eS7drnNxxt??mQ~fgQ7)A=VGwf4QZC~;$u=K#7>s2t}=MZV#w7` zBC&b-K-gX4fmc$fbkms8xKz3{njIGGDXlQC6#{lpwnjTe$zP%^TW0jG OhIcGmygf8G@#8PW6Djuq delta 827 zcmYk4T}V@57{}jdZaZh+n{GS%bURa5$cQEhVhg%)!cr+irWVDLmZi>tiU}>q%OaRP z-C7qx30@S{RTqh%5Oq^Gf;UB81`!ej5q&)G<6(3zf4~3pf8O(+v(vZJSHBGAmGUEN zK3DuIPU9`52m7H7EV$X!fpvIAqVz$WCvgJrnmWNsB8?wSizF@yF>VMqK5mMDLUL6K z-+$t%IRYxzeKXHVnGnUs)C-FSHm=;aaOHwAxo$lScAolaT{h=)6Ipz(4&XaQ0|#SO z-6A}LgeSnsXv`*2#f`eX1TIEvc1C`zIwrx*=#S$LouZQAQxtI583GRr%_Xz55&Yzu z0xzSg`wC@ekJANwcAdc^o*?*GT=P7T*#fN^z)^1ini->)D>fNF@dcoT@t$u>*8CP{ z>BS59quCFB7Drp8s4k0(BzmwKP_ftF2?3V3{c9xWzBFVP1X;WZOgr<^VFOmK{w>fsDTS?q-$ z%Jhbjjxl^5nUU!YF=C``SdJzj&T>6kk#buMvMk1u(8^*pwnAd@<-vh)I<7-P3X}30 z_subr@)n=b9o1ShzC%L5seJDGps_ZI*<>1yaZEjF#In>ziL1QkZ$iQEt=*vWs-cAZ z>z2C21w&>bMHTny``xJ0-_wgSZ`V`M#`$4=p7OPz7;Tg}Qti;rawJuwxtrbp0D8yy A>;M1& diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markers.snap b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.projects/Minecraft/.markers.snap index 3c3e9506cc1166ff64f6ff323126ad6f56542d23..17c64fc1d8786a4b0e88f8fcb712d75ba934b9d6 100644 GIT binary patch delta 1874 zcmb7_TWnNS6ozLXoOXJnQ+peFp}UY8rQ!e@Q<@f`7gBp+CUgj-iI+2Tc4rPfbN0B; znYNf1&=6mEqPs6*0uMk^AB*%vWP9l0pf3bB2S#RJ{T;4qz9P;rs%Dv;sjd*fL?q4o` z54l0}MO_%f8Pi=WcM0S=$xooxNNy{!`Z{DwbHOOHSW>rL>ToOTn%q`c<(qO?(^%w# zP~^^sR>SpV6Jz%vd)Ffy_Q=G2lT9nKG4h@YBVQ|g1)4d1Ts8%gFMlfw zkq!K@+q2ru2SMN0`ETu;%)MDZJ^c3=o2u5 zVOLLvBN^2v-HPhMVPb8wmsLI*xr80i{Hg=dh-!B`O>@VkL%nK(9ctRtO_>huwsgm# zPKswOgT@&ZY*bIUFc}7%Gpc7Yf@g#Y(@zK35l<6mq|}>{x!%>O%0H^NkgHgfziO<~ zk=ePUa6x@OlUFvh$l)3bnCFhk=W7$>b9HYjlmg_pZow7Jw=a)ex34SK$1KF4vT_HrR$PgNKw$Gxc1CJ#xX^tgxwN zLW%e&jp<28g(}tx@}Z;^I!vx3SmlN@05*Rr7yV0!J_QJ9(0m8-2=Y`NC10V(KXo=x z&o9VrWLI+nsv92S2D4TJ<~QKi2w3nZW?R^zvfbI{WeclJPcs_hbeOAM1pAEkumr5u zN2$Shd^GDMRI4(&fO{@%KkU_$9>l`VJ8Jw!eKYw6lk+z)z*&goaK6Ppz23k835}Z1 zR7jn1wYr^f);7l>ux@3zo7=4i@}|8OpI{=&@7h5(kZIj*U}_{mh2$-vcIs_sx)Oqd zHzr+|OZqw{t^SB@J8~&_KHczozNTQLIR>u)QBLJBL7Q`i3pKwyJIPCyJWX*!oi@% zg9#_{P6ibdZek*YlSIA1!GseBP4HxoDxlot=FAhLM1nUb+3e<<_kQoo>@4)mG|Ybv z9j6nn{cykHY%pr*!z_`#p3`!JU3%QC8CLQNA;iKTu_`6vheAb}Z^Y2!8cP!!DKc4} z8L8~3#P=n5>a7?HJS5h{kYcoCR1O2v#HJX@T$*LFriD1_&c$=d7}JHAaBHv6gO(k|Mm0{hvbetK&L8~YB zgpy@R-56~X0^|fCv?DrDx5dB3s-pPX-F4!OIJ1jc@K5`>4KYz@bE8ssV7#jD%imwUY9uCqlZdUoHc*xqL z?T||tvgJ?n4ulf9iXF27nKttSd&bk(Z1Cd9AiaR+*D0$!;8WvvKqCeeWX1y!O5_?p Xq%*J?tfsvi+b94Okpou% delta 11 ScmbQvIGu5V4WrRS+b94Ol>=A+ diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap index 04565b961e458957b1a886b5baa9cf13f67d7461..0b992ea000d9b3a2ea7306597387370cb29de77e 100644 GIT binary patch literal 480 ecmZ?R*xjhShe1S2b=vdAllRFvjPi$7cmM#xoytW3 delta 40 vcmaFByqax-fiwdH0}}(IK9FKK5b^u7@*V~esld-Y)w|1&ZFs=AP=FBt(v7B27O_l{NiuYj2{V%}xZ#Fu z(gJ0Zwd}MkExT+5K}AtimID5j#RWt}5ClO*-rsZ1bIv?BbIwiQ`Fxl=Dd+qAp0h9a z+;c~c*kzX(eS*r3>RSAI20ur}8nd~c>8Z|4dLW;gUPvYTrgyH+Pw&j;Qn5sLHq({L z?Vn%Q-x;fOg^ShZQhnJ%YX4j+pB>C~ruJWzS{G%qkxh1`bA@&L=L<=&oypGLR96&L zVa+R7VzFJqq1WUK(@)NK6|~zSPfs@giWG>IElT&NI&;bHLTsvxjtMmVrZB;>)7Ojkt2d#5FE&eon;Vw>d0CUM;^cB$eAivg0e@{mA`h0 zjh>!K_ph3PpaJD#aAeEg%l6=)Ke9oCvd2avs7gizt%fV%ppS{5kH=#B%+DpeGO6}L zGFO;3E1ypl+WNavYxU20{e|4R>7AKmJ}+&}9mTTX`4g1=I2N1iw&gG|mJI;127VHY zjS~hOR5?=!X{n#aVhw_7Pvuspat`)jW)a@9PsCy)`cnl&EoM@5?%^B`|Idc|SrDu2 zGliuag&-9|zQD-O3=s>;ejda|_o$Q&1)ak|e=dSPxl62B#9&UguP@s_P5jI9HL2t( zXQXDaxhI9WUxX7xn{y<{JZ2G|KS9|qW3jQ*2XfhyQ=KYRbm0+2@=*jufx;&!L*|Pr zgfy&E1-NDA%$HRNlm}eL@bA&}vAFhPAX(@wmZoLDIb5e-EVe&_j^N-2fSg{EfCv6f zdmW3-=5TbGvrBBmfzzpCm~7nZt{(pXOGUV&f>=c%nO`+4S4ej!I}22%E%C%X9P)la zJTN*|t!fe_%0LQSN>+ru?)o7Ien3DE#$w}#Len$Z&Q--oAN{}FSC~L(8|g=4vC8gr zCe@nE_onjGJJS6j(pmAl)~v~wF>F}9+{ytXQnvB9KOCRL?_32@cEe^zfT9IAL=FOVBXx`A^Hi8IZKW)f4T~uSU zQD)FD9sFZX^TzMnP_f2yN5n>>BT4Ccr-L59WyP^7NKp2S4H}d^J1SPq&CscXnZXXO zJ#7E@Ehj&sq4?89DE`bYv5}c%Kb0>VFu%7BnD{|4VB)e}V)0b}%A?z-o8Ys^@3w92 zbE#_KXX0`Z{0byTZgAzYqlW}P_=e46IrwEFIMA^Lj0pxYOp&gfjJktQ5El`RKRY^B zu{_(?kuPNXQ_}~u^U9lfCtUMhuOCs?E;|&6IDGJ1`j87zF@!$#;_<|0bWSptFq3Hg=I6c7y56_q*%ySpRQ&JZAs3D#X z`qo7Voi4(IcO`J2qQy5 zzv4Fq2qV?12Fy~etiSO(O+YXpA-~c$1Ox;1YkJd#oot-HE>M^$Mg6K@6DZ7#Rvl`n zck2I@3KAp^5M;$pq!GfU*x%5B;b&8;1p{6t0H_)BVrB+4{aRvki6ZK(?40vOg6)4PL5W$LT zve_;#Wrp{ZU$B4~o1h}~`h*^=)OKb&v;BhwL@?QtTInxU8NtEE5YAt+RtXL^hH(DU zb+X`KqoxxB3d~_q_w)H|pEqIB0)vV8$;mt@Z*VD!ZRpE(a z*(q4q5o~7;g$Ie`FWnu2g`N7MyQxeHeQg@HBUlJs&2y!6R-!qu* z_mU?F5>`Zx4rDXQTx4lDUa+tuaufrd?sR{I!^a5}W@?K$n(IyX`zzY9f`bha(E=KU zR74qCAxKyemk1h`sw|!D z@hUDB4ES+|8Nf2hDlfH2P_R&IsC;q&_bdEr3k3%o6{ifQJ6GkC{r)E6NI`(E$`7Ph zrSdCj${O;nZN_tp%T(APu|P23>jkrNAe+vYqMx~l(Kdm?ObE>v;Ox2~s?YvYkF$eB zt3Y9<+NiG1;&zJc)Y@k3*!o-6n=c?3XpoTG*Bu4j#|McP!NN|MbvnD_kegX|o?v0e zI9obiYn$=>OP4b=S3ode1Qq0V_W6tUWp<8WVJFNwoqb_13}EmH60-#hJEjbj4E5S( zyztSz%*+xDc$1ODxLtkmGyh}s2!X;(2z7e;;+Zco`bB}lOhsYXWxg*60(50zu&*PN zT9ZootHj{~0ba8PEBQ2C#tqe#UH+ly=LH56Va(sq9wsoD2xI=H_HzP*i7@7GY!4L} zOoXt!KW>Kz3?{;uKW?8D7)*pQf80JJFqjBq{&-=FmN zOEUxjcx*>9=kHoREdm3qQiJ;pMs%rggD;b3x?sT9(BijR_U_2i-7(qtN^F0D!9)>* z81@tRu>AxE6SY>YHsp?M?B$1OwhMed&z998D7p_y*P?raPDH>5Ccw z?Yj2GHnKrm1zq3*#{7;Kw7|IDWq5G1Aw5Jsxy?GUfp zZUTaV@e+zIP`e5eRzhTSv6>=CSgDtq!xXN`0)?46iAEN&NdknCs;GoS z0RSc-x(w6`0B{9>VY0qP5TFwvBI7Vlga=FE2T~b-Q>+tqiCU{ROuobg2OHxo z7nwU{f`WxwbqjDO`scBNgAKt&$8L<^V56?6H%#eeD+tSM@USz92wX@)~bMcN_nwK!8`$dR750%-;nAz8qQ7o$m18l8L`10Knt03Nd`M9{-!5V8K$+we?Lw z!9tDE8m6-TRbVhtZLr9?`i6jDU~C>0&YNm~5rF|#s(l2}4c6-d0j`ng=)Wcq;8jXx zn7IF0FyJc`6E)F_|49&_H4&Lqe-s305NI&^Qb~V${Xr0*tMa&uv92SD4S(Jhg!rq1 z0biN#OJ*|B4d5#R0p6gHooqZ`7A)+Pq1hO+W-NQHmqcig)rDT%9K-+-xB0@;)3yix z82^b19K?SwAQ%{njdS6^QsH+ZFu-cH;x}Bw^nU_^fm*feWGAZUZv_V%f{QMpFA5Ge z>WX^96w?<32qQH`FtX%5FEE%WTRYG*WC@||;BVi$Lxl?B`bvKUaggKH3fj)By~Upu zI?qu9ueZw69#!>>42CvlUu*hyR{N1)9vc}Of%}S~ZJ`AY_cIah=VN2lEtp!Qa!a#? z`A4^T8=T(==xI!L+B#FSGlSln-|=6I@L8x{M(5`OgpraB#wVYw z0tE4&ihxf9?hVFk?|VTH*Ms;IA~G#;43Y+e?Ov`+dU{#Ui0y!6Q^zdi)@!!nbC>{_z@R zK8QaiWZ+wks03Yu{XHp-*?MpqWA_W}0moMD^c5U%y9oG*d#ko=5FZu6QP-SXwa4sP ztw*#${1FixsB^1!`dcbc5Pv`fesBb~-sI4mq0D5``2vcax70i=I7DYs=OAWPeffdp zntp7+!44I42*__Q|B&EeYaHF@*Km~TgMxyEN|7-zAdAe3tO^>GiT1Ya#gV1OJFQIy z@q2~s``nqb;QiE#M`^q9ABy0}cvq$@c>j}cup9CFL~x*v+Hm4AZ25~K=n+9|#E_Vs zcpQg2LWG;OI#y$MBXuDQd%cz69)Tgw<1E%Yh}oI13f(OzSg5sBCcT>Of%~|-1P2?H zv~Oe>|Om7whXiNBGdy^nQD`Fs%9q?=1 zCHa^oYq5+eC7MhTq79pf*Io2p^M%>n3+w2 z0pHkRwhKli%AddcRi>{NG%PvkA=*1$`+Nt}R|y)HYO%>RmGNX`+mgd)zs=m0f`bj( z9E)35sx5QX`Xz@vznDqgiPIlJ99Bxmu&-@PK6jsq>E%KbRvPfUS|L4vz40D@7rgh* zuTEsu%LEHMjh6NLyx_f$UYf`B4+ITMPCD%Og7^M?;XsV$vqPp205*8fWc z2qOfp@%r2P?Dz)V7zOc*1qdTU!LX~X&rY3W28b645JtvzuEQK~AisZUm)P>_Kb?Mr z3LV5R6cj8}8>*ysNob>hV8BB8O|wdiLK= z*iQuy;^zqrCh7?Dr~cWmzoQc`h;I-ej0^?Cj<%lt#*sa&xL$xT($IyikZM1qw}8L; zy*HRWSFo_tXj!kz3*P(P5?xS&xNg44L=cB1Cmr^C!Fw+)F*BQUgf=YI(%nrV8!F$e zhYnu7j|v~e&lVhPRHl-+`ABgM7XaDao+S|A)e6yCe&|dA!GMIqk&;Tf7a%f-!@zj6 zncC(>C|Z*Io{)o;21ELiM6#y~7Ivz;vulSJ{H}mtK;6Y9%Io2G1OT{F-S&+hh<;lj zz{`8G7$gtXXg&0Z^}31%aXmvKDu@HFBS54;IJa64oi*iSr4YowDU@JjC>YK$fEORb z;AsMc5!|O#JJEYmm{O%X!-6u+zaco-sAi60=ZC&7AQ%`gAXmGx<3HO>*ZDO;!V2!f zDmRBK#JU$GHi*MSLkM$9zQ3$bNd@t*2uav+utQRH#|KwpM2=4oKUJ`><6y&sLam{OOQAJ_gN-3vIEFI+R|^g{hH&B7Np4VZ zurY-5PXY>pgN-=imrwaiT3!SPs)PGulM}&#>fruJoFak))xrI~4~XDEE0yoj*_jmx zaE(MyG5Q4pobN}LG&eFcbWtZRhy$&q`GPnR&ZAv4`kzE>72I!og@g*HHyfi`V}Ivl>&o_M1NLgen_TuP35+|Rk$Gj zWf2~19p5~+Sr7tc{nHaIqLq<)21ROk(Ju*2n5n{MtaN9xKeFncAQkvTOkVP8SMXBw$xf`k>`vVeJN#5&+nf&pKtw>gw#N9&>cH9n<+2Jxi= z0nRdngfl^A`x3!`7fd)hl36Sm@Z+^>A`L^er}fYoQ}h@Ykp)bsm~ zU8{A1_(DO!LNzFglnXj8zl#bS#E%pZ4AcPfdU*edf7Q)n5MLlLn5fI))V%(pTsR@y zo^0PM!Fp{1gpqm;3dy19l85Ip+A2_(DMiCs(e~u>6TZl(F4go$5Qmu>_28sCabym* z2t}BvQ<(5Ilz|e|E^9p)sir5~)?{;ik?s0ip#}q0{FG)%S(ZX`1Ot8?GulV5d$R=v z3swA7XQa|B!GL$(FkJBd?+&>^g$v?e5aE#x&RcFPF42L@UMvPK`|a{rCCU;NjGiG| zj~2Z4$SG&A{lkk0X;s*}FW&oWpBDt^3cBy27OTC)VS)gy30leZ5}y+UXho>z-b)-R z2+(nTYsVY>5D^?G1n8ztG9SLx-uB#rCqJV?25~)#qd$T;XiJ1||F=E2xMDLCn$!en zON8&vw>`IX!!{-kR##1cW}>6StJ4-;$izW{0Bwn(UY+yDJ(!p&2+)=o>ebnqO-vjp z2+);k-HjH}!q1T{c;}sGzQxD^0s)REf)JdLG>*$0iv9iE?TpP37)*?%+X~(+{Im!R zuuQG9he9uS?aqH*$)=}^&>-oci&SQ1KG_9_!uOIFy!OE5x-L4%BY)46h8IULOy zZUkCqes$v{Wju)QB}BmEbVoeizmlHz^2$sT2=FS6sO{%oW>3L@uh0zkH+l(Ol?V&s zpsO{p4tII7;pbfD|FZDtBg%Xb-(6klD~Q8DygQxmO@>QG+r*P9FXP}-)s?;!s)G+{ zof@}a@|+45#CH?HryA=+8iB^`9}RHuT}5!9+WL?dVB*)->eeNQPZ7a^>fi^3(x+|G z=0D!T)+dYLKy~nghXlX%aZ|~3eiIYKf$HF&84`T!r3JP=QCJ76f)6=gsr9KB-nyQH zH;Ujub?|UPwm$W4>~9==f(Q;&2M;GCg1?Gx44)w0Ac6xOgGK3(>43URvt;<#EAl4_-Hxt=EXq zAXVsaD#DjBmvHEDA~Z-9I-H0Iy<#edt`?y|CV2hUn>JMQt2Llqf;TQL#aV9&JISFiE_chj?troc)YREa{%RI z9K6vZW>~$r(1RVL7daR!6AXBxN6fH#y7*{cVW&=~O&1{dPEB>>!bcjl9+>?7*(z92_K6K1P|=I4(BYP#^}xY(|KZ^O zD+VVt9)0dn*?&cF)ZD}{ryZ4P8G-_0YdAc|*_T{p{}wVZVV1R5=KF{A_aaNnJ`xZN zG*~S_!wG&USlGe&=~xnv+%;bIFM$9rH_O_gNVPsc@u9^kU{Lmf0077Jx^O7?f;X4_ zhI`$z_eF4^WonT%6k109pCUBKaVqpmI`uM{^*+v1_MV_%Au-GmRAujq@L&_X(&_c; zA0j+hgpWL^s_Y#R9&DLfybD=h@cyg6&;yL1>}?SmWJ0e~4ee34pKHSZU4#eA;fMCA z+h^UO!Ubh-iSS@Ke7G(xcy0Tie$L_bh=%@9EQb#d@)o@I#O<>={F~~k!-M7U;Zfd# z*B+mD28aKv2oILShlhC!Uij<|PqAaKitu17 z^Q$m_!}Esy;lkSb_>VgGW8@Wq052lp=mXiN%XLupvOs_rk#Lc1ef+VLb;S?LUJ?lK z$R~jA)FXtT?DqnKfy6MUvX%W#ga=#A;iFsg{}T`lB!)S_t?aiVJXm=kI~FiAU2^cb z;y4u;C$|geIXtXjPFOdO1FSfK13o7L?r?7?Z=LYw``bA9^CI{QXzE=DvKM#xm+cV2 zfsW|R_J!Ql!*%t-3l15SJr%^pnzXfTp+j@J}dw9f$vw z2>)xmz6Cy@g9-($=b*n9L4UJrta^4bpIVgd8pLC8=H)B;ISjlW=AM*>DlfnlqZj(F zyby!DIhizS%+g$T?K*tXD?ErBxd!IsdcTmv5>)1T4{W_uveZXAPARxOISIpoGAcA zbAl*VD`(R?8C-dcDH36o)W@21f%5JWo`V-kP1Evi{oPrI&xSl*Sb@d*p;jE|DAI=m z-xDZe(kRin`az{q`fiND75!a7!%|3i5gx~Jpcnxu^g9BD{|!=j1+|wd>)u8vzI3V5G29@6u5X2`OJs(_%`&_38fQjzQ`X4eT8 z;*JC1^FP-?6OXGaeFcdh9~P@s`8Nxv!XJYNC>_brqq)kpMDTC8Ize%B_>}Ew%hwG! z`nJ0}8KAT@Fnrab26l*^#N2AZ!GRhriZhmRK(_Y4Et4(Rer!?E^Evcti>LKwJ{>6?E;UOTI}LNbkKcuSqd@Sm8(_G{Y}u zHYr%ht8Qi%oz+>2U~o@?D^H?t`ib9=o=kG89xY3C;!&$b$$quZqSOHTcLlAaZ~hH^ z6-{cDTj>1^rPyH{^veP}38k8JxrotE2YE1)Ckhhcl3YY5K9*`8$RsuG##QJ`l2X<| zPG|B2K|;S?c-xNSD>4prA4ZQCC>)qL6m6k%97}zk#`tjphZo}rpNl)*^Kh16DK&+u zV+92V8i{H_r5D3a2VKMT3PD4^j_6i(XxVZcTIK*N7(7ORa6y4f^nv?sf6c_;XaPc9 zO_-Lco9U_CiezrqT31opg;kde7#>uSyY2MiuToF%{5Lc0f`Pd5R57#Y4L=U>0|u7~ z5W*Uyqh|8%w7K&=29FXT)K!+W7jlDmCt5CrjSWK=`ZzJzKnU8xg!M!UDXcxd)GT3V2p-drcHo!9cG}ZO!4)5rOA3P zgKYwYcJ0#RsU~~7#XB!&u2palpRz2uriD(?8n$D-^CGq|Us!+_b-JSX+uS?9!XOP6 zO!@*Tm3?eX+A#Aq5@NW}TF+h>iZ>#b6dIYh6XVEwR zhJLMrXQNH>gy7)7c*CJ;ddNdqg+|{-5$ddn!vZ{<={vt5xFalw?Pwlu2J0Oz zIB4tSnPXm5lAcLKv<-?y^`=T-bm7CkrLY;Qs76iyQQAb^ zVa6Ubs5JIqyD7rn(riBMo}S$Cv2rh{{Isx!XioK8bGY;Y8=AmPYvI3+DLhu(&(h8oc}{=znzgbjGI=WP8NJ**@4ceP`hoJmF7`4iir z_Rb^({0iAwuHLQ}ZRb_CL$eNJ2fj_7qu#l@6A}778`xVIfK!cTfh}78MW(6!HS%y} z0?+88;T;T56ENHu7daig<7uY$6cpsAF-23s7Cy*7TK>muXb)isu9yW6DvHqtHnD-- zg#maqg*{Od#ApjwvW2O_0^HeMTA`j zF-@Jbi2>Z$YrZ~Kzzo!BnwgLG<5afPC@jIJ-R9%;?ww7D)of#eumR7e&PSiwzq8F% zj*T=3BXDX`aaJE4ku3A|f`>!9wc$NmI~$P`*v5Ea1O7DVRq<&3c4q4Y3tuLp_ik5j zmW;+}1d6<@tQ9!im{eR^kLJxVxJK}BWm0i%BbqlO;c#ZqwP>H zLGh>-cHq-)#*SX-kG4V09ND0eoGIP#YqGVG?TI!(%?lZ*6b9hXuEu~`^p7?{^^#0f z2ovyUyfNWj`oDt;Fp)HzG~UCJDV7{I4XFr`g@mvGKWrMJ>&B{jwEvX;WFszYz@v%w z-a|A_(I&i1;BaRmmI8LBl^)ADT}>LmlU=b-VrScfk!)g&Fad8S?QC6EIASnb@Nj3M z;;CVbOn`0wWqBH&n;5_q;5Z$65q6A3;~z0ju`oD1X=qn3|BGhdXLf{O;l|VR@|E=aLJ`p_Z>{+@l z7;T4#ZWaF%cJOnGS{|IMkH(L-@N4$uuuAsN5?__=0 zb~PLMk1zs{CaT5C;mh+yjQ?BU@Mn~IT_bsAwz}n?(IFE*Q&;*55bH@-H|v)YOvy6LijhFt-T66u#3 zNc==y=_^S5baZTrx)E90CY4HVeM?)Ypmxmw8b-;w4UDF>yf({@@KTEp@QWxii_5V!hEBz59woi`LAfLL^e*1T`&DROw--ydZG&$G@usXH$cs0vQW|q75WNiHs zBd-Y@t~M5Nz17N1AIJ2c1r0|UT@CRW5P9#t(+U7dKFW~U6ittcZ_bgS7_Q!EPqpt`QvQwxF z=IM8STGal>t+Uy}%fbR2QTKt21&7aHWb7q@y@DQA-8k@;*29?ky`Ui6u%x4VFyE;* zmU!7in5Cw|ltidcTQWckzR3(lS#3wO|Ki>sw{->^qA{H@1fvZlh8)p8h}r)WEFu$M ziaC%Y_--8hMG+im0|m$KCwgaLZe0u3)*b95W?v92Tvlw$U?$U!hXV`lEj3$BxAeSV z;lpIHonc|NXBz(Vq|rDQe@+;HvAVDUhu3us?hqhiFi|&=I&-JB59YdY|K5RDGXAW< zVX8*r4lKbKjTTLo!u5&E_3(?wCf=eohViEb4iD<+b~q}n_a61_KWC7JbVe6Gj7zCq zwq3=00rY=uQ~y&@3%jw>55+y$G_qD1Z)^dVo@X-zJ>uB zWf>UGH|Tpi(d?DXJ|$QiLXQ$7*os*I|}Za;t^{*zD1Rsvz+rWq`hd#ABm)>tb{geP1C#1(ge<3HSNQ z3fvwNxM%zB?aSH5&x8%cLG6Q5y@9adNVTIFr*VvN0q&?xDADA>Oj7YQB%Dxti`rAs zOANOk$S@_If#JfK{!{@EI<2CAvkA;&qQs+$p)VwMfT_gsOR<|g<==0A`*cMF6*NdP zDsXqqfa1b8+;sK@iANMeUqRy05okYI1lm}%MxzX3en{W^8?mfY19kLCEqFf^UU*+pRc@oMkHGurn}0*N znjRJLLe#bqbT57LZzxa1Yr5ujr3;I(r)+s@Z9(x4O{)HcQwkXz`qjV}&tC3+1t4DPsG?@XY%8A#_tq3ydbUEGo9AF@A@@ z;YmH=I93Ypl<4pA#QAHCZWAcHsHEWTk>73W7}+WiD33$J^62dVM~-BexgEvT()topHwkKUh&ssOVJ}l#1cgWn4-a-wW}tC{pr9+L&p4# z6@r8Gp2c;qAx#}M@TIZ5)yxtu7k2P(VnuX_9oMqftv_IIXyRaE0nfzNuM#W%MYvl{ z?vhnw4gQU#r^&JJC_HX_P)jG!uk$BJJUlYiKu>lfu-bX9x?)G_ zMt=l}hl1E1C0P?W@3>_HYhFkO_%|Zr9Ms>d|9=8Q6aEB=2Ln7+&4c==anUW`)^No} zT#XPSJtnV5QuJ?jj-pcq123b4xZQ_W#9nLKU<|z}5K746( z_+MJ?ZaIbN^@4^c)YR(OJD9IC123&2vcAqNzv;wsfX6U+t^nb7Eddcr(Ha=Jd`TV6b!U$Ekkof2Zsrv;?58pbnA*7 z?RRy6G)^MH?+Fm%6T%>#u5vuaxMd5&rwbS!G=|}2NxUP~Ax%vfNq<++aHHPRb5p9a zJ5VZ)gnmb$aH1&8=q#r&RRE%?i7}Z9Cj_1D?oM}N@3pH)PzfXYTY`ok#Ui1W*qrAV zY@zHS_M3u*7sb@p%X4#*1CB^jWC=cvzUilSqF6StHtl$RZOdsK_8Ua-Z#XdCrt^IL zZq}0N;+C&+Xlexvd73O$3+d@?hpTHDq$!O7AzzeSm_B7N?RY|Fi)rFW+K`YhrqH4! z9*^+Inih`QX#>NB$u_2dRp0C@l6~y=slos}5$frFuX>u{bpnPb#e#v`ElS;yVBO48 z!WqxuM6pON#tG`l%$&gvS4}d*eCl5e4KF6zcrO`9o-&9RWxLyeFR}P)fy0qvZY{~B zd(w`lh_|#bIVeatQLMtWZbz?TE-hPMWRx=8_zVY%qR68z*Qo$oKF4HUkZ_>b*7lsVk9A7W0R?Um8-(fV2nza!Ju6%6z$ne8vEg0GmkC%F+3n(=og*!m599<%nA@5 z6iY;8L7vETzo6lQ@R^2D%kXG_Y1VB155rU&OoZV^F`brY9qrTRe=wF281#!CFVE&W zdp%9Y=D#t$O3-kiSbNkM1!EP5!*4KqvS8uG*nFx$PxFTd0C(uX2|XaDKQI^=8Qawi zX|Q^(Al#Y6c^|Hm7B>G`o2Z}~ZxRT8*AF$}aP<$2_6ihkPaKN6`}xf;G2SC^cv0fK zDjbNq!-Lf8$**l*e-#m)ZlLU%*OwlWev^{%VbR(eyLO~KOG-~2dR z__DBY5>C%Sl4EWgDlHhfQJ{n#U+drZER5A~LgBQtq+@V$^8*^IIFVrf4SzX-X7v}A z@w+fedXSsBB3DrNWl%Ueo)yjGt&V8j#6l+s5)M>rlAdjKK$kFdynrCh5d?$>TOHVU z89Pp3(5*9C^a_hv?GDfkW{wpgv_s%*7ib1CD+CC2P8W4%oF|IZej+U^ju9l}Es0Zl z<~mR6x!H_gjus^JEjfsL5_l1SBbrn-Npra%p>OhnUM5kR^^_(AwF?N+MvhK=_C)b0 zCYK2k(&Kb?s4C^qJA^5sO;Lk3>&;2=i zUQ-I)fDsf0uUIS~NY`@o^y`luoEZWx5*&nCY%aaAq9hk?paMo>3k3vW1JRo+N+HTJ zf{qjrRM|uC;U70pjEGwxI0$pb&7)WCI@HW4vrSM?=1OE9({_NLBQ?mi3J}sP=PArL ze1@s{f`YWA^1ZVhS_d#iqiIvRpev}^4$Ab8^8^K5j#>+DHD%X0vu$sdn=3#_SLrf> z$Il&NrW>3i7zlG#x6n%wO0#+r3(Xb~M7i(e&JR;`x~JyA$1^@l;LvZ>ei~dIR#Zw~ z{|3`X2pWz|4$*j^HPz*ozy4`9Kt;&p3S5~KGGOkwIvg;)?-vAr#87@2W(^*F(=#3} zc=!_5r`-u2{t|Fhf>CmN0NB$lxVEDkPiUC>wZ09P@^#?LYlUSn)54a;y zBRTh+;rjiUoGD1ib5u2{-jz{OgRlP-qaaDWR=@$p>;dOAz)E>OsGESDZX+tt`!_bsNT3JT)vC=MN@ z_uM+vzQ){cf`hW<^cx*Y69yv;A}V$j+*Df?mu7Lkp?jErof*DO5hT<(^Oq$%I-K>1 zYAy**78u02sNxY+PoHpI6@xV7FY!E67>-~<6eo+aDOO9dQ~FEH64NXT=NVl#iib!79kPcufXvPl_; zbIp*?lsYs`(?LT)14Ew+4j-)J;O=G7I>EsK=J-?{2iMPBt>B=|JFbsYFN^aOfor>& zrT)YC3jMJuwN{c0pB4Qb9XN59y3!X`PIkp}D=P4;wpj%_t9eQP9NIDFT3EjJL~WsB z9I^ZxZtvl-pay!57$47QwJ?Ji@F)?Etj?ypv`yCv+qH)Sn&9FADL6|X;@y>59j*OPML6lKE43LKtrZJyPJmjF2CWY8*pqdV`DK^1L1_OkTliuT6&o+jS!aL*}lVAYR8j7t^#t6X>fND z_TZ(Bohn$-*?f&@K&gP4LI(eAJ7aBlWA$^66T7Oc`r{%^UhvF+R$F@?b~E&nG~T!6Shu+5 zW;XC&VF0dJ*U{IlYsVv@j`i$oZeaF5f`ubRahBDE!cnHrV*~#d2H*(y?6cau8Fe;; z9|;g%*o<19>Kkyh1lLdpf~+n7P;d~pJplKXx-lztc+)?b|Ciw5gLT-~d~Vvr;0FSP z6Ff4Q)uusr5!rMs!|w|i9^k-Hx@&AsmWy~yVbgN9K>l;VE{7|XDb)pc>9f1Tcf@%7 zo48Y<^c5uTIy5$M7CPykB<=%6?w#ATL}5Ysdj#@t_&-VC$r+XjKBwF_xMqd#qd}uWHL!#*`nWpiM zi7%X}Z^6s4XGNnwV3bOiL0@5Xb~JhsqrVp@JZLmGI-=?Gnf{%i;Y1zoc0_~cGWdT2 zgbU;8mPa&sIFr8>B;*^-%6T+>DAQD#OiICr3A}tB4Ij)fjUWvSH^$Q%dNetM$>#+L z7beWt3+d7DJ`C>=FkG0V4)asf=4gH@^V9+ux8cYXxuhO#VG>(-R#<>HjkK=bfdN}I zUB~n@f`%`X^b$F(b4T)5J;D6bf`=y!dI>k0y@T1`2o`=!DlY#<^JdUXZJ!R5cnEi!d;YGb# zY>h^jG5VxH;lc!7GL428GfW+ZNon}7v&SV~bp-Q26FeNLSBtLE(uXlh1NrM-Y z#o}wU0qXR~zyrbnJQ>|b@4g7n=f0tXChkyI`U(m+47aG9QcOjPvXpyTTOatpb9wReO=DNw$_!minm|~;j)Eso4j*q~jD{WtgRGWvZyCGdTxPZi z2C~dJcZ^-p#mr{GKvSo@XXDpp|6z!RHpV%K>QZdxIi-=hjCw~(KZ=~;Agskaw|*{r zgcv|K(l`Hxuz{SrzAoN}1KuDYs1_l|rmu@@8MvmuE*j75MS_JsJL=xl zL18I)`Gxe&zah?ok$XBWe3`><6f6wt1odv|xbRnuT_7;XYd<~PGA?|Aq4NaD!WV;n!J?dJdBbkk%>U z*;sMm07Ksw5M;HFb_8Eq#x6XH!E*!%WnDJ?+bS+x%-q?6gSZy7qjrbjbOz57AjEYh zcsDp)*v#0O0)w{3y!#tA{*tjX1O{d2)B9Xa6WbI+UqRvyoUCS^-lx}uF2`$5OCz<> z6cM_bJcFlG4Qe_nz0u5lHpNC$T&O`aM&P$ScnnYN%}%=>&)R5;%y$I|SFGoB4rBYe ze#c$Qji&;ET={nd3I{Ao2W-&sKaNPRVU+wf{=$PXxPOoB1L29sIvqBFkr{u2#J2IV z+GQ%NcgVGImFCL7g{#qktIT;f&u{Ez?wf*xpA)nmZ>9G1C>xUupC({9z^6n?c+ql4 zx}3;3^%cfv_|Xv3ZtHSw0pEB$vy`KTJx$I2DNR|LSf}#gOn*(#@B(WGf?k+j?Ys-T z@eroJDropI$w52SXE0Co$oLLVri6Gs?Zc~R9i7(3{n!E(N@D@u?B=oH^kNd*pb}?n zz$4E2=z+@x=#>d8Un^iZQ?DH;E=`u^`UPg}Lbbx^!Ury?-VwzG)bWudb@qmXJRb({ z8B$z8T?$cyf`T%~GJ5;v1=Q9PTo5qiIhIk|C@(mf(Y!$6L$ywz_I}qhIu|4v$_WVC z{H9C)j{XZi&EP2lgz|W;rnb_#-`N7rH(9I~Mv{;`1kphD9KEnAo;x$>H7mc;KOlmQX>(#vDsnqk| zWhf&IAcE=y<_O)tGDZ!!(S;AYESi7#?gQh^47?-dk+p1YrUGms-#-Lv&bpoh{IS$oK$%if@3}DL+i@ zKTcSIPm}OS`A+e_XD_G@8!zBdv(B=%{+?W_D~}b1>~N zw*-59a@Yr5H0wyC7unnjVGc2EDDlq0{({+~1q(a;N{gLJoJZLNRV9-+h}qulc3VFun!DxMO^ez^<&d9BPJC3v_rrG)nu{7Sa4 zR9JvF(@HH+wbkPo*IwB3Os!uc48g5ZS9~>S!`tl2VqpPpjY)NP<2c!Hi&4;F6St}> zeWCRz!-4v0STTFBql1odElu$aZ)&i75h45=E^`AsCzDF{)9Ggp^3NQaIypna)p1&K z&L9qIa8RZjK2lK7W~w!r>vMFZ8-B}L3j_sSL*Zx-7iFqQo1mauZ>m=(W>x8=>u~rD zPp}{rC=)q|b9$mwuW3oTcGGV75rgvu2z~BemiJ=q)G>s*eoW@n=qlP28fc^c5s-onj)iEY+DFa2^1*;c^X@&n1L^!^_(C z!HzbFXa^n6UBY4K2o8=;4so+lD!ckquGgGw*vJNE3j=UsQrLjMWS__UEWyK>ume#A z{QGR+2w?!uOb9vPE9YNj_=^IDC%cB=xye2}Z!kNX%{!K7HgKIT|AH`aM2U%XPadVQ z3%3CsnSh}b!R3e3H~)r5;WV5J69agv+`&^RCjRsE&A;K!?x9$;;7udg-;Oh%ll`u@ zZfu~ULskx>Z~hIBb_-eIrIBgNk6Sv=;mN+t9V%?V-b9xT2Ts!D!si5zNQDbSYckWl z)O`fOhJDz;A;JKRHH7r3`ErQw$?RtZi+BuS(TF+N-I)E1VBy1*kZv2&-P@EU*uufW z0z3()K91B$=hN75<~#s)!)Uf~kgx%d!ZBDd*ylK8YlA|O^fLtuU&8wI01dUO?sB~T z1J*xK*nltL>{B+}1$q6uY~TQ401kz#qk2!>F-V83qb{xgJDZpxOu(PUP);n(rt?nv zHKso;XgCv2g=N@Lk4LXO&j+vn4%?V6Y`~jvZH5ihL|3P_{u|8iFL?M9E=y50dHu<3 zVLxF3-h@4%eC&4ij_bRbr`l{<0(cWnLtiJk9upAa%9{lZPr|K{dTbD*#AKn@Ic{0M zkgYTcEAS^AhZU*hDtEuMo`wYE#is-hj}qt%>G-t*-ey2?vpsKChfi!)SNg&#(1=)d z8$I5FjW=1xqju}5*CY{Yc1%LSVGVgsMO;sr+jBSPA(bG z_USN*o7I)Rg2d)Av04@N73o6nBCN$ZqSL6ka%yso4x-jzIrCy-2V2YR9)g9xwR3v$ zG@W1b+z*-CU2xE!D3_`u@b?&>DsZ?^t5%L9xVM?39>PQwE=(w%Q5^w4$?&cMo(i}) z&53~TV|a>y;YDRGg-2giKTb~;g$hqbBZ-^TmA-<+&7))0b9x8+@y5Gs&N2Ep_bv^U zPp07f8xD_eTNV;3&B}APa_C8dgtwIov-&M?4&+KkCJF??SX0-LqE~6S@B5v54x?1~ zjGs{6U!h4n3c5OlXWKJfHfg3Aqj;vy)l#3^!4@Y7i*OA0QQ(Zrq9a0IW*ZH{20V1W z=ZD+%#EpufuOM;LXnJ<0(3|SYB{SZa{d}K#R0J=tr*HlZx5v*((Q-LnKj(Yh?DtVv zi76jX-~1cS@(Bc9bRQw==BSd5TR7j4T^uOS(3!y)sIy% zRwFQ|*DYO_OZKI^{NQK?#|aSHqgC5_Ah}>Wi3K`nLYG4NBS>6ThF2!h8>Enm?lZ*C z`I*Mbs|n!WaI>1)WZ!z^Id^bCikE@lVpT-@ea>ynR0;;7m5Y+6rbw)`{GD?(BNYOH zWLXkNs$zQD8Ghw#j}D!a4IT#t!f(2FC~x z9@JZq3$g>{Vp&cl*`yTou@F6&8lc*Sqi5R-IHP&M`I5FM(J0}$sU*&$aCC6z%w(F9)+8_7sF(D-F4u_!=X{z` zx)>BrgoOD;8ICwNX*%(VpkXDHWJmXRCUfpsV?;$@;(r3iPn}ViMQ7X@H5Fk9`|+`Km%!mbl@eXyoT;5Xj~SYIo4kU2m96=X$Z=&zye}AN7F!Fh32H#?;4zyfGVxEr zLw{GRX`9D6*^V_S#}R;M@6IM@P;K0XJA0IxXiax@rTRUw$2f@$B;FNf;FZISetO?y zh6ezNe+V=140qAE`Lq#IS?@>^YFEgScZ3BvRbwrnWh}+cq8din+X90VWf=YH@f;{y53lKiUJ50F@-(30< z2j8Tw^c5to857$JI-SV^+R0Sc@@!v6zL3R|$*lga7AyccU!icODQT~f4P{MvUu+@F ztij##o_QQIe-=Cf9q-J~vyDFq8}MhU*M{TP(wUgw6Q1~^FaoEB zL?o44M+xJ|0h+WE{|CXtA-sf>TLu*o=3Nd~94NbqpnxqqLpc=j?VyDX~l%!-cAj!E^>=-5$J6 z4mX!_p|Ws1GgqrCeFce4W6;tw!`q-7Ir@Mig2W5N@NYQXID~Z1xX!qXiRT3kzjqx% zN3>aI+`=Yy2orE-%1{&D+1DA@vW4e_1voU+3EL+-QlXDcJS$AVp@~DBPIVbafQ;JxW(npvq?;I66tc{uU=urq)FACWn6|csMYT23L3`F;*HPag#Ss2^_AJ zr`BRw9=rb0A7nz6VLk$qzgMWM{(WV@Pj{?H=4P#R40%qcZiA>_(l`Hx$8l^A&2~*s z_jhOMpVb!8Bai-X`zbmIZ42d3P==Ho)j>6mLhiB)>>Sy$_eQfc+GYacx}Yo;pWc%$ zqb634po8yqGwIW3xxT3Hqp`fF&LmB#EzzbB+Ll%8l zdR5~c98iz`)gMhQcr9UPR_!J*1{;6I;aY^j`2ltw6jG}Wm~lYJrU|Q)Tia|6u&Fke zrFH*PvA02n-}7L$-70Li?GhUeANusBTI0t47Z`^O(A~du#~@bVZN;`0t}-bG zIcwo444~-lkb2@d1AH3&)rJ~Z5bwVz+The~g0i)-47cG*ZO}~`pB1Rmr-`m6727d- z4_jI0%)_e=P;9ITvKB@~s13o6=%<*2kmXQms_|q_E1J-ZXbg+-MFUHpCaP)1(__%E zcuUy+DtxR7mMyRXQ4_^#rMe;I$m6RIV;Bk+#sq$M31c{snx^I3(BPCt^y&gzfvmNH z&ZB;)6$g3)qY$+y#tn@UojZuPA&L9kHnFb$kZJ0vOk$ldL>PCd95Kf@M17iQkYZ3w zJsPC2x{p%o^rk9iA!XSUk+ERW`WNKZChO~_sSH8HLKrPiIC=oLB~xO9y`v^=+KXYR zSa>ChpoZ~qXWCfOF?3E~;l(vJkIJ zDLU~4TcRRpoLG&730ZPvA;yFBX@;uh*5DQcX}O)gW|ksi%`k6~wUp~>*P{p0W2jg& zY+Gm@idkqMhllNFL5NuPRNT?&piBw%x%*DgL7Ps}SNd*B9?o~LXJxXfW3XAEG#T_D z6=9zTV9E!QW`fFhoZ2wZjqO&`LN9Q&X@4#E+f6SB7^8H3+uXnoQK~lhG*KQH(f?D+ zOo-Qu_j1Z46~O;?JMRksC)RG&x^Mr7U>@{4IxWo-ZW0p3zFEA z=BRhqRWbz~OJR;SUQucX4}Q7yuG@!6Xjt-P4sZrKj zTD(=pM)dkgj6%$!ubM11C=QG6FTQ=K2%FIcv@DE?I334W)NM}=g!cCq@o%s;^em2b zf;xpCHHi1%(fqWuNL+t9gV3@d#=bh8mk;*gT;Vlx(_m3@J(G~JBvMbOl-iz?>cYK7 zM}fM26QeZ9Hs$a&Q+{bU)}Bcgms5(8TbZLwGTiINS;d8y){EqQOhUzye=&JOnc)QOD)t#j@ed(I3&v$iX z75R=&6Qr#bEF33Cv#+~3jeP@C^>BX2Op1QHf|8%?;x+EF+i_4tO{SrRgqeTTc5 zS^cYuFMKP;ZaX88u*g4<%_OJlk=j0;8oGF54curdA#|*PcR8BWD$@?y($u+e3+qD5 zV(+0;lP)*P^wUA!$s|N9`Oh%9D4lUMH#a`QBy=qKewd_`b!hHj5;~Ur0M%Z2+ukd; z3KY|aT4a2hAY{>hp^Y1gwhX3<3vfl;G|f=6_=o672p{@{d6A;RgHIELEcFq(1ETQu z@GddzERF3=W+DY0OaB|~D$%XUKFr~k%hf_FdlQY#@M(gS1^>gKx&{_EQM%$o zQkKSIiz>g)=Z&q$H}lM;8DbV4!41UG{n-AM%VP_bx+{XAX=(c2TtTAHhMqMrl51UL zk9qS%1;&~oXUS2VGsiBS?`j=x{xmaCund}iHG8Hm&yz7X(~1c`&9HAdL|wJk{?7U4 zV-yu@rXGe;2%qM$$WKgQQyF{X$dM{v<-nA@1}uZ0OOL09z}u_d{7vQ{V!1e$NtPwo zw4^&yxncX|o6lkkP_q^iC=0rxm?qm*&o=**Q3zTTjRij|Z_v`%Zho0T=vWZtVk&Do zMg$Hc)RE%TOwE%?GK`o?qh@8NyPUHNJBT`Gg^%j(ly zCuHi)IL*KgjuHi*=JEJ44m5BHioials8};3EH(jcmnuOht@*syR#%@EH)Lj zOJRI=ng{(XqfoIZ%rUCZLi3L z2IcPFgPzZ-P_pP=2IV7gJ?Q0(Ldl|gn-*7{K;;2%U=TVM+{bA0*-jqx9!8;KQPf+V zGkm_22c@wlKFv_FXcNkBaWlHVZMcO-3HUTq8(}i18C!KqVKd5cHQTqYS5{)p(6wgv zjm7qjFhjA?HcMN&Ta#=Lu2_5fVb~X8&%6S}VXcd;!6R#J|5$9Q-3I%qYaD}|d!`st(4T2|9kCef3aPjl7GSfiPuxsCy`qoZ4|Vj2!xT?|2XHME+k zMVq*lO~74iVg_8N30pLICzCYhF~tLS57ds4Ie5;!R}FTeZM@AkplEFzh$Bc!pOKHY zLnC2)n(6L^@ddq8$c}y*Jkri>l!5p(!v|~UAX;|7lL3SI;UjdLX+^1PG>#mMfwEa4 zjF!KW#32t!OMeE{m8Yc9@J))1HABwAaA#cPeD=0&OhLv{hv2Dvrf4qPl1ui`P2OmE z(@Iean3x}0T(O~|7;RuXdjfT9;By#TvL~3IxX2fVQ=OG0$${^`dASAFvH5TN__MY-Xnu!VDMSfweIw7MrTxN3oO5)$L~B0C8(% zF7{y*mnEVjvI!hM%@DTyJi14m%l7YVjy|PK#G0XNZD3g3pqKTd^>;7}P0P;5LI(x` z?W=Iq)iC++3geKocq^h`yf+Xn{|57rw0s-*;^Is+PpftKG(*$!3+TYAWTuaXP;;|` zSUabM>_|IX>y?>UGqkOpBascpj=ob7ZNrQkpl@wpG&|YaaK949R<5mm>;#0Zfko)M zjRAGnBHD*RHUV90Vlnz|W5RpyV(S@9LeP>+(8gJE*fjhNTY#RmuvDa>-felW6=;j6>Gq%Yb7sVkcVZZKfrGqQ%>h0odrVlkLGa>Z~7O3{&(+p{A;drEgUHgj0 zS1LNz3{i`pfcz`ogp1|}n1`h0zk~*PG=SmKN}a3LFjtTlk-nYx0WDBQ{VaL3bZ1j^RPNyrYhTsmxdzQc^X zC|gYJOk#;GPX&_x#VoNk*RW8PzS4Jd^$5Pft;=s|BH?Ww>eGA@F2;TbM#y@qsW1oi zK2z|-Qk|H77iWlG!H*e*h(*zH$OnaOl&<2i)%r@`&ErO5BE}mUhCU2ydy>0McLt}d zN(!YoJlyp2RO;|)rY_ASOE=nqVz=&RdledMhMr}6L>J^IzriGwED396*iNILcc6c@ zsq+Gd9;dJL-CTqHw(2IKt?i|`ch{v1!YM10#zGqIpGIM~Ge+?u}#zQs(Bps%`{ zX$V<*6(%AM+AN(oTz{RdK-XHyV0YZ0x$iNMRZsewMB10eGx(U=p?=qn=A#8m+a!nN zd&)qp8O~Zs3{;9o3+|K^Q|#fawbG9{CDNQ;;*G7bsoc&Oy1S0up|O(5g{Con# zGI2PYfW9?>W?L*`?Ub1cHUo8Q<`g7#F-J?y__OwI8Uf?eOdW`cSS}VDIao-mozyl< zsU^jyxmI7*@46sXgMOB_Kcq6wtvq+rxDKCYxM=O?VZT%Fb++|tzrU$)*gvJO^xf1k zHCBUs>Q4LZpUv1NT-pDoYthi7$-xmjt5Zvl*C#S$mb*5U+~KWozMP9QJ~m)i$>@{5>N%JXCD>&FH(RFIG*bKb?uX;p8bFd+!8hp<-Ed0F6rq2uo(jVYMgIm8&;i!8Ft?y%nupDQ*76y~XgxAFv_n zdrYO;Mo}2*MroqmNOb|9CJ0*=MK&Hf-NFtT?%h>|jy1u&4Spx2D7ZeXB8&4yIeUou$ zS^S5n1QK^(=Q0K*i``EX8=QTM{*#AQz7l=kMT|qq;t!zS(_R9!6?}u=8Q)EeLd~KN zBB8>l!{zrFgpLItLcPVxF*Zkc6{j!se@zFs-_MzXg!wc*G@82t_3XX9b5g2#{o71G ziYu(rr|B^)Z_exKNn$A|a?10=1_pkFtAQU!LDsvuBiSo>WI|$={V@_)vr*0BrnguY zQWpIQwpOe28NiEUi)^L4+mr`rSm>uH4+O3No=+^5Pg_~CMXSCR9`W}IMc3odl&NkqywSf|&wyzEE!WC7FL)PL? zVs=6<2=&r}b%QAzR6I@D_yr1<>I#OLjNkfCmW7mse~D>df2x23idNCTnFOA~)1an@ zHACM`+XJlO9lsP00i+7vy*O8!vJbbc%2QCGS1P3RA;v~!zkg}#P22UAzMCEyf%cwN zu-Le+oeo4QO^P4>k6FaP>ii15qhT==O(pw0^!;O)hG&-kHFD6<^ok1{4PQuiy0*IA zU&A;AE&dzN47!cOKBBMm-Sp@fEDGS6HUB(xst(-*r>w%$XrO1OaWI1)o5UELvDh<+ z7ZZB?JUHaQNn4-q`Xb{{viP%TKN#1eXXj%sJlu#iLCvDi;l4_^YnaBCN{^nhPF&9G zElm)%mUbX#hgfRIqpYRn;&O5wpC)Kq`gyb|VcG%yUU9J|NLla&6x`{i z_|OUpf0{b?p{MzASDjDcp}Q9Y$u;sZa2v<_TQ${`$JJEiLG0q2t?uKs&2^0R?@uyQ z5X@?1j+&mJPijf0GT6a&Kxy3Wzn4)+Sh+PwlrZW5sTSkY1RV>mMXx{)2WdSA^l!z) znxJ5zbtr`Mk8YdSl`bsCHb8nomEueB2aaVNIu<__n!p#&UhaNS=K+)L(6P{0kT`(! z}PWNCR|ynxJP5e2wDkFi;xb2k%jItO=SH|GLKM z3_|Kgqmt_Y#-V6&G~e}5Z|}@yGxVH@JLV6Vu@TfPdK#UYh-X6GBi#p2W;N;{Ou_vo zhEvEH|7i8$c}&5$rM`vMOi(jQQ|4hR>G(83z+&GHV~*1PFl8h@O;E7dcf#0#4mC;z ze43zOF$}Y%lQSI{IfqXZ6fB0xqDT>!m}vkYV5#qgD3{hkQi2vuMosFU5uy%qc(_DC zu_oBJ)R`fw_;wiEL_OTj6zp5-tPoXvGfa^>jw#r;)Y&1b_*R%A^<}1D-%{s2Wl6r{JSUyOdIzCO%w015Gtw9g5`yJ-NRWp%F< zaMVzFyQwcwv+z|rF-bdcI{Cnw$Fw=~|#UwO0O#MH~&I8V_qWs@CB%wnffk5cZ z-Mf45hGYZQpUNg7A&@}K1`q_p-QAnbCEM7N5G#lkR~Jnf(@~t z0(M#c&pYRx_nv!a&Vm1YKJG4Yp7%R_-kCFJ&gx2k^5v>1f2Z;(kER{(BFaZ5r>pN* zKIPD~Gu}k`$TW5JgUY8ons#Q_Ig#{-z2xdgm6j1sdrABG$pD??KEnK78B~n9fJW*! zDVsj?WnJT%nF=Cc;F}l^1;}}naZRUkh#1G1KTF)EQz~5Q72o2#O8PIM9S!4fIHs+y zZfY23UbvHsS7_IX#6fR4tgsU|SA_Y$O8Z!Q$_Z)5N!W+j+D`Z@?$TW~O_frvNIR~= z3}YjDyD5`$MB14oXBpFQFI2s_U#48j6=}y+*sIRT3Mv%5W`%+&Z=@Y>Vc$lO*Z3lD zTV12mg(z8}<21}^gt=@eb@OUH&FfS;<(#zRJj^zFan%hGkyMM1L1<5TDDC(Vbzw!j zqQWxQ3Z3#)+VLk+bZzb0TJOZbc%(^O^EstcK1(~Zf4xb#O~L3z8P`0ZY|49S$I+;l zcCw+ks8av_N4>m$rLedfzW?HG)Y}F-_>s3dula*=DUYU|BG}u?dFg0;FX)=5luS7_ z?Kl|qR<*p=zb?`+uH9EbDQTZne2Ti{^4d8QsT=Dolh+=pWXg|e$A74o(25Fg!(_<5 zRN<8S(vClIfaMg}&FC3T^4cynkn&jC83I!3HJ&SFs4r7kJQ$y8Cd_)n;E|S74;%Eg zXDTb>jc1ty>rL{+VcyOfSTxZSadEF5R9dEIPvZ;iXZb#9q;k$gHN$sD@ZOC^iEot|q%fMA{$V!jL(tMx7$Qk_kbUCdaj*L&& zZc$7INU!;Ybc$CGa|eCaknxDp2pN5Oy7xFA1y3hZ$iGzs(m6>oz{jh9UHTvDTru(Ym|d5F-CvRQbV z`bsA1t|c-T4391uh|dYv@8sx0JEDfO#?c3dda#1Wm!b0YFH{sYL;peAll{kPb?CX$ ze*H4FfS_6UXWGJX!+cxPN-&a!Q`G{xX5n94(?pT8B9?#ht>qOz(5MLb(EhLGg_&AV z+#H#@;MS&r>wE$I7s%JpGgd%dL*uI|8|3!YNaFevo%a8w&`D+xRrGH&N623*iI9mt z%T9Pg%B##Fbi?inA>pACe`*GSc#k=P?XMX24I`s_d9CU=XUDrEU|Rx;hJo8PfeT~c zQ3^_NYLS+vTDiE(2{W?z3MG*-a$1VyIw-y#5xFPjh80SpW90M{Il)tuq1YveH>mGY zLdVGM>vh4)+L5wR=b?mzK|9ptM)` z)D~6g4kOjr{C~r>4lI<=FmmTQ>E9_2HE-NgN$DZJ8h5dR;cfJd5on%5NEoy$YXr^S zrrv?*V0&YiatIi=n~5#1#+vqxuTlsBgXksNjpV|ZND8l02%F4X+le-uZ@aGbX}Njg35ZpDhww<|3^h_4E~ zrvn;jUOcY$Wyt?S4T!(!4KSGR-(bK$=nWH~?YvMDm(BCEsz!bltA-5yzp1`VAf9Ih z)5yztiVXfw%1cZ3{6WpUdtrp#+c5nb5HSM}u^z71 zQbYuARSps34z)J6bT}&JYY72^4y%hL7g>a2H_1p&C?R0n;pTU^*F-Zq`AyOw2qk0; zJp!*bX&C8`6-IRZ%!QW0FR)U@Asbp4-Nm`-v!aPAN(Q#rMB+TT_?qFSZ#uA0LdM8e z%W6WhrxEFbH$A8*LWUNbP_BWBjPp1BQBjl(#idctH&K;&I#NbYD~gh#?KW;Wba7>L zz4K%uxF0uAGrSbR7_|i;l!oT5W#gH(J)T{I4 zzOxw-yGSYVP5eOAX-$4bZD@GBG7<6eZoW%FDIgCnunE8&5MKo=r?x}c>;IxOQbse= z`aBK~t&djX-xNd0u%qjFoERL8RQ)Yd0fZ6)M!nF+gcU-qT*s9l!;xzdZ+W9*3ngR> zev#FpzAhc+@RqBTL&&%nTf?cpW*tFqP!t(M8Su3xSDwBwHrU=eLn%azdZ{Ip+bwIo zl}J_Ga-VW2827RiH`G57+g`lo3FXi*?*FVSt{mo)mAIRK%fFOF#mJXi<*%yr^u+qp zty1ZP5+a7NC{lNkSA{d?gj2ib?)XNo0&%WJSsg6XUV#ey`h8 zF+>boY&|3W?r$WUe^(eCgO9a_BL_a1bVKg8smdW_+!EvT5~T>YOgS`+TgoP6GPR$^ zl_bO5d>38F-gdIG=oot(n~+tvS5j%Xl>C+NOd_{yJC*-x|Mx+>8{{H)E$bSWOTkYX zS|sPpVhhXL`VtEzl4o)x|F8@T&e4nH_yRRUO3lpi<|UGl4Z}4)x+vQ{u^qPS#mOVM zml6FKeS(eA4ScA6eT&j4n)>pBzi_u}ne5ZaQM+p2!cEDegwV)M*Qya@&BzLC(p}4z z3{A2%^NzHrm(%4mP;!*;d^y#2k3qiFal>&;!u z_}WCoA-w(9ilJm!ccETkD~2~zrB6@vuR8@lmYusu(*3ZGo*7xqD^$MeIwQjy`O@gv zD!$q_TI-EZ@wadvKvSuk`5_Ltt?A-?4_1u zAn;w`R4Vv6EOqn#RIGX3AqzJ`Nt`@y@71Z?xrUWr&37E?OcY9_!)%)?OL|7GF0mgEBOxbW(g(KjC+j@rOI`0tVJfNJLWsIP(sJpGg2MPw~A=5 zzT;@6Q8SvER#*OA%en_S&9F|S2cu6&?hrSHP(soSyf&3|=DJPYyt*5C*nWph$b^zi z?Y`31q{US>senki$y7%uA!r89vYEYWSyn~e{$0TUQ8TcTs;Je~!I8*7a)%6lgwk33 z@G0&|%>X)ECWBcd!DvV*$#2j1rV^YreBN=k;|e9j3}jZ*b#&LV1k7k6BMPHraFvFg zJT>+=0J=@0O7z8wJ9G*z$wcbYy_Q4TRX5r7C6~lEJQ3@DA4;$i=`_WDN;-MUQROK|KL2UuNu}}Y81lJ#Cb_sZAHP{~Bn_{Diwo`6 z()sv_S8Gklyh%M*`$ z()*%_89Bj#vM71%kq`TM4k?2-AS=&4^2rx!f{`+EqmVoR$tPc-BsxZ(OM>+&NIu-9 zFj59@lGVRF3du)h%|IxjW$1Y_zYbJKcr>4X`OsbBG7?IN8T~qhm(+N?kuNNB6QP8d zp|4kTVLs|-3zQ6f18MdTI`V1hKZFuuM!%6sil-g<;F}y*C?RFw`Bbhv^2jIOr6e*& zUO=_UB;IQS>|5X}Iqu);Ylg(<` z=g#GSv7_=R8vhRFsALN_pWRbg^o)Hc+V$<6UIs zHy=Ghb)~iY26GW5?zeUG>BUMTX7qa~F~0i7?rc8Wtt@KBzE=`0o2~h%Oyz_UQifhk zVd<7>J}fz{nmV5dIzC|pz-e~-EPx0AN4L6a)y3@bnDJ*J}eNSgqFdK zGQe*8H6Q+lV+$qJ491<^S2wlu;qNOfW14RxAEuU*ZPE;WJboNrRb^_SKbSJ}gc;p@f>jm#~0NZNBCk z5PyhJl1b3Fwo5s)HpmNw0}boB<0XNF_WvZm-QWLRpkJoQJ9~Dwk|k1RBA>yZa1W(y zJr=H(@4h0DDv=@sFXQlq1LF@f?!HAC1dL%_kzA3KEPx_P_b7#Rqdv!efGTC3JG=Y$ z%AsJ~=Nq}$v9o)oD~E=0U+_hebL#9KKW!pn;N^8N^U&En`>7%-27b}XGJ10Co>pZL zFy>1pCd=4(CEQa|5CH?f%;^MIoEhiF?pdY~3I=_}tJ!)eth{?pQxF9MziMFisj+)x zHYAi#G4N}?OyY;e?vX4JN(dP9b@qajtYw`UyLXnO3MI@N#ypWU<@k}Ydk<3v^TvGB znCOYIdwt2v9OOInw|vQG9Q?XhmQ;ii#tr(mZ^eF{6BhivA9Prugn)71@nRW|e(t?P zAp{KiZXJrA`nvaig|KeW_tH@0(AT{WD};4}m|l}k?UzE4Z2eg|1dRIun_aGoqes5( z+es0by?wF&&{tLb#MgZXD1&KZe&mzq7d~O~?kg*Yed8D@lNOkHV(7l5iXmaxl|G5_ z14H+ntc(oAK3hLFsjTxt_w_4=dBc9?#@MTTsmRhKe&pvqDMdmF z9pirLTZmhfM8tesM8Ke{{bZ4K2IczWkwGhZBj-4N#N{-=pgC?Q~C*ZC?)Rt&2vTw)iw)##Vg99k%$W9;>o(Dm|I?$eoZEaQQd3Sr-%o4i)$sf-7F2gkl) zH`lR@Lm3Y&QZ*C|!$V12pPVxp4=hy>4FhlWEi>y##sjZWN}M3yUvKjzl5w!&fwL9D zyg|47G@1t=wy_7^pdbnc(xZ~`HTzh_1LABFN{ASDrx!G@JtFvd#}!J_ZGHCc@|BQz zz~O<%6+^?YUwAC@e8YpsD29SzcgNrPx7UA$6Gncvjc^y7f9GGmN4uKu>4uqla8-ho zNRi3hQz#tbQ9n^72hHL)T0A(eMo6C-xtC2WZ-lq@7S>{~XI=VCLbjb#C*?vYOS#-u z*}Z8f^3?Ldx2PzoHPQQ0s9c00mj*>LeUYN1(a`%TTb|!@e4t_BacD7#+cuK?mY;3s z>|L0ZT&AJ>)e(&kB=Jim$uxdR^GvwR!}AY*LOIf7+yku05>Ag&XUr%Menw%041Q2n z!Y*TJc*W{SnkB7-5_*Pjmeqe6U)C2p0{$Q}5=!#h_l_-Y^)F?r(!xfSA98S^gqqP? zo9X4X4bi8-56V^-wtfxlf{_4JQ69nKdA-DhtK^Z z9016$5KG189n=QOW@DSxe7@tdd2fXgHTY54K5Ae2xxQ_) zP9g2+7uuO+mjV%(4E4hffa+t22|IjYc(gkh{& z-38PMnss;emOT_j#n7v`(5+{*x{--_Y@ANq;5?NcO^CKy@>_nkojs$lzq{Td{VB=# z`!HMfO}KVcOpyibfdSu*e#|Y|a)4U+Y0APiF$>8@D8q8zai(jKW%En(u?I%^XY^Z;<+E?Q|)YuXAzxA@~$V(7E=uFJDt*@JF z8;qJei8DK+oNKO|4a?{UIxn{kq|6QBI0mVUurJZ1An$Y5#zKa#eTn1vyb9<1#6&v< z>P@s?UnsP6^Rd&=KweI^yiH9}wq}YI{$X)bN&do2ZMjIzkP0)ynt%WL?R=W9jE4Ve zM^N2oQwTy;;v06aYQg9O|cS8%(ZIi-|oo(InQ8k3T8Dd``OiE@C z`lMPw-Yl?3utRn2+G=m(eb_5b(6|gqKD1x86Q2=qv)jUno*uc(HB#cANusxtG!wbi z2H-^l)yk0EW)>m8s3b`;@;3a~L~_vt7cWF8aVH4vXc%?7QO8wA2O|^d7MTVK?btVp z{RGvLt2$zoObvu~>>G8bEOlL>EF0>jtJEs7>*=>>IkqEW=v{cQ2}-NpxTF$09lPZk z075%D2L8gPm(}ao3ynBwTcqC*+R-rVZrtodPd-%;Da+3}rqGUkgK$=M7@OeTpX#9e zoA*Bt(rK^l?1Yh@ZR-#68Cq5Ct&K!4^x7f~gV0WDOoR=9S=|#o&V$VGTR;0jhZWiw z&paoa0S7d23u%>oL)EcZk!(#2w38!mp#46^f<^<`E&B=ONv!cWWQ_^PYv50+0YuHf zFIiGFBp|Du|6O5m0jUQG?GG?KH^7T4gS5D3iAVUIlt*P699J1wyE1+!!Io#$fGh;P{x;_N27MX-Lh-G$l$AVq_R)Z46pXNQlts%}%JaYm z-Mq1I>%nRPMYHhh=F;bmo!VH96KK(UWVar!Hl!wf4)EX`bASBAVC2@Vt!>JpX)HSn zjkPat)X1=$(Gfb-hO8RAKAQ}U)#q$v^n^>*Kx#{)oxO&}&gecccnakZdtGn*8vp0!GR&G~x5{izXh+d# zrisSk%)Lj5n^+lN7j=BL%1lUTN7t&c})3loLwQdNh>&Fpb0OymY#Z zMa#K4pZ3_QQ$V>DQf10*6j~pbg%9_f-Ruyb`1(YlT=Y_fLb+{+!Yr5dQ)}bvR#aoR zjBl0xO(>W6;dK~1_A$@#m>c5TC|SW>vA-uArZ>xnC6j8P3gVs9Gtcz zp^TK_^N@90$vNE94l9(AGHyQpP5r9t9Qa=fBV=$VaDAPW1FL6KM$O;_oYfeu@-D2K z$K_Qc`M-Q8I8pXp2vX-hl-sv2?6GLw#L)Uh!^5Ky_eJJv31t#yI!Cd%S+=S{D6Gnd zbk;1BDkE8~@4kFE`Se}{*+--hL%@(1x=r>ZQ}RWQ_=CWQuq>f0zkQ>7QK8V`l3C&1 z&<#~yb|2`oqB+86fJJR=q<%=7eVGK9#TPSMWLk`5NSY&|OiIkgOITj;E~k95P5#YS z&q=$xsD*NS@>_nEOWVuKG~?^4eWR6u%nuJe^nZ$yJd=4Tm9(fjNEhX+eT>8miID^@ zRgy#*`7&08$x1(~XqGF5hEb$p_VP;4CcZ&BzAjtvG({0H^yMt>PO9MjW@Be5COP%h z`wCf1ZW^r&*7~wR#$E|!Gz@$t&llX-+A06!E1+AQi_#w);eM3xojI(AR5xqi15i*$3be}q`4L`!F16D%J*ng*mtr17yyHr?)ZlCJ^&C`Zf4}Vv2(q;IwR7w-RA-2MPNS1?y5_%pM_hC*NURR$Zl!`bu+S)uk%z&BDFS0Q8W$RnF-Tnf_MIF zqmhlchh)4Ulo2s%7hl&L;Hr!;9hC7=wiNH8R|SNVRj}v<$@9&OP3{YB-kAy>Ak|^ta@<{471WL*WJJ^j5~1v8sKmhX;GcxL&O~)-}|( zgnhi|r!ltqfkkFjpW@l+vDz>G;&b4(3zHO-_fGNqu)MW_$@5EC{xGjao{em~SZ$zd zX&{G(WZH;4V%+8@4aCg|vuu6RaS5r8ZjyqD)WD}T5mL0iAoi1{<7*(z#}e=*H6T;F zH?Tk3Z^N=Am4ET$Yq5Ydlzdv_?8_%zI1|fT)=`M5eAL z6Pb(fZL&-xlo2)yhlYtTcQGu*M`aa3C?CQPpATk{{hAWt>OO*ti%Te@YWU&OFB3%f-QQ17n`FXchoo^VW|Oo9w*p@}75W9Ej^>c%|&Q4u4Q5i-7&!WB2U+9w-Mx%iQeE|ifp zyjUpgT0NJiGrSGLd@>;ahwn^>ADsYg;)rQzJ7J2xynJe9wCmi6^ZKRlBvISe@>{E* zZ5>6^R~?ZPTtmH^I(jR;>r#(`mbARMNA2s3@BZr)zHBp4Yy7g!dGARgmRBpluky*$ z3ayKHMSRgZ`I-$EZ;nfLYrL}Ftu zf(=Jm};6BVfj)u#TJ9&g7=UnP`j_O&^ zn3k27UO6|x%CF(~cKY{gvke^8XyD|@p%*96;7gO=@^kQIY-$hj%ydIFHDfM$!SA(~ z7ARp0r|w?ZmCq&(buC}eIk#^>T7s6;k{3MoCXMzri(V*vou-ojFFYy$eytISWC7o3 z&&r00@!CMg`1pp7qvtnMzwOev>P5N#`X+m+XV->CCdNDZ&V6x!oTdoTEPM;0I-$QnkK+F8 zdnAwEFu3;Iv5jGle)mg7h-LvZGX)u0Fu-e5Qs~V}kL{(Ay`ualzRgYp8_(_^2x7~s zNP>Dl?(ZM+tkT5}6ZKfHi%}>L$HI^B-^Vs`FK1gYJ%!Wmz;W_}=~{klUMo)@a}$gP>|49N2mrH;N7 zNwW83sv4gdOA;FDU7!>irq|y@g<5Y{N{Yp&k{NO)XEq0iIWpf{8K_1wr&C`C0*2L^ zu~6*;s)mALXX8fq4-aHYeM}k58?(NF33aqjbzs|=0X%(9qRYIWS8bQ691?~O#?Vmp z3yPv-=nyHbjSdfG735cxLBg2f1}4J&&lLNeH{rq zq=ox7Gm2L=SQ#9oFRYyyjkK5>h)n1}$e^)CC{()HF@+AS8#K+oBvA#xcI^#WqrYKX_O{L=1dg2!@KkQBX!PpTpNv(XI!$lT?vnd|V+E z40=N&6e>NT5Y`QPBVBc)Jh{%#-BXI9Vd(iWG*q2b6eUA1;JkpFP#b3_>0ktzUwr5| zYiVIdWnj3?zZDZcrz=ZiZSQ%^^^R@;i%+C?ZVA~ibw|cpahxut! z2HVEGqk%apD1#1VWa9MA`<+a)J^G>3AqS1O8%q3>}{geqEzVdTXOYrVt0!$T9}WRPvOHDRk-p&Tm4y)WRxmh~#-&@k@(0T;Hela)im zIGmZ8y*L!?SkU*!#`vOTbG4tY7!rnk5NGr33NHhU2GMn#=)kf?{}7v-@=e|Kynj5l z2InuiqdQ>xR0{LPepqHaV|$Wsi#DfGd@(`?LI!@ML9|EiEQJmeES?Ub10iESO0lFw z<^Hs0$#Wc4=s?CW+`Lpid*lkWsH9Asgbrkk{dfc0YxkNp>&lcw=s?TZPtY;y$>qB> z?&{(o$rlI+ij<+Bq>0zj{@Q4Tm&O881~EbhLPmb7k<{y=nv*Mo1)&2SBk^ogRXR{R zk0UdIr1V2V2Qmg;(jci0R6t7mCUhWUpr#9EbF~>qzwI>cvRM5Mmd{4 z9AxyX#3ythW8CK(GCIznzz$|We#?P{4pfXJ6{$9~VPe1?!)#9L_mxD)$jfn$hU9zE z3_inykumZLg(RcCY`)kCg#+X@3Sr%#FEv8p=y-!dSU2d)jZirG-mDPT4PrHv&Qm!1 z-l-7Q4WdG3j#LH)rPz6uk`2b7|F8Nt^W4SY^b$V%n_sC*@Euj@Gu@ITP$c zkMX=APt)-)&Z8AXvW^t(;y z*f@#Z)TBD;cc42^GW2`26R)~~ueJx!9Mwa^AUe@LX(*o7$-+U(B4X?hn%RuRmX(zb z>x<}z^~A>fwaLPKg%C05M|D95WhM4#Wf3u!j_)&?uo;PcnX+gZdu6>1L|nbe!ZFIo z;Nmm*<9bC3la%6?L5U$ zFzm)=EX>>aipebGo8-@FSIL5WO={1(smh<3^mTVu3Z-JEvwtwyu#~UJBueP0B){F? zJ!kR|Ntg0tw5aBJXR`3lBz6b6u%z9@UN&QYvj;U$~Bz|^U zGox`mp(sLzK1|`H(P$HUQb8#sUpV-=Gy1r2drj}~@cKyg{Z|JZ<`{Xl-82fQ z-9iV34R}=EK}Dq6-|T2l7XGOM7`6CR$Zni;7{j3eppE64cX?H#ozo&2^qIsCD@v&<0A5Y?sR0o0%K4m|Rk4=kDOWmT)Fq!ya)H3SjNadt!`h5MBCTU!>b`~gwf>D1HHF?UJJwH!*p>ik~N8e6y z@!Y*sIW&xWih-l9myx}fD<}hq&)(BgnwHRL{<;)H!?3?II)5moN2yUoFz%7L{JD=qCWe3p#@B6%vm2B}!dNoN zaVXh|WqTo%J1;>*!jSDi+#}zO+XM2b&~a4yr<9)lC(OiuBscFKhcVcVc- zw2K6a&9(1PLS{rSGo6&_9&cp2o$_u)Fl-1@h`kj0G#GDIZb>>&7q*@5xKBz3T@yC1}t)KBg4b zjoO(>Yh+?zB#8Vejf`1~ybH-1t@Lmo*w|VYL;-WDG8i?6$$nR=WNob{cn&l<<+BQ4 z*nr*02fGkC!}{e)i67xhZ1)ru@2y`}3j0RQpp$#8jL!OX#SkzIe`F7jMf>Wv6vDni zds5P4bhx0@zN?Y3YLREs(%dbsl))17}O-f+bh?VBLz0dG4A*Pc&8$mHe^59a1`V@2G6^dMZ(zqIT*>X5o|Y4PPtEGW8GpOKoc96 z8>(>-dCV6qPp3Sn5M~X+(cF=Pb7ADI8X2n=`5+YBj$hWmv`rzb8gwwzn>%%q(>-M! zK$wewafdW;@fIq+H(@Rs#vO{+RoBaCrhjx?VeTO*@GyFI9gMcTzbJ-==^aibojcMW zZXrw&4~sAt!xsApd^ER%mb>>>abTgNr%uX=#~G>px?WDti&g&?K#xpRgz}lmZ}<0W zrxm91TrnN5@>KHwmwQw3`gSbrk-RL&eUD2|Ue?@!wv$~C%-y`LaP4LGe1EC^C0-ICCORRc~3(6c7N#_M)I z8CW&oHFY3VkZGLIfmH*}pb{uho~6kqPT-tuC-V!T1H;BpA$zgI8wxY+G*X{j>BY~B}N8@ zM?#JFD1lugeuuAY2kLTK%lnl@!Pv(*vSMs*gZZ%1s2TnH3_8r|$CXCU=*Pv4;4ojb z&wfe)BnW-bOc@LtgUgy?!h~I}47QE=lVr;u7tAe`uPTj-(SOdML+x)V zjh@j@FfMV(wK|Yfk>6DgCFAh1C*EI^GCdK>s2KQ9Cb!mNBgQ(*YPtNs&q#}8T*F)k3tkI zxAdiD6Ut~9_)G|f36%yyD5GNFBn`Zeqmb@AWKM^aVkDFiGWJ=TsIj?8mZTEOsCl}B zKcjS*ZgeD+<+nOF9sHgpPd8Jt&Fy>YG=~*L$++!sZmJa?K1yDL1~7FeMMTC+O{D=i zB+&{XzqZ4+L1?F;AX8KKP$jGzG@WtEAEvgt2(mRxNy(m1CCW;h_Bosx zWy4ZEL0PnnrG-ay1Lt_^N@dY9b}yzA`IZS6{yPUFEZWsdNk8(b-J5#!R8|SSS~(Pq zn;mdr4$n{y4ddvCO?qMO&QcByU=c92S2^kHK7Vsq`jWq~YFHd=H9Dp(`hGro zn47aTIuF9`D1uc(4)REJi81v& zMX+qh!63==$mnqM21T%J$RRl1`c6ocd6P1jHs(;-L`h!xP1;#7c)nFBtQ&P0!-Z0^ ze=`z5?@$Qy1|2TRs}0tAGlVWu2IIys49_0q1&;9w$6*+lGCKUliXvg?3%H`sqlsb$ z{9%P<$oF;J5{JX)_X&kjGq^PlhmG-4g;6t@d4zX^hSpa%<>dEs3Zi6Sn-rA;b94J8 zMPB1@LbVvDv6Mh%zHf5=7nrtmL3fn(D#+Vz7aT1GaWHT z_v5Pg2zG^H7&mM#Tem~QuJQw!pK5&Z$$V)XNe$@3bE|>?{F#CnH;@T=wt}hB2+*4p zMaR(j^bHPU)p{#K(XM;DGDsNHDO=15lgNc*={<^J-mnGDSXj{yD29SzcnyteVRPQ9 z7z&0R?K0-x8H;A@QDrc1%nR|v?QOACNrw6Rt_{CA$q7I3mxbfdTb00t3qZjLI+BQ;y}-IFHTx& zgL;smoX~-aVM`^K^1fv%tpO;*9-#vb1COIB0!sQ;XH@AJAz-j>%<}99hTBQj3FY55>>4qlgd6SyVwDouH3Ii~=j72&5dCD0 zj!}!g(Fw>yoyu77sD0Y$N?_E8b5lg{_?L0E|mBX*f!!Vk}BGHnBjN0$b~XCEjAW*(e2?N7w^{iShViGQ0!X74eG{2`5uHH-Xq((QH+gV-O_*qF1};tdD|;ME>{H8hEQfR62u)p516kggK1+f zqK*@W^Nj)VO(mo@e8S$tw3HB=c*-*zyyr6QI|^aip!YIBt*wo%tAs7X59Qdk=okCw z;plXQTF0VAr~VV`;UI98M#rK>f4`3&jsVwabZJpO!yoX`j|$4?dX0`ni~d0${pcY2 z%^Dqx7M<7A^XRHF|Kr(&V&XXmn}dKJ6dz(ZhngPorbeqJPv!4-4`^ zjgCc&PUqNxP3a)v4{Kb^S=^7)A7yJfi2N&!EIrL9`xCUv{+gT2gNv6Yr~OU|Od9b? z#*+9wC6m)0*Z5eq_@AQ3%Pw@-9{;Sdv1qaB)Gl^dihtGE*t6J|XzZ{MpVrtiNcg;7 zDk+cNlQKE&Um72a7XLGhK7JQ8D9ryUfKdZ33?1?=8R4EV>cSc+)~#QCR2}6mQa>H?(=smu78q0zM;0BfjpMU z&pWPAM##Y1xRbaU%vAoe8bHkq+}@-d&F z_IcHw(Mq5s?V3==y2ZYi;nc+rMuO?mObBHRT69L_oul_2O-^@_iGEos`sWxp;zRm{F&{SmR^S;(y!X2XpH5 zmuY+%UVQ4mWAVej^h%A7O^g3siyt_7(-&!cY+C&9S^U7uo4!=zW7Fa@j%j`aH*fk0 z8Xub$A1_zq2Y%l4lQh1JjXu9WwD>Oy%72x{$EL;qk;Q*;5dRd7k4=luV7gQ67O=_b zr)z91TI?(7l3e7-!EikPu)@|TA|tfVz>n#Ye)lR!QLh5nHGrXdmIv0Xb00VhxPIj@ zZX6!|E?j%e9c;myL(>N|zDxr?VLv4=W9wPJ@xI|u*jPst!K@)yr;#xGc;en#%&x3W!6zd++-*y3L&BFQao@zMN3g)nT;^@zkT zaGRX|c8!l=i_ct`zK}immbcyFepUj@&vJ#A6`J3du!w`Hh(nnN%BSC%L@N*R+t)W0 znsK0fx=g-=@-RPq^mAlp=pE!P(Av=2VgA{_0`bh`G8dcs=2OwnUcYlb3dWXdHmL5Zh1ZLIV>8e(P>wX4xhV;AN~s-A+K(E%j;4+ePRDaE_u(*`|P1< z`V{-D#d45wDTh@@N%mN%D-I2zMf#mj_xbq8$GT6sa1lXuRke?IJ4S0g6MS$yH1I{o z7h0r_y@3nx!j|zu(Lz}a$eSS{Ci5Pl1uetggrj>xb<=S?4;WwvEGT1{%LpwO@WV^J znQog^Co&V(1Lwq88-G#vx|7aElj11!-N);jC?Bx z1JdN;` z%4|4Zi?thBJ`!4FX!HqvCuMu`NFNuj9lL=>pIMKx3M90kVeGqTG6}n4c&HX_X?HlP z(1MI%?=BRkRz}jV4_@*^aqtK&nDn9L-P;#-cU8SS+8XaoBDPKAx8|m8dy0LLdrRq9 zj$My$ij(&%IXy-0Kwc7(s&e1651R4=iXmcxJF+1py(TWSMG1@>v6EEN@OW)_D9${j z43>@AnKscq(IY~6=p%|EVdyTgd(tntV(%ns3w7Z`%SA7hPoUDZy0~HO6fR2-TitJx z$VG8Rw9Jd6l$^sB=^fc2_B+Lx!wh2r+B3nDYo$W!aitJ2irHx2gu+*#q4T%920Ey$ zKPfEpoKGoJ)E*8#KDi7!fSyoD<~$EESMBAX6XoVt{^HW<0Q{?hG6{N+Nh?X}N^VMB zO>&nfH>C!!PF+Qr6+O%}wzpF?m>tT1{D;cQ{OHL|bm#_hCC z+pV{s2Fm|d8a1Pt24^|?RdNSvx7>jmaQ{^w}%4?k;^K2io6g6J8~Yinj9_NmU&LI`Syk=jWg-8W%7CA(d}(!B_qa!F?5!N!fRYiyFZda$#YhxSxVDyLj+Dji8ii z2p*syDh9rnUY<&7H+L@#gyca=B4gym3}?;c61jsgNbn&_qh<8_m@R}}%){DaxdtzQ z4pRsjgWk`eFVGVDc*=_l;Ug4A#o!MxfC_w^yKQT=e2z5`ZBY&(<36a|Ny$a=(Zm*& zL&LZa(IG`|m3szU9o3II2Ab{4qGRlb*+&qzTRvA6CbOgn5{7(4lj)Ey`S@4Jbts2< z<38#+xgKRKUMzE!L&La_XXV>k zI+aAq$WLg8K6!{QFOG82j$MHf@(Ywl&G=7hN6DMijyzgH#0>nDR>`YZE{*l(7b${$ zLq5&0DzzxnQbvuuL@}%zc8QKT*|X=%ltRF$OQ}beebs^br{aPFeYtWd821?xx$<=B zxS8|bD-}b+u*+Bxuc~ZZBKJK#=fv5i2GBACpC!FX*T^1Q7b%CBai3$ZR4y{@hK=A@ zwSk`5_`EzD<(z2xO5{s^RMVI!_)z@(-s;M*ZaGefP+*y2U*WeOj=!c=m`xq8)K^o~ z*BLQf71CIeucC-#sJL8NR7~+3RHI`T(v9QTiHad(*f;489-}|S!IcW4Vc@q+k2lie z*eb=)FznlgapWnEbt{H~Vc+p3v&er7CC;9#EHcJ^7k|TL@mT#9N*p~!QKSt09@Xg3 zCBx^&saGq7h*95XaC6ksgu?sS{(IJWEM*jJ(p5E0Zs%#L0@1=otB9Kgg|;qqT9aS2cYMKAPV* z$`yZ|!U!6C6YW**t`EYK1S&?hyBDI3JS@{JGNtb!K z?0b|&)!4gf!R%^0ck{nkVZ;o+r%*UzY4Yl~cTvS1AInX}2hOx(wazLd#l=y?uKA66Skn~nPmh5hQQ*W6ruRB>bt|0TIt#&?jOXD(z(LMWnY zCLX|-O15`%)n%bTD57ZSgKQTt33j{h{^io25f&OTqc@ZF`WA66E{;B-h@jzH!0YSx zT>J};E)-ETd@IAb-zr`_Ji*PQva6YE=8I|uWi#^-72wSz+ts-yzN98lHxmytwwa0H z{#^bm$|Gz1Bh1d8cU#xF7G$MBD57c>wlO<<3t1c3M~cf&C?aRzqYP*UK3DOH15YS! z
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