From 6111c8de9efb555c732b513561b070099d69209e Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Sat, 11 Jul 2020 13:03:53 +0300 Subject: [PATCH 1/9] Add Lemurs Added lemurs into avatar mod. --- build.gradle | 4 + .../api/capabilities/IPlayerShoulders.java | 25 + .../avatar/client/render/ModelLemur.java | 1550 +++++++++++++++ .../client/render/ModelLlibraryLemur.java | 1764 +++++++++++++++++ .../client/render/RenderAscendedLemur.java | 46 + .../render/RenderAscendedLlibraryLemur.java | 46 + .../avatar/client/render/RenderLemur.java | 49 + .../client/render/RenderLlibraryLemur.java | 49 + .../avatar/client/sounds/SoundsHandler.java | 30 + .../CapabilityPlayerShoulders.java | 33 + .../capabilities/PlayerShoulderProvider.java | 22 + .../capabilities/PlayerShouldersHandler.java | 64 + .../entity/EntityAscendedFlyingLemur.java | 686 +++++++ .../common/entity/EntityFlyingLemur.java | 695 +++++++ .../common/event/CapabilityHandler.java | 19 + .../avatar/network/AvatarClientProxy.java | 9 + .../avatar/util/event/ServerEventHandler.java | 123 +- .../resources/assets/avatarmod/sounds.json | 22 + .../avatarmod/sounds/entity/momo/ambient.ogg | Bin 0 -> 52430 bytes .../avatarmod/sounds/entity/momo/death.ogg | Bin 0 -> 34012 bytes .../avatarmod/sounds/entity/momo/hurt.ogg | Bin 0 -> 26348 bytes .../avatarmod/textures/entity/lemur.png | Bin 0 -> 61789 bytes 22 files changed, 5230 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/crowsofwar/avatar/api/capabilities/IPlayerShoulders.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/client/sounds/SoundsHandler.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/capabilities/CapabilityPlayerShoulders.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShoulderProvider.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShouldersHandler.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/event/CapabilityHandler.java create mode 100644 src/main/resources/assets/avatarmod/sounds.json create mode 100644 src/main/resources/assets/avatarmod/sounds/entity/momo/ambient.ogg create mode 100644 src/main/resources/assets/avatarmod/sounds/entity/momo/death.ogg create mode 100644 src/main/resources/assets/avatarmod/sounds/entity/momo/hurt.ogg create mode 100644 src/main/resources/assets/avatarmod/textures/entity/lemur.png diff --git a/build.gradle b/build.gradle index 33087ba493..596b7b6d1f 100644 --- a/build.gradle +++ b/build.gradle @@ -98,6 +98,9 @@ repositories { name = "DragonForge" url = "https://raw.github.com/dragon-forge/maven/master" } + maven { + url "https://maven.mcmoddev.com/" + } } configurations { @@ -120,6 +123,7 @@ dependencies { provided "codechicken:CodeChickenLib:1.12.2-3.2.2.353:universal" deobfCompile "tk.zeitheron.HammerLib:HammerLib-1.12.2:2.0.6.13:deobf" deobfCompile "tk.zeitheron.ColoredLux:ColoredLux-1.12.2:12r:deobf" + deobfCompile "net.ilexiconn:llibrary:1.7.17-1.12.2" // compile against the JEI API but do not include it at runtime deobfProvided "mezz.jei:jei_1.12.2:4.15.0.293:api" // at runtime, use the full JEI jar diff --git a/src/main/java/com/crowsofwar/avatar/api/capabilities/IPlayerShoulders.java b/src/main/java/com/crowsofwar/avatar/api/capabilities/IPlayerShoulders.java new file mode 100644 index 0000000000..696641c4a8 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/api/capabilities/IPlayerShoulders.java @@ -0,0 +1,25 @@ +package com.crowsofwar.avatar.api.capabilities; + +import net.minecraft.entity.Entity; + +import java.util.List; + +public interface IPlayerShoulders { + + public boolean getRightShoulder(); + + public boolean getLeftShoulder(); + + public void setRightShoulder(boolean set); + + public void setLeftShoulder(boolean set); + + public List getRiders(); + + public void removeRiders(Entity passenger); + + public void removeAllRiders(); + + public void addRiders(Entity passenger); + +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java new file mode 100644 index 0000000000..01b28a23a1 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java @@ -0,0 +1,1550 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +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.entity.player.EntityPlayer; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + +/** + * @author Korog3 + */ + +public class ModelLemur extends ModelBase { + public ModelRenderer Body; + public ModelRenderer BodyLower; + public ModelRenderer UpperBody; + public ModelRenderer ArmRight; + public ModelRenderer ArmLeft; + public ModelRenderer Neck; + public ModelRenderer BodyLowerBack; + public ModelRenderer BodyLowerFront; + public ModelRenderer BodyLowerSideRight; + public ModelRenderer BodyLowerSideLeft; + public ModelRenderer LegRight; + public ModelRenderer LegLeft; + public ModelRenderer Tail_start; + public ModelRenderer BodyLDetail; + public ModelRenderer BodyLDetail1; + public ModelRenderer BodyLDetail2; + public ModelRenderer BodyLDetail4; + public ModelRenderer LegDetailRight; + public ModelRenderer LegDetailRight1; + public ModelRenderer LegRightLower; + public ModelRenderer LegRightLowerDetail; + public ModelRenderer LegRightLowerDetail1; + public ModelRenderer LegRightFoot; + public ModelRenderer LegRightFootDetail; + public ModelRenderer LegRightFootDetail1; + public ModelRenderer LegRightFootDetail2; + public ModelRenderer LegDetailLeft; + public ModelRenderer LegDetaiLeft1; + public ModelRenderer LegLeftLower; + public ModelRenderer LegLeftLowerDetail; + public ModelRenderer LegLeftLowerDetail1; + public ModelRenderer LegLeftFoot; + public ModelRenderer LegLeftFootDetail; + public ModelRenderer LegLeftFootDetail1; + public ModelRenderer LegLeftFootDetail2; + public ModelRenderer Tail_mid1; + public ModelRenderer Tail_mid2; + public ModelRenderer Tail_mid3; + public ModelRenderer Tail_mid4; + public ModelRenderer Tail_end; + public ModelRenderer BodyDetailFront; + public ModelRenderer BodyDetailBack; + public ModelRenderer BodyDetailSideRight; + public ModelRenderer BodyDetailSideLeft; + public ModelRenderer neckDetail; + public ModelRenderer neckDetail2; + public ModelRenderer neckDetail3; + public ModelRenderer neckDetail4; + public ModelRenderer ArmRightDetail; + public ModelRenderer ArmRightDetail1; + public ModelRenderer ArmRightDetail11; + public ModelRenderer ArmRightDetail12; + public ModelRenderer ArmRightLower; + public ModelRenderer Right_Wing; + public ModelRenderer ArmRightLowerDetail; + public ModelRenderer ArmRightLowerDetail1; + public ModelRenderer ArmRightHand; + public ModelRenderer ArmRightFingerMid; + public ModelRenderer ArmRightFingerback; + public ModelRenderer ArmRightFingerfront; + public ModelRenderer ArmRightFingersBig; + public ModelRenderer Right_Wing_Overlay; + public ModelRenderer ArmLeftDetail; + public ModelRenderer ArmLeftDetail1; + public ModelRenderer ArmLeftDetail11; + public ModelRenderer ArmLeftDetail12; + public ModelRenderer ArmLeftLower; + public ModelRenderer Left_Wing; + public ModelRenderer ArmLeftLowerDetail; + public ModelRenderer ArmLeftLowerDetail1; + public ModelRenderer ArmLeftHand; + public ModelRenderer ArmLeftFingerMid; + public ModelRenderer ArmLeftFingerback; + public ModelRenderer ArmLeftFingerfront; + public ModelRenderer ArmLeftFingersBig; + public ModelRenderer Left_Wing_Overlay; + public ModelRenderer theHead; + public ModelRenderer theHeadDetail; + public ModelRenderer theHeadDetail1; + public ModelRenderer theHeadDetail2; + public ModelRenderer headtop; + public ModelRenderer headBack; + public ModelRenderer headBack1; + public ModelRenderer theHeadDetail7999; + public ModelRenderer headfrontdetaila1; + public ModelRenderer headfrontdetaila1_1; + public ModelRenderer FF1; + public ModelRenderer EarRight; + public ModelRenderer EarLeft; + public ModelRenderer theHeadDetaile; + public ModelRenderer theHeadDetailh; + public ModelRenderer theHeadDetail1e; + public ModelRenderer theHeadDetail1h; + public ModelRenderer theHeadDetail2e; + public ModelRenderer theHeadDetail2h; + public ModelRenderer headBack2; + public ModelRenderer headBack113; + public ModelRenderer headBack11; + public ModelRenderer headBack111; + public ModelRenderer theHeadDetail2e768; + public ModelRenderer theHeadDetail2h789; + public ModelRenderer headfrontdetaila4; + public ModelRenderer headfrontdetaila5; + public ModelRenderer headfrontdetaila4_1; + public ModelRenderer headfrontdetaila5_1; + public ModelRenderer FF2; + public ModelRenderer FF3; + public ModelRenderer chek; + public ModelRenderer chek1; + public ModelRenderer FF4; + public ModelRenderer EarR1; + public ModelRenderer EarRB1; + public ModelRenderer EarR2; + public ModelRenderer EarM2; + public ModelRenderer EarR3; + public ModelRenderer EarM5; + public ModelRenderer EarRB2; + public ModelRenderer EarM1; + public ModelRenderer EarRB3; + public ModelRenderer EarRB2Detail; + public ModelRenderer EarM3; + public ModelRenderer EarRB2Detaildetail; + public ModelRenderer EarL1; + public ModelRenderer EarLB1; + public ModelRenderer EarL2; + public ModelRenderer EarL2_1; + public ModelRenderer EarL3; + public ModelRenderer EarL5; + public ModelRenderer EarLB2; + public ModelRenderer EarlM1; + public ModelRenderer EarLB3; + public ModelRenderer EarLB2Detail; + public ModelRenderer EarML3; + public ModelRenderer EarLB2Detaildetail; + + private State state = State.STANDING; + + public ModelLemur() { + this.textureWidth = 160; + this.textureHeight = 64; + this.LegRightFootDetail2 = new ModelRenderer(this, 37, 11); + this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); + this.ArmLeftDetail11 = new ModelRenderer(this, 12, 28); + this.ArmLeftDetail11.mirror = true; + this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); + this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); + this.theHeadDetail2e768 = new ModelRenderer(this, 66, 24); + this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); + this.EarM1 = new ModelRenderer(this, 10, 50); + this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); + this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); + this.ArmRightLowerDetail1 = new ModelRenderer(this, 40, 29); + this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.FF1 = new ModelRenderer(this, 83, 59); + this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); + this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); + this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.headBack2 = new ModelRenderer(this, 66, 8); + this.headBack2.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack2.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack2, 0.7312929565856241F, 0.0F, 0.0F); + this.EarRB2 = new ModelRenderer(this, 16, 36); + this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); + this.EarRight = new ModelRenderer(this, 0, 39); + this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); + this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); + this.theHeadDetaile = new ModelRenderer(this, 78, 8); + this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); + this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); + this.headBack11 = new ModelRenderer(this, 66, 16); + this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); + this.EarRB3 = new ModelRenderer(this, 22, 36); + this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); + this.theHead = new ModelRenderer(this, 78, 0); + this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); + this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.headfrontdetaila5 = new ModelRenderer(this, 79, 46); + this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); + this.EarL5 = new ModelRenderer(this, 116, 27); + this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); + this.Tail_end = new ModelRenderer(this, 56, 59); + this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.EarRB2Detaildetail = new ModelRenderer(this, 30, 45); + this.EarRB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarRB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.LegRightLowerDetail = new ModelRenderer(this, 34, 9); + this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarR2 = new ModelRenderer(this, 0, 49); + this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.BodyDetailSideLeft = new ModelRenderer(this, 15, 15); + this.BodyDetailSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyDetailSideLeft.addBox(-1.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideLeft, 0.0F, 0.0F, -0.5235987755982988F); + this.EarLeft = new ModelRenderer(this, 118, 0); + this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); + this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); + this.Tail_mid4 = new ModelRenderer(this, 60, 59); + this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); + this.ArmLeftHand = new ModelRenderer(this, 0, 2); + this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); + this.theHeadDetail2 = new ModelRenderer(this, 78, 28); + this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); + this.LegRightFootDetail = new ModelRenderer(this, 34, 11); + this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.FF4 = new ModelRenderer(this, 90, 62); + this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); + this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); + this.neckDetail4 = new ModelRenderer(this, 18, 3); + this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); + this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.Tail_start = new ModelRenderer(this, 60, 59); + this.Tail_start.setRotationPoint(0.0F, 5.5F, 1.0F); + this.Tail_start.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_start, 0.22183134792847928F, 0.0F, 0.0F); + this.LegLeftLower = new ModelRenderer(this, 52, 62); + this.LegLeftLower.setRotationPoint(0.5F, 5.2F, 0.0F); + this.LegLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegLeftLower, 0.3490658503988659F, 0.0F, 0.0F); + this.theHeadDetail1 = new ModelRenderer(this, 78, 16); + this.theHeadDetail1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.theHeadDetail1.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1, 0.0F, 0.0F, 0.7853981633974483F); + this.EarML3 = new ModelRenderer(this, 116, 53); + this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); + this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.LegLeftFootDetail = new ModelRenderer(this, 22, 22); + this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.EarR1 = new ModelRenderer(this, 0, 44); + this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); + this.Tail_mid2 = new ModelRenderer(this, 60, 59); + this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); + this.Tail_mid1 = new ModelRenderer(this, 60, 59); + this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); + this.Body = new ModelRenderer(this, 0, 0); + this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); + this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); + this.BodyLowerBack = new ModelRenderer(this, 24, -1); + this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); + this.ArmRightFingerback = new ModelRenderer(this, 43, 13); + this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.ArmRightFingersBig = new ModelRenderer(this, 0, 2); + this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); + this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); + this.theHeadDetail2e = new ModelRenderer(this, 78, 32); + this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); + this.ArmLeftLowerDetail = new ModelRenderer(this, 35, 21); + this.ArmLeftLowerDetail.mirror = true; + this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeftFingerback = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.LegRightLowerDetail1 = new ModelRenderer(this, 34, 10); + this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.headBack = new ModelRenderer(this, 54, 24); + this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); + this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); + this.UpperBody = new ModelRenderer(this, 14, 0); + this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); + this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); + this.BodyLowerSideRight = new ModelRenderer(this, 37, 0); + this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); + this.Neck = new ModelRenderer(this, 8, 12); + this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); + this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); + this.Tail_mid3 = new ModelRenderer(this, 60, 59); + this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); + this.EarL3 = new ModelRenderer(this, 118, 15); + this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); + this.Left_Wing_Overlay = new ModelRenderer(this, 136, 0); + this.Left_Wing_Overlay.mirror = true; + this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.ArmLeftDetail = new ModelRenderer(this, 8, 23); + this.ArmLeftDetail.mirror = true; + this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); + this.Right_Wing = new ModelRenderer(this, 92, 0); + this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); + this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); + this.headfrontdetaila4 = new ModelRenderer(this, 66, 36); + this.headfrontdetaila4.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4, 0.7312929565856241F, 0.0F, 0.0F); + this.BodyDetailSideRight = new ModelRenderer(this, 9, 15); + this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); + this.chek = new ModelRenderer(this, 65, 60); + this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); + this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); + this.LegRightFoot = new ModelRenderer(this, 34, 8); + this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); + this.ArmLeft = new ModelRenderer(this, 0, 27); + this.ArmLeft.mirror = true; + this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); + this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); + this.ArmRightDetail = new ModelRenderer(this, 8, 23); + this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); + this.ArmRightDetail1 = new ModelRenderer(this, 32, 28); + this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); + this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); + this.headfrontdetaila1 = new ModelRenderer(this, 54, 20); + this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); + this.EarM2 = new ModelRenderer(this, 8, 41); + this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); + this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.LegDetailRight1 = new ModelRenderer(this, 16, 32); + this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); + this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); + this.LegLeftFootDetail2 = new ModelRenderer(this, 37, 11); + this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); + this.LegDetailRight = new ModelRenderer(this, 19, 20); + this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); + this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); + this.neckDetail3 = new ModelRenderer(this, 18, 3); + this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); + this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); + this.BodyLDetail = new ModelRenderer(this, 35, 11); + this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); + this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.EarLB2Detaildetail = new ModelRenderer(this, 112, 61); + this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.EarR3 = new ModelRenderer(this, 6, 36); + this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); + this.BodyLowerSideLeft = new ModelRenderer(this, 37, 0); + this.BodyLowerSideLeft.mirror = true; + this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); + this.LegDetailLeft = new ModelRenderer(this, 25, 20); + this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); + this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); + this.BodyDetailFront = new ModelRenderer(this, 8, 9); + this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); + this.EarM3 = new ModelRenderer(this, 36, 36); + this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.EarLB2 = new ModelRenderer(this, 116, 40); + this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); + this.BodyLDetail4 = new ModelRenderer(this, 36, 8); + this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); + this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.theHeadDetail = new ModelRenderer(this, 78, 4); + this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); + this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); + this.BodyDetailBack = new ModelRenderer(this, 8, 9); + this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); + this.LegRightLower = new ModelRenderer(this, 52, 62); + this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); + this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLDetail2 = new ModelRenderer(this, 36, 8); + this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); + this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.EarLB3 = new ModelRenderer(this, 114, 46); + this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); + this.BodyLowerFront = new ModelRenderer(this, 33, 8); + this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); + this.theHeadDetailh = new ModelRenderer(this, 54, 12); + this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); + this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.theHeadDetail2h789 = new ModelRenderer(this, 54, 0); + this.theHeadDetail2h789.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h789.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h789, 0.6981317007977318F, 0.0F, 0.0F); + this.EarL1 = new ModelRenderer(this, 116, 5); + this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); + this.neckDetail = new ModelRenderer(this, 18, 3); + this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); + this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); + this.ArmLeftLowerDetail1 = new ModelRenderer(this, 40, 29); + this.ArmLeftLowerDetail1.mirror = true; + this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.headBack1 = new ModelRenderer(this, 54, 16); + this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); + this.EarLB1 = new ModelRenderer(this, 116, 34); + this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); + this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.ArmRightHand = new ModelRenderer(this, 0, 2); + this.ArmRightHand.mirror = true; + this.ArmRightHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmRightHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightHand, -0.296705972839036F, 1.5707963267948966F, 0.0F); + this.headfrontdetaila1_1 = new ModelRenderer(this, 54, 28); + this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); + this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.LegLeft = new ModelRenderer(this, 22, 27); + this.LegLeft.setRotationPoint(1.5F, 5.9F, 0.0F); + this.LegLeft.addBox(0.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegLeft, -0.2617993877991494F, -0.2617993877991494F, -0.08726646259971647F); + this.EarRB1 = new ModelRenderer(this, 21, 46); + this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); + this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarM5 = new ModelRenderer(this, 13, 43); + this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); + this.ArmLeftFingerfront = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.Left_Wing = new ModelRenderer(this, 92, 0); + this.Left_Wing.mirror = true; + this.Left_Wing.setRotationPoint(-1.0F, -3.5F, 0.0F); + this.Left_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Left_Wing, -0.2792526803190927F, 0.0F, -0.02617993877991494F); + this.headfrontdetaila4_1 = new ModelRenderer(this, 66, 44); + this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); + this.ArmRight = new ModelRenderer(this, 0, 27); + this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); + this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); + this.LegDetaiLeft1 = new ModelRenderer(this, 22, 32); + this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); + this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); + this.BodyLDetail1 = new ModelRenderer(this, 35, 11); + this.BodyLDetail1.mirror = true; + this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); + this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.theHeadDetail7999 = new ModelRenderer(this, 66, 20); + this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); + this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); + this.ArmRightFingerfront = new ModelRenderer(this, 43, 13); + this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.LegLeftLowerDetail = new ModelRenderer(this, 37, 9); + this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarlM1 = new ModelRenderer(this, 102, 58); + this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); + this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); + this.LegRight = new ModelRenderer(this, 16, 27); + this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); + this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); + this.theHeadDetail1e = new ModelRenderer(this, 78, 20); + this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); + this.theHeadDetail2h = new ModelRenderer(this, 54, 8); + this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); + this.LegLeftLowerDetail1 = new ModelRenderer(this, 25, 1); + this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.BodyLower = new ModelRenderer(this, 52, 62); + this.BodyLower.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BodyLower.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.headBack111 = new ModelRenderer(this, 79, 43); + this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); + this.LegLeftFootDetail1 = new ModelRenderer(this, 24, 3); + this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.chek1 = new ModelRenderer(this, 65, 56); + this.chek1.setRotationPoint(-0.5F, 0.0F, -1.0F); + this.chek1.addBox(-2.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek1, 0.0F, 1.186823891356144F, 0.0F); + this.EarRB2Detail = new ModelRenderer(this, 30, 37); + this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.headtop = new ModelRenderer(this, 66, 0); + this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); + this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); + this.headBack113 = new ModelRenderer(this, 79, 40); + this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); + this.ArmLeftDetail12 = new ModelRenderer(this, 0, 18); + this.ArmLeftDetail12.mirror = true; + this.ArmLeftDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmLeftDetail12.addBox(-1.0F, 0.0F, -1.02F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.Right_Wing_Overlay = new ModelRenderer(this, 136, 0); + this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.EarL2 = new ModelRenderer(this, 118, 10); + this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); + this.ArmLeftFingerMid = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.ArmRightDetail11 = new ModelRenderer(this, 12, 28); + this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); + this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); + this.headfrontdetaila5_1 = new ModelRenderer(this, 79, 49); + this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); + this.EarLB2Detail = new ModelRenderer(this, 120, 61); + this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.theHeadDetail1h = new ModelRenderer(this, 54, 4); + this.theHeadDetail1h.mirror = true; + this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); + this.neckDetail2 = new ModelRenderer(this, 18, 3); + this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); + this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); + this.LegLeftFoot = new ModelRenderer(this, 20, 22); + this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFoot, -0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.ArmRightLower = new ModelRenderer(this, 52, 62); + this.ArmRightLower.setRotationPoint(0.5F, 8.0F, -0.5F); + this.ArmRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightLower, -0.5235987755982988F, 0.0F, 0.0F); + this.EarL2_1 = new ModelRenderer(this, 118, 20); + this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); + this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.ArmLeftFingersBig = new ModelRenderer(this, 0, 2); + this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); + this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); + this.ArmRightFingerMid = new ModelRenderer(this, 43, 13); + this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.FF2 = new ModelRenderer(this, 77, 60); + this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); + this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.ArmRightLowerDetail = new ModelRenderer(this, 35, 21); + this.ArmRightLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail.addBox(-0.5F, 0.0F, -0.77F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeftDetail1 = new ModelRenderer(this, 32, 28); + this.ArmLeftDetail1.mirror = true; + this.ArmLeftDetail1.setRotationPoint(-1.75F, 1.0F, 0.0F); + this.ArmLeftDetail1.addBox(0.0F, 0.0F, -0.98F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail1, 0.0F, 0.0F, -0.1117010721276371F); + this.ArmLeftLower = new ModelRenderer(this, 52, 62); + this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); + this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); + this.FF3 = new ModelRenderer(this, 71, 60); + this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); + this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); + this.LegRightFootDetail1 = new ModelRenderer(this, 34, 11); + this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.ArmRightDetail12 = new ModelRenderer(this, 0, 18); + this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.LegRightFoot.addChild(this.LegRightFootDetail2); + this.ArmLeft.addChild(this.ArmLeftDetail11); + this.theHeadDetail7999.addChild(this.theHeadDetail2e768); + this.EarRB1.addChild(this.EarM1); + this.ArmRightLower.addChild(this.ArmRightLowerDetail1); + this.theHead.addChild(this.FF1); + this.headBack.addChild(this.headBack2); + this.EarRB1.addChild(this.EarRB2); + this.theHead.addChild(this.EarRight); + this.theHeadDetail.addChild(this.theHeadDetaile); + this.headBack1.addChild(this.headBack11); + this.EarRB2.addChild(this.EarRB3); + this.Neck.addChild(this.theHead); + this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.EarL2_1.addChild(this.EarL5); + this.Tail_mid4.addChild(this.Tail_end); + this.EarRB2Detail.addChild(this.EarRB2Detaildetail); + this.LegRightLower.addChild(this.LegRightLowerDetail); + this.EarR1.addChild(this.EarR2); + this.UpperBody.addChild(this.BodyDetailSideLeft); + this.theHead.addChild(this.EarLeft); + this.Tail_mid3.addChild(this.Tail_mid4); + this.ArmLeftLower.addChild(this.ArmLeftHand); + this.theHead.addChild(this.theHeadDetail2); + this.LegRightFoot.addChild(this.LegRightFootDetail); + this.FF1.addChild(this.FF4); + this.UpperBody.addChild(this.neckDetail4); + this.BodyLower.addChild(this.Tail_start); + this.LegLeft.addChild(this.LegLeftLower); + this.theHead.addChild(this.theHeadDetail1); + this.EarLB3.addChild(this.EarML3); + this.LegLeftFoot.addChild(this.LegLeftFootDetail); + this.EarRight.addChild(this.EarR1); + this.Tail_mid1.addChild(this.Tail_mid2); + this.Tail_start.addChild(this.Tail_mid1); + this.BodyLower.addChild(this.BodyLowerBack); + this.ArmRightHand.addChild(this.ArmRightFingerback); + this.ArmRightHand.addChild(this.ArmRightFingersBig); + this.theHeadDetail2.addChild(this.theHeadDetail2e); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); + this.ArmLeftHand.addChild(this.ArmLeftFingerback); + this.LegRightLower.addChild(this.LegRightLowerDetail1); + this.theHead.addChild(this.headBack); + this.Body.addChild(this.UpperBody); + this.BodyLower.addChild(this.BodyLowerSideRight); + this.Body.addChild(this.Neck); + this.Tail_mid2.addChild(this.Tail_mid3); + this.EarL2.addChild(this.EarL3); + this.Left_Wing.addChild(this.Left_Wing_Overlay); + this.ArmLeft.addChild(this.ArmLeftDetail); + this.ArmRight.addChild(this.Right_Wing); + this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.UpperBody.addChild(this.BodyDetailSideRight); + this.FF1.addChild(this.chek); + this.LegRightLower.addChild(this.LegRightFoot); + this.Body.addChild(this.ArmLeft); + this.ArmRight.addChild(this.ArmRightDetail); + this.ArmRight.addChild(this.ArmRightDetail1); + this.theHead.addChild(this.headfrontdetaila1); + this.EarR1.addChild(this.EarM2); + this.LegRight.addChild(this.LegDetailRight1); + this.LegLeftFoot.addChild(this.LegLeftFootDetail2); + this.LegRight.addChild(this.LegDetailRight); + this.UpperBody.addChild(this.neckDetail3); + this.BodyLower.addChild(this.BodyLDetail); + this.EarLB2Detail.addChild(this.EarLB2Detaildetail); + this.EarR2.addChild(this.EarR3); + this.BodyLower.addChild(this.BodyLowerSideLeft); + this.LegLeft.addChild(this.LegDetailLeft); + this.UpperBody.addChild(this.BodyDetailFront); + this.EarRB3.addChild(this.EarM3); + this.EarLB1.addChild(this.EarLB2); + this.BodyLower.addChild(this.BodyLDetail4); + this.theHead.addChild(this.theHeadDetail); + this.UpperBody.addChild(this.BodyDetailBack); + this.LegRight.addChild(this.LegRightLower); + this.BodyLower.addChild(this.BodyLDetail2); + this.EarLB2.addChild(this.EarLB3); + this.BodyLower.addChild(this.BodyLowerFront); + this.theHeadDetaile.addChild(this.theHeadDetailh); + this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); + this.EarLeft.addChild(this.EarL1); + this.UpperBody.addChild(this.neckDetail); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); + this.theHead.addChild(this.headBack1); + this.EarLeft.addChild(this.EarLB1); + this.ArmRightLower.addChild(this.ArmRightHand); + this.theHead.addChild(this.headfrontdetaila1_1); + this.BodyLower.addChild(this.LegLeft); + this.EarRight.addChild(this.EarRB1); + this.EarM2.addChild(this.EarM5); + this.ArmLeftHand.addChild(this.ArmLeftFingerfront); + this.ArmLeft.addChild(this.Left_Wing); + this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); + this.Body.addChild(this.ArmRight); + this.LegLeft.addChild(this.LegDetaiLeft1); + this.BodyLower.addChild(this.BodyLDetail1); + this.theHead.addChild(this.theHeadDetail7999); + this.ArmRightHand.addChild(this.ArmRightFingerfront); + this.LegLeftLower.addChild(this.LegLeftLowerDetail); + this.EarLB1.addChild(this.EarlM1); + this.BodyLower.addChild(this.LegRight); + this.theHeadDetail1.addChild(this.theHeadDetail1e); + this.theHeadDetail2e.addChild(this.theHeadDetail2h); + this.LegLeftLower.addChild(this.LegLeftLowerDetail1); + this.Body.addChild(this.BodyLower); + this.headBack11.addChild(this.headBack111); + this.LegLeftFoot.addChild(this.LegLeftFootDetail1); + this.FF1.addChild(this.chek1); + this.EarRB2.addChild(this.EarRB2Detail); + this.theHead.addChild(this.headtop); + this.headBack2.addChild(this.headBack113); + this.ArmLeft.addChild(this.ArmLeftDetail12); + this.Right_Wing.addChild(this.Right_Wing_Overlay); + this.EarL1.addChild(this.EarL2); + this.ArmLeftHand.addChild(this.ArmLeftFingerMid); + this.ArmRight.addChild(this.ArmRightDetail11); + this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); + this.EarLB2.addChild(this.EarLB2Detail); + this.theHeadDetail1e.addChild(this.theHeadDetail1h); + this.UpperBody.addChild(this.neckDetail2); + this.LegLeftLower.addChild(this.LegLeftFoot); + this.ArmRight.addChild(this.ArmRightLower); + this.EarL1.addChild(this.EarL2_1); + this.ArmLeftHand.addChild(this.ArmLeftFingersBig); + this.ArmRightHand.addChild(this.ArmRightFingerMid); + this.FF1.addChild(this.FF2); + this.ArmRightLower.addChild(this.ArmRightLowerDetail); + this.ArmLeft.addChild(this.ArmLeftDetail1); + this.ArmLeft.addChild(this.ArmLeftLower); + this.FF1.addChild(this.FF3); + this.LegRightFoot.addChild(this.LegRightFootDetail1); + this.ArmRight.addChild(this.ArmRightDetail12); + } + + @Override + public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + super.render(entityIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); + + if (this.isChild) + { + GL11.glPushMatrix(); + GL11.glTranslatef(0F, 1.5F-1.5F*0.35F, 0F); + GL11.glScalef(0.35F, 0.35F, 0.35F); + this.Body.render(scale); + GL11.glPopMatrix(); + } + else + { + GL11.glPushMatrix(); + GL11.glTranslatef(0F, 1.5F-1.5F*0.5F, 0F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + this.Body.render(scale); + GL11.glPopMatrix(); + } + } + + public void setRotateAngle(ModelRenderer AdvancedModelRenderer, float x, float y, float z) { + AdvancedModelRenderer.rotateAngleX = x; + AdvancedModelRenderer.rotateAngleY = y; + AdvancedModelRenderer.rotateAngleZ = z; + } + + public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) + { + + /* + this.Left_Wing.setScale(0, 0, 0); + this.Right_Wing.setScale(0, 0, 0); + */ + if (entitylivingbaseIn instanceof EntityFlyingLemur){ + + EntityFlyingLemur lemur = (EntityFlyingLemur)entitylivingbaseIn; + + boolean gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); + + if (lemur.isPartying()) + { + this.state = State.PARTY; + //TODO + this.Body.rotateAngleY = -1.5F; + this.Body.rotateAngleX = 0.3F; + this.BodyLower.rotateAngleX = -0.3f; + this.Neck.rotateAngleX = -0.3F; + + this.ArmLeft.rotateAngleZ = -0.3f; + this.ArmRight.rotateAngleZ = 0.3f; + + this.LegRight.rotateAngleZ = -0.1f; + this.LegLeft.rotateAngleZ = 0.1f; + this.LegRight.rotateAngleY = -0.2f; + this.LegLeft.rotateAngleY = 0.2f; + this.LegRight.rotateAngleX = -0.35f; + this.LegLeft.rotateAngleX = -0.35f; + this.LegRightLower.rotateAngleX = 1.25f; + this.LegLeftLower.rotateAngleX = 1.25f; + + this.LegLeftFoot.rotateAngleY = -0.4f; + this.LegRightFoot.rotateAngleY = 0.4f; + + this.LegLeftFoot.rotateAngleZ = -0.1f; + this.LegRightFoot.rotateAngleZ = 0.1f; + this.LegLeftFoot.rotateAngleX = -0.8f; + this.LegRightFoot.rotateAngleX = -0.8f; + + + this.Tail_start.rotateAngleX = 0.2F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + /* + this.Tail_mid3.rotateAngleZ = -1F; + this.Tail_mid4.rotateAngleZ = -0.75F; + this.Tail_end.rotateAngleZ = -0.5F; + */ + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + + } + else if (lemur.isSitting() && !lemur.isPartying()) { + this.state = State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) + { + this.state = State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + + this.ArmRight.rotateAngleX = -1.75F; + this.ArmLeft.rotateAngleX = -1.75F; + this.ArmRight.rotateAngleY = 0.1F; + this.ArmLeft.rotateAngleY = -0.1F; + this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmRightLower.rotateAngleY = -0.4F; + this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmLeftHand.rotateAngleY = -2.6F; + + this.LegLeft.rotateAngleX = -1.5F; + this.LegRight.rotateAngleX = -1.5F; + this.LegLeft.rotateAngleY = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) + { + this.state = State.WALKING; + } + else { + this.state = State.STANDING; + } + } + //TODO + if (entitylivingbaseIn instanceof EntityAscendedFlyingLemur){ + + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)entitylivingbaseIn; + + if (lemur.isPartying()) + { + this.state = State.PARTY; + //TODO + this.Body.rotateAngleY = -1.5F; + this.Body.rotateAngleX = 0.3F; + this.BodyLower.rotateAngleX = -0.3f; + this.Neck.rotateAngleX = -0.3F; + + this.ArmLeft.rotateAngleZ = -0.3f; + this.ArmRight.rotateAngleZ = 0.3f; + + this.LegRight.rotateAngleZ = -0.1f; + this.LegLeft.rotateAngleZ = 0.1f; + this.LegRight.rotateAngleY = -0.2f; + this.LegLeft.rotateAngleY = 0.2f; + this.LegRight.rotateAngleX = -0.35f; + this.LegLeft.rotateAngleX = -0.35f; + this.LegRightLower.rotateAngleX = 1.25f; + this.LegLeftLower.rotateAngleX = 1.25f; + + this.LegLeftFoot.rotateAngleY = -0.4f; + this.LegRightFoot.rotateAngleY = 0.4f; + + this.LegLeftFoot.rotateAngleZ = -0.1f; + this.LegRightFoot.rotateAngleZ = 0.1f; + this.LegLeftFoot.rotateAngleX = -0.8f; + this.LegRightFoot.rotateAngleX = -0.8f; + + + this.Tail_start.rotateAngleX = 0.2F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + /* + this.Tail_mid3.rotateAngleZ = -1F; + this.Tail_mid4.rotateAngleZ = -0.75F; + this.Tail_end.rotateAngleZ = -0.5F; + */ + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + + } + else if (lemur.isSitting() && !lemur.isPartying()) { + this.state = State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying()) { + this.state = State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying()) { + this.state = State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying()) { + this.state = State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying()) { + this.state = State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + //this.Left_Wing.setScale(1, 1, 1); + //this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) + { + this.state = State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + + this.ArmRight.rotateAngleX = -1.75F; + this.ArmLeft.rotateAngleX = -1.75F; + this.ArmRight.rotateAngleY = 0.1F; + this.ArmLeft.rotateAngleY = -0.1F; + this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmRightLower.rotateAngleY = -0.4F; + this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmLeftHand.rotateAngleY = -2.6F; + + this.LegLeft.rotateAngleX = -1.5F; + this.LegRight.rotateAngleX = -1.5F; + this.LegLeft.rotateAngleY = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) + { + this.state = State.WALKING; + } + else { + this.state = State.STANDING; + } + } + } + + + @Override + public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { + super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); + + + } + private float triangleWave(float p_78172_1_, float p_78172_2_) + { + return (Math.abs(p_78172_1_ % p_78172_2_ - p_78172_2_ * 0.5F) - p_78172_2_ * 0.25F) / (p_78172_2_ * 0.25F); + } + @SideOnly(Side.CLIENT) + static enum State + { + FLYING, + SPRINTING, + SITTING, + STANDING, + WALKING, + ONRIGHTSHOULDER, + ONLEFTSHOULDER, + ELYTRARIGHTSHOULDER, + ELYTRALEFTSHOULDER, + PARTY; + } +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java new file mode 100644 index 0000000000..413e37d19a --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java @@ -0,0 +1,1764 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import net.ilexiconn.llibrary.client.model.ModelAnimator; +import net.ilexiconn.llibrary.client.model.tools.AdvancedModelBase; +import net.ilexiconn.llibrary.client.model.tools.AdvancedModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.opengl.GL11; + +/** + * @author Korog3 + */ + +public class ModelLlibraryLemur extends AdvancedModelBase { + public AdvancedModelRenderer Body; + public AdvancedModelRenderer BodyLower; + public AdvancedModelRenderer UpperBody; + public AdvancedModelRenderer ArmRight; + public AdvancedModelRenderer ArmLeft; + public AdvancedModelRenderer Neck; + public AdvancedModelRenderer BodyLowerBack; + public AdvancedModelRenderer BodyLowerFront; + public AdvancedModelRenderer BodyLowerSideRight; + public AdvancedModelRenderer BodyLowerSideLeft; + public AdvancedModelRenderer LegRight; + public AdvancedModelRenderer LegLeft; + public AdvancedModelRenderer Tail_start; + public AdvancedModelRenderer BodyLDetail; + public AdvancedModelRenderer BodyLDetail1; + public AdvancedModelRenderer BodyLDetail2; + public AdvancedModelRenderer BodyLDetail4; + public AdvancedModelRenderer LegDetailRight; + public AdvancedModelRenderer LegDetailRight1; + public AdvancedModelRenderer LegRightLower; + public AdvancedModelRenderer LegRightLowerDetail; + public AdvancedModelRenderer LegRightLowerDetail1; + public AdvancedModelRenderer LegRightFoot; + public AdvancedModelRenderer LegRightFootDetail; + public AdvancedModelRenderer LegRightFootDetail1; + public AdvancedModelRenderer LegRightFootDetail2; + public AdvancedModelRenderer LegDetailLeft; + public AdvancedModelRenderer LegDetaiLeft1; + public AdvancedModelRenderer LegLeftLower; + public AdvancedModelRenderer LegLeftLowerDetail; + public AdvancedModelRenderer LegLeftLowerDetail1; + public AdvancedModelRenderer LegLeftFoot; + public AdvancedModelRenderer LegLeftFootDetail; + public AdvancedModelRenderer LegLeftFootDetail1; + public AdvancedModelRenderer LegLeftFootDetail2; + public AdvancedModelRenderer Tail_mid1; + public AdvancedModelRenderer Tail_mid2; + public AdvancedModelRenderer Tail_mid3; + public AdvancedModelRenderer Tail_mid4; + public AdvancedModelRenderer Tail_end; + public AdvancedModelRenderer BodyDetailFront; + public AdvancedModelRenderer BodyDetailBack; + public AdvancedModelRenderer BodyDetailSideRight; + public AdvancedModelRenderer BodyDetailSideLeft; + public AdvancedModelRenderer neckDetail; + public AdvancedModelRenderer neckDetail2; + public AdvancedModelRenderer neckDetail3; + public AdvancedModelRenderer neckDetail4; + public AdvancedModelRenderer ArmRightDetail; + public AdvancedModelRenderer ArmRightDetail1; + public AdvancedModelRenderer ArmRightDetail11; + public AdvancedModelRenderer ArmRightDetail12; + public AdvancedModelRenderer ArmRightLower; + public AdvancedModelRenderer Right_Wing; + public AdvancedModelRenderer ArmRightLowerDetail; + public AdvancedModelRenderer ArmRightLowerDetail1; + public AdvancedModelRenderer ArmRightHand; + public AdvancedModelRenderer ArmRightFingerMid; + public AdvancedModelRenderer ArmRightFingerback; + public AdvancedModelRenderer ArmRightFingerfront; + public AdvancedModelRenderer ArmRightFingersBig; + public AdvancedModelRenderer Right_Wing_Overlay; + public AdvancedModelRenderer ArmLeftDetail; + public AdvancedModelRenderer ArmLeftDetail1; + public AdvancedModelRenderer ArmLeftDetail11; + public AdvancedModelRenderer ArmLeftDetail12; + public AdvancedModelRenderer ArmLeftLower; + public AdvancedModelRenderer Left_Wing; + public AdvancedModelRenderer ArmLeftLowerDetail; + public AdvancedModelRenderer ArmLeftLowerDetail1; + public AdvancedModelRenderer ArmLeftHand; + public AdvancedModelRenderer ArmLeftFingerMid; + public AdvancedModelRenderer ArmLeftFingerback; + public AdvancedModelRenderer ArmLeftFingerfront; + public AdvancedModelRenderer ArmLeftFingersBig; + public AdvancedModelRenderer Left_Wing_Overlay; + public AdvancedModelRenderer theHead; + public AdvancedModelRenderer theHeadDetail; + public AdvancedModelRenderer theHeadDetail1; + public AdvancedModelRenderer theHeadDetail2; + public AdvancedModelRenderer headtop; + public AdvancedModelRenderer headBack; + public AdvancedModelRenderer headBack1; + public AdvancedModelRenderer theHeadDetail7999; + public AdvancedModelRenderer headfrontdetaila1; + public AdvancedModelRenderer headfrontdetaila1_1; + public AdvancedModelRenderer FF1; + public AdvancedModelRenderer EarRight; + public AdvancedModelRenderer EarLeft; + public AdvancedModelRenderer theHeadDetaile; + public AdvancedModelRenderer theHeadDetailh; + public AdvancedModelRenderer theHeadDetail1e; + public AdvancedModelRenderer theHeadDetail1h; + public AdvancedModelRenderer theHeadDetail2e; + public AdvancedModelRenderer theHeadDetail2h; + public AdvancedModelRenderer headBack2; + public AdvancedModelRenderer headBack113; + public AdvancedModelRenderer headBack11; + public AdvancedModelRenderer headBack111; + public AdvancedModelRenderer theHeadDetail2e768; + public AdvancedModelRenderer theHeadDetail2h789; + public AdvancedModelRenderer headfrontdetaila4; + public AdvancedModelRenderer headfrontdetaila5; + public AdvancedModelRenderer headfrontdetaila4_1; + public AdvancedModelRenderer headfrontdetaila5_1; + public AdvancedModelRenderer FF2; + public AdvancedModelRenderer FF3; + public AdvancedModelRenderer chek; + public AdvancedModelRenderer chek1; + public AdvancedModelRenderer FF4; + public AdvancedModelRenderer EarR1; + public AdvancedModelRenderer EarRB1; + public AdvancedModelRenderer EarR2; + public AdvancedModelRenderer EarM2; + public AdvancedModelRenderer EarR3; + public AdvancedModelRenderer EarM5; + public AdvancedModelRenderer EarRB2; + public AdvancedModelRenderer EarM1; + public AdvancedModelRenderer EarRB3; + public AdvancedModelRenderer EarRB2Detail; + public AdvancedModelRenderer EarM3; + public AdvancedModelRenderer EarRB2Detaildetail; + public AdvancedModelRenderer EarL1; + public AdvancedModelRenderer EarLB1; + public AdvancedModelRenderer EarL2; + public AdvancedModelRenderer EarL2_1; + public AdvancedModelRenderer EarL3; + public AdvancedModelRenderer EarL5; + public AdvancedModelRenderer EarLB2; + public AdvancedModelRenderer EarlM1; + public AdvancedModelRenderer EarLB3; + public AdvancedModelRenderer EarLB2Detail; + public AdvancedModelRenderer EarML3; + public AdvancedModelRenderer EarLB2Detaildetail; + + private ModelAnimator animator; + private State state = State.STANDING; + + public ModelLlibraryLemur() { + this.textureWidth = 160; + this.textureHeight = 64; + this.LegRightFootDetail2 = new AdvancedModelRenderer(this, 37, 11); + this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); + this.ArmLeftDetail11 = new AdvancedModelRenderer(this, 12, 28); + this.ArmLeftDetail11.mirror = true; + this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); + this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); + this.theHeadDetail2e768 = new AdvancedModelRenderer(this, 66, 24); + this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); + this.EarM1 = new AdvancedModelRenderer(this, 10, 50); + this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); + this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); + this.ArmRightLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); + this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.FF1 = new AdvancedModelRenderer(this, 83, 59); + this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); + this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); + this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.headBack2 = new AdvancedModelRenderer(this, 66, 8); + this.headBack2.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack2.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack2, 0.7312929565856241F, 0.0F, 0.0F); + this.EarRB2 = new AdvancedModelRenderer(this, 16, 36); + this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); + this.EarRight = new AdvancedModelRenderer(this, 0, 39); + this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); + this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); + this.theHeadDetaile = new AdvancedModelRenderer(this, 78, 8); + this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); + this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); + this.headBack11 = new AdvancedModelRenderer(this, 66, 16); + this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); + this.EarRB3 = new AdvancedModelRenderer(this, 22, 36); + this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); + this.theHead = new AdvancedModelRenderer(this, 78, 0); + this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); + this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.headfrontdetaila5 = new AdvancedModelRenderer(this, 79, 46); + this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); + this.EarL5 = new AdvancedModelRenderer(this, 116, 27); + this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); + this.Tail_end = new AdvancedModelRenderer(this, 56, 59); + this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.EarRB2Detaildetail = new AdvancedModelRenderer(this, 30, 45); + this.EarRB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarRB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.LegRightLowerDetail = new AdvancedModelRenderer(this, 34, 9); + this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarR2 = new AdvancedModelRenderer(this, 0, 49); + this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.BodyDetailSideLeft = new AdvancedModelRenderer(this, 15, 15); + this.BodyDetailSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyDetailSideLeft.addBox(-1.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideLeft, 0.0F, 0.0F, -0.5235987755982988F); + this.EarLeft = new AdvancedModelRenderer(this, 118, 0); + this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); + this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); + this.Tail_mid4 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); + this.ArmLeftHand = new AdvancedModelRenderer(this, 0, 2); + this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); + this.theHeadDetail2 = new AdvancedModelRenderer(this, 78, 28); + this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); + this.LegRightFootDetail = new AdvancedModelRenderer(this, 34, 11); + this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.FF4 = new AdvancedModelRenderer(this, 90, 62); + this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); + this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); + this.neckDetail4 = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); + this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.Tail_start = new AdvancedModelRenderer(this, 60, 59); + this.Tail_start.setRotationPoint(0.0F, 5.5F, 1.0F); + this.Tail_start.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_start, 0.22183134792847928F, 0.0F, 0.0F); + this.LegLeftLower = new AdvancedModelRenderer(this, 52, 62); + this.LegLeftLower.setRotationPoint(0.5F, 5.2F, 0.0F); + this.LegLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegLeftLower, 0.3490658503988659F, 0.0F, 0.0F); + this.theHeadDetail1 = new AdvancedModelRenderer(this, 78, 16); + this.theHeadDetail1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.theHeadDetail1.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1, 0.0F, 0.0F, 0.7853981633974483F); + this.EarML3 = new AdvancedModelRenderer(this, 116, 53); + this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); + this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.LegLeftFootDetail = new AdvancedModelRenderer(this, 22, 22); + this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.EarR1 = new AdvancedModelRenderer(this, 0, 44); + this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); + this.Tail_mid2 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); + this.Tail_mid1 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); + this.Body = new AdvancedModelRenderer(this, 0, 0); + this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); + this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); + this.BodyLowerBack = new AdvancedModelRenderer(this, 24, -1); + this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); + this.ArmRightFingerback = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.ArmRightFingersBig = new AdvancedModelRenderer(this, 0, 2); + this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); + this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); + this.theHeadDetail2e = new AdvancedModelRenderer(this, 78, 32); + this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); + this.ArmLeftLowerDetail = new AdvancedModelRenderer(this, 35, 21); + this.ArmLeftLowerDetail.mirror = true; + this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeftFingerback = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.LegRightLowerDetail1 = new AdvancedModelRenderer(this, 34, 10); + this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.headBack = new AdvancedModelRenderer(this, 54, 24); + this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); + this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); + this.UpperBody = new AdvancedModelRenderer(this, 14, 0); + this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); + this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); + this.BodyLowerSideRight = new AdvancedModelRenderer(this, 37, 0); + this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); + this.Neck = new AdvancedModelRenderer(this, 8, 12); + this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); + this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); + this.Tail_mid3 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); + this.EarL3 = new AdvancedModelRenderer(this, 118, 15); + this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); + this.Left_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); + this.Left_Wing_Overlay.mirror = true; + this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.ArmLeftDetail = new AdvancedModelRenderer(this, 8, 23); + this.ArmLeftDetail.mirror = true; + this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); + this.Right_Wing = new AdvancedModelRenderer(this, 92, 0); + this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); + this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); + this.headfrontdetaila4 = new AdvancedModelRenderer(this, 66, 36); + this.headfrontdetaila4.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4, 0.7312929565856241F, 0.0F, 0.0F); + this.BodyDetailSideRight = new AdvancedModelRenderer(this, 9, 15); + this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); + this.chek = new AdvancedModelRenderer(this, 65, 60); + this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); + this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); + this.LegRightFoot = new AdvancedModelRenderer(this, 34, 8); + this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); + this.ArmLeft = new AdvancedModelRenderer(this, 0, 27); + this.ArmLeft.mirror = true; + this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); + this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); + this.ArmRightDetail = new AdvancedModelRenderer(this, 8, 23); + this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); + this.ArmRightDetail1 = new AdvancedModelRenderer(this, 32, 28); + this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); + this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); + this.headfrontdetaila1 = new AdvancedModelRenderer(this, 54, 20); + this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); + this.EarM2 = new AdvancedModelRenderer(this, 8, 41); + this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); + this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.LegDetailRight1 = new AdvancedModelRenderer(this, 16, 32); + this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); + this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); + this.LegLeftFootDetail2 = new AdvancedModelRenderer(this, 37, 11); + this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); + this.LegDetailRight = new AdvancedModelRenderer(this, 19, 20); + this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); + this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); + this.neckDetail3 = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); + this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); + this.BodyLDetail = new AdvancedModelRenderer(this, 35, 11); + this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); + this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.EarLB2Detaildetail = new AdvancedModelRenderer(this, 112, 61); + this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.EarR3 = new AdvancedModelRenderer(this, 6, 36); + this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); + this.BodyLowerSideLeft = new AdvancedModelRenderer(this, 37, 0); + this.BodyLowerSideLeft.mirror = true; + this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); + this.LegDetailLeft = new AdvancedModelRenderer(this, 25, 20); + this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); + this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); + this.BodyDetailFront = new AdvancedModelRenderer(this, 8, 9); + this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); + this.EarM3 = new AdvancedModelRenderer(this, 36, 36); + this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.EarLB2 = new AdvancedModelRenderer(this, 116, 40); + this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); + this.BodyLDetail4 = new AdvancedModelRenderer(this, 36, 8); + this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); + this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.theHeadDetail = new AdvancedModelRenderer(this, 78, 4); + this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); + this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); + this.BodyDetailBack = new AdvancedModelRenderer(this, 8, 9); + this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); + this.LegRightLower = new AdvancedModelRenderer(this, 52, 62); + this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); + this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLDetail2 = new AdvancedModelRenderer(this, 36, 8); + this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); + this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.EarLB3 = new AdvancedModelRenderer(this, 114, 46); + this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); + this.BodyLowerFront = new AdvancedModelRenderer(this, 33, 8); + this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); + this.theHeadDetailh = new AdvancedModelRenderer(this, 54, 12); + this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); + this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.theHeadDetail2h789 = new AdvancedModelRenderer(this, 54, 0); + this.theHeadDetail2h789.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h789.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h789, 0.6981317007977318F, 0.0F, 0.0F); + this.EarL1 = new AdvancedModelRenderer(this, 116, 5); + this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); + this.neckDetail = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); + this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); + this.ArmLeftLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); + this.ArmLeftLowerDetail1.mirror = true; + this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.headBack1 = new AdvancedModelRenderer(this, 54, 16); + this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); + this.EarLB1 = new AdvancedModelRenderer(this, 116, 34); + this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); + this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.ArmRightHand = new AdvancedModelRenderer(this, 0, 2); + this.ArmRightHand.mirror = true; + this.ArmRightHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmRightHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightHand, -0.296705972839036F, 1.5707963267948966F, 0.0F); + this.headfrontdetaila1_1 = new AdvancedModelRenderer(this, 54, 28); + this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); + this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.LegLeft = new AdvancedModelRenderer(this, 22, 27); + this.LegLeft.setRotationPoint(1.5F, 5.9F, 0.0F); + this.LegLeft.addBox(0.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegLeft, -0.2617993877991494F, -0.2617993877991494F, -0.08726646259971647F); + this.EarRB1 = new AdvancedModelRenderer(this, 21, 46); + this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); + this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarM5 = new AdvancedModelRenderer(this, 13, 43); + this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); + this.ArmLeftFingerfront = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.Left_Wing = new AdvancedModelRenderer(this, 92, 0); + this.Left_Wing.mirror = true; + this.Left_Wing.setRotationPoint(-1.0F, -3.5F, 0.0F); + this.Left_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Left_Wing, -0.2792526803190927F, 0.0F, -0.02617993877991494F); + this.headfrontdetaila4_1 = new AdvancedModelRenderer(this, 66, 44); + this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); + this.ArmRight = new AdvancedModelRenderer(this, 0, 27); + this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); + this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); + this.LegDetaiLeft1 = new AdvancedModelRenderer(this, 22, 32); + this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); + this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); + this.BodyLDetail1 = new AdvancedModelRenderer(this, 35, 11); + this.BodyLDetail1.mirror = true; + this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); + this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.theHeadDetail7999 = new AdvancedModelRenderer(this, 66, 20); + this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); + this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); + this.ArmRightFingerfront = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.LegLeftLowerDetail = new AdvancedModelRenderer(this, 37, 9); + this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarlM1 = new AdvancedModelRenderer(this, 102, 58); + this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); + this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); + this.LegRight = new AdvancedModelRenderer(this, 16, 27); + this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); + this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); + this.theHeadDetail1e = new AdvancedModelRenderer(this, 78, 20); + this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); + this.theHeadDetail2h = new AdvancedModelRenderer(this, 54, 8); + this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); + this.LegLeftLowerDetail1 = new AdvancedModelRenderer(this, 25, 1); + this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.BodyLower = new AdvancedModelRenderer(this, 52, 62); + this.BodyLower.setRotationPoint(0.0F, 0.0F, 0.0F); + this.BodyLower.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.headBack111 = new AdvancedModelRenderer(this, 79, 43); + this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); + this.LegLeftFootDetail1 = new AdvancedModelRenderer(this, 24, 3); + this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.chek1 = new AdvancedModelRenderer(this, 65, 56); + this.chek1.setRotationPoint(-0.5F, 0.0F, -1.0F); + this.chek1.addBox(-2.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek1, 0.0F, 1.186823891356144F, 0.0F); + this.EarRB2Detail = new AdvancedModelRenderer(this, 30, 37); + this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.headtop = new AdvancedModelRenderer(this, 66, 0); + this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); + this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); + this.headBack113 = new AdvancedModelRenderer(this, 79, 40); + this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); + this.ArmLeftDetail12 = new AdvancedModelRenderer(this, 0, 18); + this.ArmLeftDetail12.mirror = true; + this.ArmLeftDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmLeftDetail12.addBox(-1.0F, 0.0F, -1.02F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.Right_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); + this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.EarL2 = new AdvancedModelRenderer(this, 118, 10); + this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); + this.ArmLeftFingerMid = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.ArmRightDetail11 = new AdvancedModelRenderer(this, 12, 28); + this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); + this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); + this.headfrontdetaila5_1 = new AdvancedModelRenderer(this, 79, 49); + this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); + this.EarLB2Detail = new AdvancedModelRenderer(this, 120, 61); + this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.theHeadDetail1h = new AdvancedModelRenderer(this, 54, 4); + this.theHeadDetail1h.mirror = true; + this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); + this.neckDetail2 = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); + this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); + this.LegLeftFoot = new AdvancedModelRenderer(this, 20, 22); + this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFoot, -0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.ArmRightLower = new AdvancedModelRenderer(this, 52, 62); + this.ArmRightLower.setRotationPoint(0.5F, 8.0F, -0.5F); + this.ArmRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightLower, -0.5235987755982988F, 0.0F, 0.0F); + this.EarL2_1 = new AdvancedModelRenderer(this, 118, 20); + this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); + this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.ArmLeftFingersBig = new AdvancedModelRenderer(this, 0, 2); + this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); + this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); + this.ArmRightFingerMid = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.FF2 = new AdvancedModelRenderer(this, 77, 60); + this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); + this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.ArmRightLowerDetail = new AdvancedModelRenderer(this, 35, 21); + this.ArmRightLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail.addBox(-0.5F, 0.0F, -0.77F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeftDetail1 = new AdvancedModelRenderer(this, 32, 28); + this.ArmLeftDetail1.mirror = true; + this.ArmLeftDetail1.setRotationPoint(-1.75F, 1.0F, 0.0F); + this.ArmLeftDetail1.addBox(0.0F, 0.0F, -0.98F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail1, 0.0F, 0.0F, -0.1117010721276371F); + this.ArmLeftLower = new AdvancedModelRenderer(this, 52, 62); + this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); + this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); + this.FF3 = new AdvancedModelRenderer(this, 71, 60); + this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); + this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); + this.LegRightFootDetail1 = new AdvancedModelRenderer(this, 34, 11); + this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.ArmRightDetail12 = new AdvancedModelRenderer(this, 0, 18); + this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.LegRightFoot.addChild(this.LegRightFootDetail2); + this.ArmLeft.addChild(this.ArmLeftDetail11); + this.theHeadDetail7999.addChild(this.theHeadDetail2e768); + this.EarRB1.addChild(this.EarM1); + this.ArmRightLower.addChild(this.ArmRightLowerDetail1); + this.theHead.addChild(this.FF1); + this.headBack.addChild(this.headBack2); + this.EarRB1.addChild(this.EarRB2); + this.theHead.addChild(this.EarRight); + this.theHeadDetail.addChild(this.theHeadDetaile); + this.headBack1.addChild(this.headBack11); + this.EarRB2.addChild(this.EarRB3); + this.Neck.addChild(this.theHead); + this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.EarL2_1.addChild(this.EarL5); + this.Tail_mid4.addChild(this.Tail_end); + this.EarRB2Detail.addChild(this.EarRB2Detaildetail); + this.LegRightLower.addChild(this.LegRightLowerDetail); + this.EarR1.addChild(this.EarR2); + this.UpperBody.addChild(this.BodyDetailSideLeft); + this.theHead.addChild(this.EarLeft); + this.Tail_mid3.addChild(this.Tail_mid4); + this.ArmLeftLower.addChild(this.ArmLeftHand); + this.theHead.addChild(this.theHeadDetail2); + this.LegRightFoot.addChild(this.LegRightFootDetail); + this.FF1.addChild(this.FF4); + this.UpperBody.addChild(this.neckDetail4); + this.BodyLower.addChild(this.Tail_start); + this.LegLeft.addChild(this.LegLeftLower); + this.theHead.addChild(this.theHeadDetail1); + this.EarLB3.addChild(this.EarML3); + this.LegLeftFoot.addChild(this.LegLeftFootDetail); + this.EarRight.addChild(this.EarR1); + this.Tail_mid1.addChild(this.Tail_mid2); + this.Tail_start.addChild(this.Tail_mid1); + this.BodyLower.addChild(this.BodyLowerBack); + this.ArmRightHand.addChild(this.ArmRightFingerback); + this.ArmRightHand.addChild(this.ArmRightFingersBig); + this.theHeadDetail2.addChild(this.theHeadDetail2e); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); + this.ArmLeftHand.addChild(this.ArmLeftFingerback); + this.LegRightLower.addChild(this.LegRightLowerDetail1); + this.theHead.addChild(this.headBack); + this.Body.addChild(this.UpperBody); + this.BodyLower.addChild(this.BodyLowerSideRight); + this.Body.addChild(this.Neck); + this.Tail_mid2.addChild(this.Tail_mid3); + this.EarL2.addChild(this.EarL3); + this.Left_Wing.addChild(this.Left_Wing_Overlay); + this.ArmLeft.addChild(this.ArmLeftDetail); + this.ArmRight.addChild(this.Right_Wing); + this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.UpperBody.addChild(this.BodyDetailSideRight); + this.FF1.addChild(this.chek); + this.LegRightLower.addChild(this.LegRightFoot); + this.Body.addChild(this.ArmLeft); + this.ArmRight.addChild(this.ArmRightDetail); + this.ArmRight.addChild(this.ArmRightDetail1); + this.theHead.addChild(this.headfrontdetaila1); + this.EarR1.addChild(this.EarM2); + this.LegRight.addChild(this.LegDetailRight1); + this.LegLeftFoot.addChild(this.LegLeftFootDetail2); + this.LegRight.addChild(this.LegDetailRight); + this.UpperBody.addChild(this.neckDetail3); + this.BodyLower.addChild(this.BodyLDetail); + this.EarLB2Detail.addChild(this.EarLB2Detaildetail); + this.EarR2.addChild(this.EarR3); + this.BodyLower.addChild(this.BodyLowerSideLeft); + this.LegLeft.addChild(this.LegDetailLeft); + this.UpperBody.addChild(this.BodyDetailFront); + this.EarRB3.addChild(this.EarM3); + this.EarLB1.addChild(this.EarLB2); + this.BodyLower.addChild(this.BodyLDetail4); + this.theHead.addChild(this.theHeadDetail); + this.UpperBody.addChild(this.BodyDetailBack); + this.LegRight.addChild(this.LegRightLower); + this.BodyLower.addChild(this.BodyLDetail2); + this.EarLB2.addChild(this.EarLB3); + this.BodyLower.addChild(this.BodyLowerFront); + this.theHeadDetaile.addChild(this.theHeadDetailh); + this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); + this.EarLeft.addChild(this.EarL1); + this.UpperBody.addChild(this.neckDetail); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); + this.theHead.addChild(this.headBack1); + this.EarLeft.addChild(this.EarLB1); + this.ArmRightLower.addChild(this.ArmRightHand); + this.theHead.addChild(this.headfrontdetaila1_1); + this.BodyLower.addChild(this.LegLeft); + this.EarRight.addChild(this.EarRB1); + this.EarM2.addChild(this.EarM5); + this.ArmLeftHand.addChild(this.ArmLeftFingerfront); + this.ArmLeft.addChild(this.Left_Wing); + this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); + this.Body.addChild(this.ArmRight); + this.LegLeft.addChild(this.LegDetaiLeft1); + this.BodyLower.addChild(this.BodyLDetail1); + this.theHead.addChild(this.theHeadDetail7999); + this.ArmRightHand.addChild(this.ArmRightFingerfront); + this.LegLeftLower.addChild(this.LegLeftLowerDetail); + this.EarLB1.addChild(this.EarlM1); + this.BodyLower.addChild(this.LegRight); + this.theHeadDetail1.addChild(this.theHeadDetail1e); + this.theHeadDetail2e.addChild(this.theHeadDetail2h); + this.LegLeftLower.addChild(this.LegLeftLowerDetail1); + this.Body.addChild(this.BodyLower); + this.headBack11.addChild(this.headBack111); + this.LegLeftFoot.addChild(this.LegLeftFootDetail1); + this.FF1.addChild(this.chek1); + this.EarRB2.addChild(this.EarRB2Detail); + this.theHead.addChild(this.headtop); + this.headBack2.addChild(this.headBack113); + this.ArmLeft.addChild(this.ArmLeftDetail12); + this.Right_Wing.addChild(this.Right_Wing_Overlay); + this.EarL1.addChild(this.EarL2); + this.ArmLeftHand.addChild(this.ArmLeftFingerMid); + this.ArmRight.addChild(this.ArmRightDetail11); + this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); + this.EarLB2.addChild(this.EarLB2Detail); + this.theHeadDetail1e.addChild(this.theHeadDetail1h); + this.UpperBody.addChild(this.neckDetail2); + this.LegLeftLower.addChild(this.LegLeftFoot); + this.ArmRight.addChild(this.ArmRightLower); + this.EarL1.addChild(this.EarL2_1); + this.ArmLeftHand.addChild(this.ArmLeftFingersBig); + this.ArmRightHand.addChild(this.ArmRightFingerMid); + this.FF1.addChild(this.FF2); + this.ArmRightLower.addChild(this.ArmRightLowerDetail); + this.ArmLeft.addChild(this.ArmLeftDetail1); + this.ArmLeft.addChild(this.ArmLeftLower); + this.FF1.addChild(this.FF3); + this.LegRightFoot.addChild(this.LegRightFootDetail1); + this.ArmRight.addChild(this.ArmRightDetail12); + this.Left_Wing.setShouldScaleChildren(true); + this.Right_Wing.setShouldScaleChildren(true); + animator = ModelAnimator.create(); + this.updateDefaultPose(); + } + + @Override + public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + super.render(entityIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); + + if (this.isChild) + { + GL11.glPushMatrix(); + GL11.glTranslatef(0F, 1.5F-1.5F*0.35F, 0F); + GL11.glScalef(0.35F, 0.35F, 0.35F); + this.Body.render(scale); + GL11.glPopMatrix(); + } + else + { + GL11.glPushMatrix(); + GL11.glTranslatef(0F, 1.5F-1.5F*0.5F, 0F); + GL11.glScalef(0.5F, 0.5F, 0.5F); + this.Body.render(scale); + GL11.glPopMatrix(); + } + } + + public void setRotateAngle(AdvancedModelRenderer AdvancedAdvancedModelRenderer, float x, float y, float z) { + AdvancedAdvancedModelRenderer.rotateAngleX = x; + AdvancedAdvancedModelRenderer.rotateAngleY = y; + AdvancedAdvancedModelRenderer.rotateAngleZ = z; + } + + public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) + { + this.resetToDefaultPose(); + + this.Left_Wing.setScale(0, 0, 0); + this.Right_Wing.setScale(0, 0, 0); + + if (entitylivingbaseIn instanceof EntityFlyingLemur){ + + EntityFlyingLemur lemur = (EntityFlyingLemur)entitylivingbaseIn; + boolean gliding = false; + if(lemur.getOwner() != null) { + gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); + } + if (lemur.isPartying()) + { + this.state = State.PARTY; + //TODO + this.Body.rotateAngleY = -1.5F; + this.Body.rotateAngleX = 0.3F; + this.BodyLower.rotateAngleX = -0.3f; + this.Neck.rotateAngleX = -0.3F; + + this.ArmLeft.rotateAngleZ = -0.3f; + this.ArmRight.rotateAngleZ = 0.3f; + + this.LegRight.rotateAngleZ = -0.1f; + this.LegLeft.rotateAngleZ = 0.1f; + this.LegRight.rotateAngleY = -0.2f; + this.LegLeft.rotateAngleY = 0.2f; + this.LegRight.rotateAngleX = -0.35f; + this.LegLeft.rotateAngleX = -0.35f; + this.LegRightLower.rotateAngleX = 1.25f; + this.LegLeftLower.rotateAngleX = 1.25f; + + this.LegLeftFoot.rotateAngleY = -0.4f; + this.LegRightFoot.rotateAngleY = 0.4f; + + this.LegLeftFoot.rotateAngleZ = -0.1f; + this.LegRightFoot.rotateAngleZ = 0.1f; + this.LegLeftFoot.rotateAngleX = -0.8f; + this.LegRightFoot.rotateAngleX = -0.8f; + + + this.Tail_start.rotateAngleX = 0.2F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + /* + this.Tail_mid3.rotateAngleZ = -1F; + this.Tail_mid4.rotateAngleZ = -0.75F; + this.Tail_end.rotateAngleZ = -0.5F; + */ + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + + } + else if (lemur.isSitting() && !lemur.isPartying()) { + this.state = State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) + { + this.state = State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + + this.ArmRight.rotateAngleX = -1.75F; + this.ArmLeft.rotateAngleX = -1.75F; + this.ArmRight.rotateAngleY = 0.1F; + this.ArmLeft.rotateAngleY = -0.1F; + this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmRightLower.rotateAngleY = -0.4F; + this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmLeftHand.rotateAngleY = -2.6F; + + this.LegLeft.rotateAngleX = -1.5F; + this.LegRight.rotateAngleX = -1.5F; + this.LegLeft.rotateAngleY = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) + { + this.state = State.WALKING; + } + else { + this.state = State.STANDING; + } + } + //TODO + if (entitylivingbaseIn instanceof EntityAscendedFlyingLemur){ + + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)entitylivingbaseIn; + + if (lemur.isPartying()) + { + this.state = State.PARTY; + //TODO + this.Body.rotateAngleY = -1.5F; + this.Body.rotateAngleX = 0.3F; + this.BodyLower.rotateAngleX = -0.3f; + this.Neck.rotateAngleX = -0.3F; + + this.ArmLeft.rotateAngleZ = -0.3f; + this.ArmRight.rotateAngleZ = 0.3f; + + this.LegRight.rotateAngleZ = -0.1f; + this.LegLeft.rotateAngleZ = 0.1f; + this.LegRight.rotateAngleY = -0.2f; + this.LegLeft.rotateAngleY = 0.2f; + this.LegRight.rotateAngleX = -0.35f; + this.LegLeft.rotateAngleX = -0.35f; + this.LegRightLower.rotateAngleX = 1.25f; + this.LegLeftLower.rotateAngleX = 1.25f; + + this.LegLeftFoot.rotateAngleY = -0.4f; + this.LegRightFoot.rotateAngleY = 0.4f; + + this.LegLeftFoot.rotateAngleZ = -0.1f; + this.LegRightFoot.rotateAngleZ = 0.1f; + this.LegLeftFoot.rotateAngleX = -0.8f; + this.LegRightFoot.rotateAngleX = -0.8f; + + + this.Tail_start.rotateAngleX = 0.2F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + /* + this.Tail_mid3.rotateAngleZ = -1F; + this.Tail_mid4.rotateAngleZ = -0.75F; + this.Tail_end.rotateAngleZ = -0.5F; + */ + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + + } + else if (lemur.isSitting() && !lemur.isPartying()) { + this.state = State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying()) { + this.state = State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying()) { + this.state = State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying()) { + this.state = State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying()) { + this.state = State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) + { + this.state = State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + + this.ArmRight.rotateAngleX = -1.75F; + this.ArmLeft.rotateAngleX = -1.75F; + this.ArmRight.rotateAngleY = 0.1F; + this.ArmLeft.rotateAngleY = -0.1F; + this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmRightLower.rotateAngleY = -0.4F; + this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmLeftHand.rotateAngleY = -2.6F; + + this.LegLeft.rotateAngleX = -1.5F; + this.LegRight.rotateAngleX = -1.5F; + this.LegLeft.rotateAngleY = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) + { + this.state = State.WALKING; + } + else { + this.state = State.STANDING; + } + } + } + + + @Override + public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { + super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); + + float f = entityIn.ticksExisted; + float f1 = 0.5f; + float globalspeed = 1f; + float globalheight = 1f; + float globalDegree = 1f; + + if(this.state == State.FLYING){ + this.theHead.rotateAngleY =netHeadYaw * 0.007F; + this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.5F; + swing(ArmRight, 0.75F * globalspeed, 1F * globalDegree, false, 1, 0, f, f1); + swing(ArmLeft, 0.75F * globalspeed, 1F * globalDegree, true, 1, 0, f, f1); + walk(LegLeft,0.5F * globalspeed, 0.2F * globalDegree, true, 1, 0, f, f1); + walk(LegRight,0.5F * globalspeed, 0.2F * globalDegree, false, 1, 0, f, f1); + walk(Tail_start, 0.5F * globalspeed, 0.1F * globalDegree, false, 1.5F, 0, f, f1); + flap(Tail_start, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid2, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid3, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid4, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_end, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + + flap(EarRight, 0.5F * globalspeed, 0.1F * globalDegree, false, 1.5F, 0, f, f1); + flap(EarLeft, 0.5F * globalspeed, 0.1F * globalDegree, false, 0, 0, f, f1); + walk(EarRight,0.5F * globalspeed, 0.2F * globalDegree, true, 1, 0, f, f1); + walk(EarLeft,0.5F * globalspeed, 0.2F * globalDegree, false, 1, 0, f, f1); + + }else if(this.state == State.SITTING) { + + this.theHead.rotateAngleY =netHeadYaw * 0.017453292F; + this.theHead.rotateAngleX =headPitch * 0.017453292F; + bob(Body, 0.2F * globalspeed, 0.2F * globalheight, true, f, f1); + flap(Tail_start, 0.15F * globalspeed, 0.45F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.15F * globalspeed, 0.45F * globalDegree, false, 1F, 0, f, f1); + flap(Tail_mid2, 0.15F * globalspeed, 0.45F * globalDegree, false, 2F, 0, f, f1); + flap(Tail_mid3, 0.15F * globalspeed, 0.45F * globalDegree, false, 3F, 0, f, f1); + flap(Tail_mid4, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.5F, 0, f, f1); + flap(Tail_end, 0.15F * globalspeed, 0.45F * globalDegree, false, 4F, 0, f, f1); + + flap(EarRight, 0.15F * globalspeed, 0.3F * globalDegree, false, -1.5F, -1F, f, f1); + flap(EarLeft, 0.15F * globalspeed, 0.3F * globalDegree, false, 1.5F, 1F, f, f1); + + }else if(this.state == State.SPRINTING){ + + this.theHead.rotateAngleY =netHeadYaw * 0.007F; + this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.4F; + bob(Body, 0.5F * globalspeed, 5F * globalheight, false, f, f1); + walk(Body, 0.5F * globalspeed, 0.4F * globalDegree, false, 0F, 0.3F, f, f1); + walk(BodyLower, 0.5F * globalspeed, 0.5F * globalDegree, false, 1.5F, -0.75f, f, f1); + walk(LegRight, 0.5F * globalspeed, 1.75F * globalDegree, false, 1.5F, 0, f, f1); + walk(LegLeft, 0.5F * globalspeed, 1.75F * globalDegree, false, 1.5F, 0, f, f1); + walk(LegRightLower, 0.5F * globalspeed, 1F * globalDegree, false, -0.5F, 1.5F, f, f1); + walk(LegLeftLower, 0.5F * globalspeed, 1F * globalDegree, false, -0.5F, 1.5F, f, f1); + walk(Tail_start, 0.5F * globalspeed, 1F * globalDegree, true, 0, -1.5F, f, f1); + walk(ArmRight, 0.5F * globalspeed, 1.75F * globalDegree, false, 3.5F, -0.25f, f, f1); + walk(ArmLeft, 0.5F * globalspeed, 1.75F * globalDegree, false, 3.5F, -0.25f, f, f1); + walk(ArmRightLower, 0.5F * globalspeed, 1F * globalDegree, false, 3.5F, -1.5f, f, f1); + walk(ArmLeftLower, 0.5F * globalspeed, 1F * globalDegree, false, 3.5F, -1.5f, f, f1); + walk(ArmLeftHand, 0.5F * globalspeed, 1.2F * globalDegree, false, 3.5F, 1.25f, f, f1); + walk(ArmRightHand, 0.5F * globalspeed, 1.2F * globalDegree, false, 3.5F, 1.25f, f, f1); + flap(EarRight, 0.5F * globalspeed, 0.8F * globalDegree, false, 0, 0, f, f1); + flap(EarLeft, 0.5F * globalspeed, 0.8F * globalDegree, true, 0, 0, f, f1); + + }else if(this.state == State.STANDING) { + + this.theHead.rotateAngleY =netHeadYaw *0.017453292F; + this.theHead.rotateAngleX =headPitch * 0.017453292F; + + bob(Body, 0.1F * globalspeed, 0.3F * globalheight, false, f, f1); + flap(ArmRight, 0.1F * globalspeed, 0.2F * globalDegree, true, 0, -0.05f, f, f1); + flap(ArmLeft, 0.1F * globalspeed, 0.2F * globalDegree, false, 0, -0.05f, f, f1); + + walk(Tail_mid2, 0.075F * globalspeed, 0.15F * globalDegree, true, 10, 0, f, f1); + flap(Tail_start, 0.15F * globalspeed, 0.45F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.15F * globalspeed, 0.45F * globalDegree, false, 1F, 0, f, f1); + flap(Tail_mid2, 0.15F * globalspeed, 0.45F * globalDegree, false, 2F, 0, f, f1); + flap(Tail_mid3, 0.15F * globalspeed, 0.45F * globalDegree, false, 3F, 0, f, f1); + flap(Tail_mid4, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.5F, 0, f, f1); + flap(Tail_end, 0.15F * globalspeed, 0.45F * globalDegree, false, 4F, 0, f, f1); + flap(EarRight, 0.15F * globalspeed, 0.3F * globalDegree, false, -1.5F, -1F, f, f1); + flap(EarLeft, 0.15F * globalspeed, 0.3F * globalDegree, false, 1.5F, 1F, f, f1); + + }else if(this.state == State.WALKING) { + + this.theHead.rotateAngleY =netHeadYaw *0.017453292F; + this.theHead.rotateAngleX =headPitch * 0.017453292F; + + bob(Body, 0.3F * globalspeed, 0.3F * globalheight, false, f, f1); + + walk(ArmRight,0.3F * globalspeed, 0.45F * globalheight, false, 0, 0.5f, f, f1); + walk(ArmLeft,0.3F * globalspeed, 0.45F * globalheight, true, 0, -0.5f, f, f1); + + walk(ArmRightLower,0.3F * globalspeed, 0.45F * globalheight, false, 0, 0.5f, f, f1); + walk(ArmLeftLower,0.3F * globalspeed, 0.45F * globalheight, true, 0, -0.5f, f, f1); + + walk(LegRight,0.3F * globalspeed, 0.45F * globalheight, false, 0,0, f, f1); + walk(LegLeft,0.3F * globalspeed, 0.45F * globalheight, true, 0,0, f, f1); + + walk(LegRightLower,0.3F * globalspeed, 0.45F * globalheight, false, 0, 0.5F, f, f1); + walk(LegLeftLower,0.3F * globalspeed, 0.45F * globalheight, true, 0, -0.5F, f, f1); + + flap(ArmRight, 0.1F * globalspeed, 0.2F * globalDegree, true, 0, -0.05f, f, f1); + flap(ArmLeft, 0.1F * globalspeed, 0.2F * globalDegree, false, 0, -0.05f, f, f1); + walk(Tail_mid2, 0.075F * globalspeed, 0.15F * globalDegree, true, 10, 0, f, f1); + flap(Tail_start, 0.15F * globalspeed, 0.45F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.15F * globalspeed, 0.45F * globalDegree, false, 1F, 0, f, f1); + flap(Tail_mid2, 0.15F * globalspeed, 0.45F * globalDegree, false, 2F, 0, f, f1); + flap(Tail_mid3, 0.15F * globalspeed, 0.45F * globalDegree, false, 3F, 0, f, f1); + flap(Tail_mid4, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.5F, 0, f, f1); + flap(Tail_end, 0.15F * globalspeed, 0.45F * globalDegree, false, 4F, 0, f, f1); + flap(EarRight, 0.15F * globalspeed, 0.3F * globalDegree, false, -1.5F, -1F, f, f1); + flap(EarLeft, 0.15F * globalspeed, 0.3F * globalDegree, false, 1.5F, 1F, f, f1); + + } else if(this.state == State.ONRIGHTSHOULDER) { + + + flap(Tail_start, 0.15F * globalspeed, 0.45F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.15F * globalspeed, 0.45F * globalDegree, false, 1F, 0, f, f1); + walk(Tail_mid1, 0.15F * globalspeed, 0.15F * globalDegree, true, 1f, 0, f, f1); + flap(Tail_mid2, 0.15F * globalspeed, 0.45F * globalDegree, false, 2F, 0, f, f1); + flap(Tail_mid3, 0.15F * globalspeed, 0.45F * globalDegree, false, 3F, 0, f, f1); + flap(Tail_mid4, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.5F, 0, f, f1); + walk(Tail_mid4, 0.15F * globalspeed, 0.15F * globalDegree, true, 4f, 0, f, f1); + flap(Tail_end, 0.15F * globalspeed, 0.45F * globalDegree, false, 4F, 0, f, f1); + flap(EarRight, 0.15F * globalspeed, 0.3F * globalDegree, false, -1.5F, -1F, f, f1); + flap(EarLeft, 0.15F * globalspeed, 0.3F * globalDegree, false, 1.5F, 1F, f, f1); + + } + else if(this.state == State.ONLEFTSHOULDER) { + + flap(Tail_start, 0.15F * globalspeed, 0.45F * globalDegree, false, 0.1F, 0, f, f1); + flap(Tail_mid1, 0.15F * globalspeed, 0.45F * globalDegree, false, 1.1F, 0, f, f1); + flap(Tail_mid2, 0.15F * globalspeed, 0.45F * globalDegree, false, 2.1F, 0, f, f1); + flap(Tail_mid3, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.1F, 0, f, f1); + flap(Tail_mid4, 0.15F * globalspeed, 0.45F * globalDegree, false, 3.6F, 0, f, f1); + flap(Tail_end, 0.15F * globalspeed, 0.45F * globalDegree, false, 4.1F, 0, f, f1); + flap(EarRight, 0.15F * globalspeed, 0.3F * globalDegree, false, -1.6F, -1F, f, f1); + flap(EarLeft, 0.15F * globalspeed, 0.3F * globalDegree, false, 1.6F, 1F, f, f1); + + } + else if(this.state == State.ELYTRALEFTSHOULDER) { //LEFT + //TODO + this.theHead.rotateAngleY =netHeadYaw * 0.007F; + this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.5F; + swing(ArmRight, 0.2F * globalspeed, 0.7F * globalDegree, false, 1.5F, 0, f, f1); + swing(ArmLeft, 0.2F * globalspeed, 0.7F * globalDegree, true, 1.5F, 0, f, f1); + walk(LegLeft,0.1F * globalspeed, 0.2F * globalDegree, true, 1.5F, 0, f, f1); + walk(LegRight,0.1F * globalspeed, 0.2F * globalDegree, false, 1.5F, 0, f, f1); + walk(Tail_start, 0.1F * globalspeed, 0.1F * globalDegree, false, 2F, 0, f, f1); + flap(Tail_start, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + flap(Tail_mid1, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + flap(Tail_mid2, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + flap(Tail_mid3, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + flap(Tail_mid4, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + flap(Tail_end, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.5F, 0, f, f1); + + flap(EarRight, 0.1F * globalspeed, 0.1F * globalDegree, false, 1.7F, 0, f, f1); + flap(EarLeft, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + walk(EarRight,0.1F * globalspeed, 0.2F * globalDegree, true, 1.2F, 0, f, f1); + walk(EarLeft,0.1F * globalspeed, 0.2F * globalDegree, false, 1.2F, 0, f, f1); + } + else if(this.state == State.ELYTRARIGHTSHOULDER) { //RIGHT + //TODO + this.theHead.rotateAngleY =netHeadYaw * 0.007F; + this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.5F; + swing(ArmRight, 0.2F * globalspeed, 0.7F * globalDegree, false, 1.2F, 0, f, f1); + swing(ArmLeft, 0.2F * globalspeed, 0.7F * globalDegree, true, 1.2F, 0, f, f1); + walk(LegLeft,0.1F * globalspeed, 0.2F * globalDegree, true, 1.2F, 0, f, f1); + walk(LegRight,0.1F * globalspeed, 0.2F * globalDegree, false, 1.2F, 0, f, f1); + walk(Tail_start, 0.1F * globalspeed, 0.1F * globalDegree, false, 1.7F, 0, f, f1); + flap(Tail_start, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + flap(Tail_mid1, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + flap(Tail_mid2, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + flap(Tail_mid3, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + flap(Tail_mid4, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + flap(Tail_end, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + + flap(EarRight, 0.1F * globalspeed, 0.1F * globalDegree, false, 1.7F, 0, f, f1); + flap(EarLeft, 0.1F * globalspeed, 0.1F * globalDegree, false, 0.2F, 0, f, f1); + walk(EarRight,0.1F * globalspeed, 0.2F * globalDegree, true, 1.2F, 0, f, f1); + walk(EarLeft,0.1F * globalspeed, 0.2F * globalDegree, false, 1.2F, 0, f, f1); + } + else if(this.state == State.PARTY) { //RIGHT + globalspeed = 2f; + bob(Body, 0.35F * globalspeed, -0.75F * globalheight, false, f, f1); + bob(BodyLower, 0.15F * globalspeed, 0.55F * globalheight, false, f, f1); + bob(theHead, 0.35F * globalspeed, -1.0F * globalheight, false, f, f1); + + walk(ArmRight, 0.7F * globalspeed, 1.25F * globalDegree, true, 1, 2.5F, f, f1); + walk(ArmLeft, 0.7F * globalspeed, 1.25F * globalDegree, false, 1, -2.5F, f, f1); + walk(ArmRightLower, 0.7F * globalspeed, 0.7F * globalDegree, true, 0.5F, 0, f, f1); + walk(ArmLeftLower, 0.7F * globalspeed, 0.7F * globalDegree, false, 0.5F, 0, f, f1); + walk(ArmRightHand, 0.7F * globalspeed, 2F * globalDegree, true, 0.1F, 0, f, f1); + walk(ArmLeftHand, 0.7F * globalspeed, 2F * globalDegree, false, -0.1F, 0, f, f1); + swing(theHead, 0.35F * globalspeed, 0.5F * globalDegree, false, 0, 3.0F, f, f1); + swing(Tail_start, 0.35F * globalspeed, 0.5F * globalDegree, false, 0, 0, f, f1); + flap(Tail_start, 0.35F * globalspeed, 0.5F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid1, 0.35F * globalspeed, 1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid2, 0.35F * globalspeed, 1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid3, 0.35F * globalspeed, 1F * globalDegree, false, 0, 0, f, f1); + flap(Tail_mid4, 0.35F * globalspeed, 1.5F * globalDegree, false, 0, 0, f, f1); + flap(Tail_end, 0.35F * globalspeed, 2.5F * globalDegree, false, 0, 0, f, f1); + + flap(EarRight, 0.17F * globalspeed, 0.3F * globalDegree, false, -1.5F, -1F, f, f1); + flap(EarLeft, 0.17F * globalspeed, 0.3F * globalDegree, false, 1.5F, 1F, f, f1); + + } + + + } + private float triangleWave(float p_78172_1_, float p_78172_2_) + { + return (Math.abs(p_78172_1_ % p_78172_2_ - p_78172_2_ * 0.5F) - p_78172_2_ * 0.25F) / (p_78172_2_ * 0.25F); + } + @SideOnly(Side.CLIENT) + static enum State + { + FLYING, + SPRINTING, + SITTING, + STANDING, + WALKING, + ONRIGHTSHOULDER, + ONLEFTSHOULDER, + ELYTRARIGHTSHOULDER, + ELYTRALEFTSHOULDER, + PARTY; + } +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java new file mode 100644 index 0000000000..401a0a3b5c --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java @@ -0,0 +1,46 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.AvatarInfo; +import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +/** + * @author Korog3 + */ +@SideOnly(Side.CLIENT) +public class RenderAscendedLemur extends RenderLiving{ + +public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + + public RenderAscendedLemur(RenderManager manager) { + super(manager, new ModelLemur(), 0.20F); + + } + + @Override + protected ResourceLocation getEntityTexture(EntityAscendedFlyingLemur entity) { + return TEXTURES; + } + + @Override + protected void applyRotations(EntityAscendedFlyingLemur entityLiving, float p_77043_2_, float rotationYaw, float partialTicks) { + super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks); + } + + public static class RenderFactory implements IRenderFactory { + + @Override + public Render createRenderFor(RenderManager manager) { + return new RenderAscendedLemur(manager); + } + + } + + +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java new file mode 100644 index 0000000000..9a747789dd --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java @@ -0,0 +1,46 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.AvatarInfo; +import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +/** + * @author Korog3 + */ +@SideOnly(Side.CLIENT) +public class RenderAscendedLlibraryLemur extends RenderLiving{ + +public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + + public RenderAscendedLlibraryLemur(RenderManager manager) { + super(manager, new ModelLlibraryLemur(), 0.20F); + + } + + @Override + protected ResourceLocation getEntityTexture(EntityAscendedFlyingLemur entity) { + return TEXTURES; + } + + @Override + protected void applyRotations(EntityAscendedFlyingLemur entityLiving, float p_77043_2_, float rotationYaw, float partialTicks) { + super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks); + } + + public static class RenderFactory implements IRenderFactory { + + @Override + public Render createRenderFor(RenderManager manager) { + return new RenderAscendedLlibraryLemur(manager); + } + + } + + +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java new file mode 100644 index 0000000000..319b81455c --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java @@ -0,0 +1,49 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.AvatarInfo; +import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +/** + * @author Korog3 + */ + +@SideOnly(Side.CLIENT) +public class RenderLemur extends RenderLiving{ + + + +public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + + public RenderLemur(RenderManager manager) { + super(manager, new ModelLemur(), 0.2F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityFlyingLemur entity) { + return TEXTURES; + } + + @Override + protected void applyRotations(EntityFlyingLemur entityLiving, float p_77043_2_, float rotationYaw, float partialTicks) { + super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks); + } + + + + public static class RenderFactory implements IRenderFactory { + + @Override + public Render createRenderFor(RenderManager manager) { + return new RenderLemur(manager); + } + + } + +} diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java new file mode 100644 index 0000000000..1fa3c47be8 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java @@ -0,0 +1,49 @@ +package com.crowsofwar.avatar.client.render; + +import com.crowsofwar.avatar.AvatarInfo; +import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +/** + * @author Korog3 + */ + +@SideOnly(Side.CLIENT) +public class RenderLlibraryLemur extends RenderLiving{ + + + +public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + + public RenderLlibraryLemur(RenderManager manager) { + super(manager, new ModelLlibraryLemur(), 0.2F); + } + + @Override + protected ResourceLocation getEntityTexture(EntityFlyingLemur entity) { + return TEXTURES; + } + + @Override + protected void applyRotations(EntityFlyingLemur entityLiving, float p_77043_2_, float rotationYaw, float partialTicks) { + super.applyRotations(entityLiving, p_77043_2_, rotationYaw, partialTicks); + } + + + + public static class RenderFactory implements IRenderFactory { + + @Override + public Render createRenderFor(RenderManager manager) { + return new RenderLlibraryLemur(manager); + } + + } + +} diff --git a/src/main/java/com/crowsofwar/avatar/client/sounds/SoundsHandler.java b/src/main/java/com/crowsofwar/avatar/client/sounds/SoundsHandler.java new file mode 100644 index 0000000000..513be55196 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/client/sounds/SoundsHandler.java @@ -0,0 +1,30 @@ +package com.crowsofwar.avatar.client.sounds; + + +import com.crowsofwar.avatar.AvatarInfo; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.fml.common.registry.ForgeRegistries; + +public class SoundsHandler +{ + public static SoundEvent ENTITY_FLYINGLEMUR_AMBIENT,ENTITY_FLYINGLEMUR_HURT,ENTITY_FLYINGLEMUR_DEATH; + + public static void registerSounds() + { + + ENTITY_FLYINGLEMUR_AMBIENT = registerSound("entity.momo.ambient"); + ENTITY_FLYINGLEMUR_HURT = registerSound("entity.momo.hurt"); + ENTITY_FLYINGLEMUR_DEATH = registerSound("entity.momo.death"); + + } + + private static SoundEvent registerSound(String name) + { + ResourceLocation location = new ResourceLocation(AvatarInfo.MOD_ID, name); + SoundEvent event = new SoundEvent(location); + event.setRegistryName(name); + ForgeRegistries.SOUND_EVENTS.register(event); + return event; + } +} diff --git a/src/main/java/com/crowsofwar/avatar/common/capabilities/CapabilityPlayerShoulders.java b/src/main/java/com/crowsofwar/avatar/common/capabilities/CapabilityPlayerShoulders.java new file mode 100644 index 0000000000..16b413a4dd --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/capabilities/CapabilityPlayerShoulders.java @@ -0,0 +1,33 @@ +package com.crowsofwar.avatar.common.capabilities; + +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import net.minecraft.nbt.NBTBase; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityInject; +import net.minecraftforge.common.capabilities.CapabilityManager; + +public class CapabilityPlayerShoulders { + + @CapabilityInject(IPlayerShoulders.class) + public static Capability TEST_HANDLER = null; + + public static void register() + { + CapabilityManager.INSTANCE.register(IPlayerShoulders.class, new Capability.IStorage() + { + + @Override + public NBTBase writeNBT(Capability capability, IPlayerShoulders instance, EnumFacing side) { + return null; + } + + @Override + public void readNBT(Capability capability, IPlayerShoulders instance, EnumFacing side, NBTBase base) + { + + } + + }, PlayerShouldersHandler::new); + } +} diff --git a/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShoulderProvider.java b/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShoulderProvider.java new file mode 100644 index 0000000000..8da4b59ce3 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShoulderProvider.java @@ -0,0 +1,22 @@ +package com.crowsofwar.avatar.common.capabilities; + +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; + +public class PlayerShoulderProvider implements ICapabilityProvider { + + private IPlayerShoulders instance = CapabilityPlayerShoulders.TEST_HANDLER.getDefaultInstance(); + + @Override + public boolean hasCapability(Capability capability, EnumFacing facing) { + return capability == CapabilityPlayerShoulders.TEST_HANDLER; + } + + @Override + public T getCapability(Capability capability, EnumFacing facing) { + return capability == CapabilityPlayerShoulders.TEST_HANDLER ? CapabilityPlayerShoulders.TEST_HANDLER. cast(this.instance) : null; + } + +} diff --git a/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShouldersHandler.java b/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShouldersHandler.java new file mode 100644 index 0000000000..5dbdab5125 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/capabilities/PlayerShouldersHandler.java @@ -0,0 +1,64 @@ +package com.crowsofwar.avatar.common.capabilities; + +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import com.google.common.collect.Lists; +import net.minecraft.entity.Entity; + +import java.util.Collections; +import java.util.List; + +public class PlayerShouldersHandler implements IPlayerShoulders { + + private boolean rightshoulder; + private boolean leftshoulder; + private boolean isriding = false; + + private final List riders; + + public PlayerShouldersHandler() { + this.riders = Lists.newArrayList(); + } + + @Override + public List getRiders() { + return (List)(this.riders.isEmpty() ? Collections.emptyList() : Lists.newArrayList(this.riders)); + } + + @Override + public void removeRiders(Entity passenger) { + this.riders.remove(passenger); + } + + @Override + public void addRiders(Entity passenger) { + this.riders.add(passenger); + } + + @Override + public boolean getRightShoulder() { + return this.rightshoulder; + } + + @Override + public boolean getLeftShoulder() { + + return this.leftshoulder; + } + + @Override + public void setRightShoulder(boolean set) { + this.rightshoulder = set; + } + + @Override + public void setLeftShoulder(boolean set) { + this.leftshoulder = set; + } + + @Override + public void removeAllRiders() { + this.riders.clear(); + + } + +} diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java new file mode 100644 index 0000000000..582b751daf --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java @@ -0,0 +1,686 @@ +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import com.crowsofwar.avatar.client.sounds.SoundsHandler; +import com.crowsofwar.avatar.common.capabilities.CapabilityPlayerShoulders; +import com.google.common.collect.Sets; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLeaves; +import net.minecraft.block.BlockLog; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityAgeable; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityFlying; +import net.minecraft.entity.passive.EntityTameable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; +import net.minecraft.pathfinding.PathNavigate; +import net.minecraft.pathfinding.PathNavigateFlying; +import net.minecraft.pathfinding.PathNavigateGround; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nullable; +import java.util.Set; +import java.util.UUID; + +/** + * @author Korog3a + */ + +public class EntityAscendedFlyingLemur extends EntityTameable implements EntityFlying +{ private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); +private static final Set TEMPTATION_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE); +protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); +protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); + +public double speed; +private boolean isActualyFlying; +private boolean previusRidingPos; +private boolean islemurriding; +private boolean partyLemur;//TODO +private BlockPos jukeboxPosition; +public EntityAscendedFlyingLemur(World worldIn) +{ + super(worldIn); + this.setSize(0.3F, 1F); + this.moveHelper = new EntityFlyHelper(this); + experienceValue = 200; +} + + +@Override +protected void initEntityAI() +{ + this.aiSit = new EntityAISit(this); + this.tasks.addTask(1, new EntityAISwimming(this)); + this.tasks.addTask(2, this.aiSit); + this.tasks.addTask(4, new EntityAIWanderAvoidWater(this, 1.0D)); + this.tasks.addTask(4, new EntityAIWanderAvoidWaterFlying(this, 1.25D)); + this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); + this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1F, 10F, 2F)); + this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); + this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.5D, true)); + this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); + this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); + this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); + this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); + +} + @Override + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) + { + + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) + { + IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + this.setSitting(false); + for(Entity lemurs : playerShoulders.getRiders()) { + System.out.println("Lemur :" + lemurs.getName()); + } + System.out.println("END OF LIST"); + if(playerShoulders.getRiders().size() == 0) + { + if(!previusRidingPos) + { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("Right"); + } + else + { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("Left"); + } + + playerShoulders.addRiders(this); + } + else { + if(playerShoulders.getRiders().size() < 2) + { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) + { + if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("***Left"); + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("***Right"); + playerShoulders.addRiders(this); + } + } + else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("***Left"); + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("***Right"); + playerShoulders.addRiders(this); + + } + } + + } + } + } + + + + + } + + return super.applyPlayerInteraction(player, vec, hand); + } + + public boolean isLemurRiding() { + if(!this.getLeftShoulder() && !this.getRightShoulder()) { + this.height = 1f; + this.width = 0.3f; + } + return this.getLeftShoulder() || this.getRightShoulder(); + } + + @Override + public void onLivingUpdate() + { + super.onLivingUpdate(); + + updatespeed(!this.isLemurRiding()); + + if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); + + + if(this.ticksExisted % 200 == 0 ) { + if(this.getMoveHelper() instanceof EntityFlyHelper) { + this.moveHelper = new EntityMoveHelper(this); + } + else { + if(!this.isInWater() && !this.isInLove()) { + this.moveHelper = new EntityFlyHelper(this); + } + } + + } + + + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) + { + this.partyLemur = false; + this.jukeboxPosition = null; + } + + if (this.ticksExisted % 15 == 0 && !this.isActualyFlying && !this.isLemurRiding()) { + this.isActualyFlying = true; + } + + + if(this.isLemurRiding()) { + if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { + this.setRotation(this.getOwner().renderYawOffset, 0); + this.setRotationYawHead(this.getOwner().renderYawOffset); + this.setRenderYawOffset(this.getOwner().renderYawOffset); + if(this.isChild()) { + + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + }else { + + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + } + + + } + + } + + + } + + @SideOnly(Side.CLIENT) + public void setPartying(BlockPos pos, boolean p_191987_2_) + { + this.jukeboxPosition = pos; + this.partyLemur = p_191987_2_; + } + + @SideOnly(Side.CLIENT) + public boolean isPartying() + { + return this.partyLemur; + } + + + @Override + public boolean canBeCollidedWith() { + if(this.isLemurRiding()) return false; + return super.canBeCollidedWith(); + } + + public boolean getLeftShoulder() { + return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; + } + public boolean getRightShoulder() { + + return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; + } + + public void setLeftShoulder(boolean ride) { + byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + public void setRightShoulder(boolean ride) { + + byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + + @Override + protected boolean canDespawn() { + return false; + } + + @Override + protected void entityInit() + { + super.entityInit(); + this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + } + + public boolean isFlying() + { + if(this.onGround || this.isLemurRiding() || this.isInWater()) return false; + return this.isActualyFlying; + } + + public void updatespeed(boolean canUpdate) { + if(canUpdate) { + double motionX = this.posX - this.prevPosX; + double motionY = this.posY - this.prevPosY; + double motionZ = this.posZ - this.prevPosZ; + this.speed = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + } + } + protected PathNavigate createNavigator(World worldIn) + { + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); + + + pathnavigateflying.setCanFloat(true); + pathnavigateflying.setCanOpenDoors(true); + pathnavigateflying.setCanEnterDoors(true); + pathnavigateground.setEnterDoors(true); + pathnavigateground.setCanSwim(true); + + if(this.getMoveHelper() instanceof EntityFlyHelper) + { + return pathnavigateflying; + } + + if(this.getMoveHelper() instanceof EntityMoveHelper) + { + return pathnavigateground; + } + + return pathnavigateground; + } + public float getEyeHeight() + { + if(this.isFlying() || this.isLemurRiding() ) { + return 0.1F; + } + else { + if(this.isSitting()) { + return 0.65F; + } + else { + return 0.85F; + } + } + + } + @Override + public double getYOffset() { + if(this.getOwner() != null && this.getOwner().isSneaking()) { + if(this.isChild()) { + return 0.15F; + }else { + return 0.50F; + } + } + else { + if(this.isChild()) { + return 0.3F; + }else { + return 0.45F; + } + } + + } + public void fall(float distance, float damageMultiplier) + { + if(!this.isFlying()) { + super.fall(distance, damageMultiplier); + } + + } + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) + { + if(!this.isFlying()) { + super.updateFallState(y, onGroundIn, state, pos); + } + + } + public boolean getCanSpawnHere() + { + int i = MathHelper.floor(this.posX); + int j = MathHelper.floor(this.getEntityBoundingBox().minY); + int k = MathHelper.floor(this.posZ); + BlockPos blockpos = new BlockPos(i, j, k); + Block block = this.world.getBlockState(blockpos.down()).getBlock(); + return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); + } + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); + this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); + this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); + } + public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) + { + super.setAttackTarget(entitylivingbaseIn); + + if (entitylivingbaseIn == null) + { + this.setAngry(false); + } + else if (!this.isTamed()) + { + this.setAngry(true); + } + } + /* + * Config - End + */ + + public int getVerticalFaceSpeed() + { + return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); + } + public boolean attackEntityFrom(DamageSource source, float amount) + { + if (this.isEntityInvulnerable(source)) + { + return false; + } + else + { + Entity entity = source.getTrueSource(); + + if (this.aiSit != null) + { + this.aiSit.setSitting(false); + } + + + + if (entity instanceof EntityPlayer) + { + if(!((EntityPlayer) entity).isCreative()) return false; + + } + else + { + if(source != source.OUT_OF_WORLD) { + return false; + } + } + + return super.attackEntityFrom(source, amount); + } + } + public boolean attackEntityAsMob(Entity entityIn) + { + boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); + + if (flag) + { + this.applyEnchantments(this, entityIn); + } + + return flag; + } + public void setTamed(boolean tamed) + { + super.setTamed(tamed); + } + public boolean processInteract(EntityPlayer player, EnumHand hand) + { + ItemStack itemstack = player.getHeldItem(hand); + + if (this.isTamed()) + { + if (!itemstack.isEmpty()) + { + if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + this.heal(10); + return true; + } + } + + if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) + { + this.aiSit.setSitting(!this.isSitting()); + this.isJumping = false; + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + } + } + else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + if (!this.world.isRemote) + { + if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) + { + this.setTamedBy(player); + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + this.aiSit.setSitting(true); + this.setHealth(30.0F); + this.playTameEffect(true); + this.world.setEntityState(this, (byte)7); + } + else + { + this.playTameEffect(false); + this.world.setEntityState(this, (byte)6); + } + } + + return true; + } + + return super.processInteract(player, hand); + } + public boolean canBeLeashedTo(EntityPlayer player) + { + return !this.isAngry() && super.canBeLeashedTo(player); + } + public int getMaxSpawnedInChunk() + { + return 8; + } + + /* + * Emotions - Start + */ + @Override + public void writeEntityToNBT(NBTTagCompound compound) + { + super.writeEntityToNBT(compound); + compound.setBoolean("Angry", this.isAngry()); + } + @Override + public void readEntityFromNBT(NBTTagCompound compound) + { + super.readEntityFromNBT(compound); + this.setAngry(compound.getBoolean("Angry")); + } + public boolean isAngry() + { + return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; + } + public void setAngry(boolean angry) + { + byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); + + if (angry) + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 | 2))); + } + else + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); + } + } + /* + * Emotions - End + */ + + /* + * Mating - Start + */ + public boolean isBreedingItem(ItemStack stack) + { + return stack.getItem() == Items.GOLDEN_APPLE; + } + @Override + public EntityAgeable createChild(EntityAgeable ageable) + { + EntityAscendedFlyingLemur entitymonkey = new EntityAscendedFlyingLemur(this.world); + UUID uuid = this.getOwnerId(); + + if (uuid != null) + { + entitymonkey.setOwnerId(uuid); + entitymonkey.setTamed(true); + } + + return entitymonkey; + } + public boolean canMateWith(EntityAnimal otherAnimal) + { + if (otherAnimal == this) + { + return false; + } + else if (!this.isTamed()) + { + return false; + } + else if (!(otherAnimal instanceof EntityAscendedFlyingLemur)) + { + return false; + } + else + { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)otherAnimal; + + if (!lemur.isTamed()) + { + return false; + } + else if (lemur.isSitting()) + { + return false; + } + else + { + return this.isInLove() && lemur.isInLove(); + } + } + } + /* + * Mating - End + */ + + /* + * Sounds - Start + */ + protected SoundEvent getAmbientSound() + { + return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; + } + protected SoundEvent getHurtSound(DamageSource damageSourceIn) + { + return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; + } + protected SoundEvent getDeathSound() + { + return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; + } + protected float getSoundVolume() + { + return 1.75F; + } + /* + * Sounds - End + */ + + /* + * Particle Effects - Start + */ + public void playRideEffect(boolean play) { + EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; + for (int i = 0; i < 4; ++i) + { + double d0 = this.rand.nextGaussian() * 0.02D; + double d1 = this.rand.nextGaussian() * 0.02D; + double d2 = this.rand.nextGaussian() * 0.02D; + this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); + } + } + /* + * Particle Effects - End + */ +} \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java new file mode 100644 index 0000000000..35dc23ea25 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java @@ -0,0 +1,695 @@ +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import com.crowsofwar.avatar.client.sounds.SoundsHandler; +import com.crowsofwar.avatar.common.capabilities.CapabilityPlayerShoulders; +import com.google.common.collect.Sets; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLeaves; +import net.minecraft.block.BlockLog; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityAgeable; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityFlying; +import net.minecraft.entity.passive.EntityTameable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.network.datasync.EntityDataManager; +import net.minecraft.pathfinding.PathNavigate; +import net.minecraft.pathfinding.PathNavigateFlying; +import net.minecraft.pathfinding.PathNavigateGround; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nullable; +import java.util.Set; +import java.util.UUID; + +/** + * @author Korog3 + */ + +public class EntityFlyingLemur extends EntityTameable implements EntityFlying +{ + private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); + private static final Set TEMPTATION_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE); + protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); + protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); + + public double speed; + private boolean isActualyFlying; + private boolean previusRidingPos; + private boolean islemurriding; + + private boolean partyLemur;//TODO + private BlockPos jukeboxPosition; + public EntityFlyingLemur(World worldIn) + { + super(worldIn); + this.setSize(0.3F, 1F); + this.moveHelper = new EntityFlyHelper(this); + experienceValue = 200; + + } + + @Override + protected void initEntityAI() + { + this.aiSit = new EntityAISit(this); + this.tasks.addTask(1, new EntityAISwimming(this)); + this.tasks.addTask(2, this.aiSit); + this.tasks.addTask(4, new EntityAIWanderAvoidWater(this, 1.0D)); + this.tasks.addTask(4, new EntityAIWanderAvoidWaterFlying(this, 1.0D)); + this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); + this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0F, 10F, 2.0F)); + this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); + this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.5D, true)); + this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); + this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); + this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); + this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); + + } + @Override + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) + { + + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) + { + IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + this.setSitting(false); + for(Entity lemurs : playerShoulders.getRiders()) { + System.out.println("Lemur :" + lemurs.getName()); + } + System.out.println("END OF LIST"); + if(playerShoulders.getRiders().size() == 0) + { + if(!previusRidingPos) + { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("Right"); + } + else + { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("Left"); + } + + playerShoulders.addRiders(this); + } + else { + if(playerShoulders.getRiders().size() < 2) + { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) + { + if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("***Left"); + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("***Right"); + playerShoulders.addRiders(this); + } + } + else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + System.out.println("***Left"); + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + System.out.println("***Right"); + playerShoulders.addRiders(this); + + } + } + + } + } + } + + + + + } + + return super.applyPlayerInteraction(player, vec, hand); + } + + public boolean isLemurRiding() { + if(!this.getLeftShoulder() && !this.getRightShoulder()) { + this.height = 1f; + this.width = 0.3f; + } + return this.getLeftShoulder() || this.getRightShoulder(); + } + + + + @Override + public void onCollideWithPlayer(EntityPlayer entityIn) { + if(entityIn.posY >= this.height + 0.01f + this.posY + && entityIn.posX <= this.posX+this.width/2 && entityIn.posX >= this.posX-this.width/2 && + entityIn.posZ <= this.posZ+this.width/2 && entityIn.posZ >= this.posZ-this.width/2) { + + + entityIn.motionY = 0; + + } + // EnumParticleTypes enumparticletypes = EnumParticleTypes.DRIP_LAVA; + //this.world.spawnParticle(enumparticletypes, this.posX+this.width/2, this.posY+this.height, this.posZ, 1, 1, 1, 1); I use particles to debug xD + //this.world.spawnParticle(enumparticletypes, this.posX-this.width/2, this.posY+this.height, this.posZ, 1, 1, 1, 1); + super.onCollideWithPlayer(entityIn);//-this.width/2 + } + + @Override + public void onLivingUpdate() + { + super.onLivingUpdate(); + + updatespeed(!this.isLemurRiding()); + + if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); + + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) + { + this.partyLemur = false; + this.jukeboxPosition = null; + } + + if(this.ticksExisted % 200 == 0 ) { + if(this.getMoveHelper() instanceof EntityFlyHelper) { + this.moveHelper = new EntityMoveHelper(this); + } + else { + if(!this.isInWater() && !this.isInLove()) { + this.moveHelper = new EntityFlyHelper(this); + } + } + + } + + if (this.ticksExisted % 15 == 0 && !this.isActualyFlying && !this.isLemurRiding()) { + this.isActualyFlying = true; + } + + + + + if(this.isLemurRiding()) { + if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { + this.setRotation(this.getOwner().renderYawOffset, 0); + if(this.isFlying()){ + this.setRotationYawHead(this.getOwner().rotationYaw); + }else{ + this.setRotationYawHead(this.getOwner().renderYawOffset); + } + + this.setRenderYawOffset(this.getOwner().renderYawOffset); + if(this.isChild()) { + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + }else { + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + } + + + } + } + + + } + + @SideOnly(Side.CLIENT) + public void setPartying(BlockPos pos, boolean p_191987_2_) + { + this.jukeboxPosition = pos; + this.partyLemur = p_191987_2_; + } + + @SideOnly(Side.CLIENT) + public boolean isPartying() + { + return this.partyLemur; + } + + + @Override + public boolean canBeCollidedWith() { + if(this.isLemurRiding()) return false; + return super.canBeCollidedWith(); + } + + public boolean getLeftShoulder() { + return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; + } + public boolean getRightShoulder() { + + return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; + } + + public void setLeftShoulder(boolean ride) { + byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + public void setRightShoulder(boolean ride) { + + byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + + @Override + protected boolean canDespawn() { + return false; + } + + + @Override + protected void entityInit() + { + super.entityInit(); + this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + } + + public boolean isFlying() + { + if(this.onGround || this.isLemurRiding() || this.isInWater()) return false; + return this.isActualyFlying; + } + + public void updatespeed(boolean canUpdate) { + if(canUpdate) { + double motionX = this.posX - this.prevPosX; + double motionY = this.posY - this.prevPosY; + double motionZ = this.posZ - this.prevPosZ; + this.speed = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + } + } + protected PathNavigate createNavigator(World worldIn) + { + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); + + + pathnavigateflying.setCanFloat(true); + pathnavigateflying.setCanOpenDoors(true); + pathnavigateflying.setCanEnterDoors(true); + pathnavigateground.setEnterDoors(true); + pathnavigateground.setCanSwim(true); + + if(this.getMoveHelper() instanceof EntityFlyHelper) + { + return pathnavigateflying; + } + + if(this.getMoveHelper() instanceof EntityMoveHelper) + { + return pathnavigateground; + } + + return pathnavigateflying; + } + public float getEyeHeight() + { + if(this.isFlying() || this.isLemurRiding() ) { + return 0.1F; + } + else { + if(this.isSitting()) { + return 0.65F; + } + else { + return 0.85F; + } + } + + } + @Override + public double getYOffset() { + if(this.getOwner() != null && this.getOwner().isSneaking()) { + if(this.isChild()) { + return 0.15F; + }else { + return 0.50F; + } + } + else { + if(this.isChild()) { + return 0.3F; + }else { + return 0.45F; + } + } + + } + public void fall(float distance, float damageMultiplier) + { + if(!this.isFlying()) { + super.fall(distance, damageMultiplier); + } + + } + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) + { + if(!this.isFlying()) { + super.updateFallState(y, onGroundIn, state, pos); + } + + } + public boolean getCanSpawnHere() + { + int i = MathHelper.floor(this.posX); + int j = MathHelper.floor(this.getEntityBoundingBox().minY); + int k = MathHelper.floor(this.posZ); + BlockPos blockpos = new BlockPos(i, j, k); + Block block = this.world.getBlockState(blockpos.down()).getBlock(); + return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); + } + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); + this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); + this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); + } + public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) + { + super.setAttackTarget(entitylivingbaseIn); + + if (entitylivingbaseIn == null) + { + this.setAngry(false); + } + else if (!this.isTamed()) + { + this.setAngry(true); + } + } + /* + * Config - End + */ + + public int getVerticalFaceSpeed() + { + return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); + } + public boolean attackEntityFrom(DamageSource source, float amount) + { + if (this.isEntityInvulnerable(source)) + { + return false; + } + else + { + Entity entity = source.getTrueSource(); + + if (this.aiSit != null) + { + this.aiSit.setSitting(false); + } + + return super.attackEntityFrom(source, amount); + } + } + public boolean attackEntityAsMob(Entity entityIn) + { + boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); + + if (flag) + { + this.applyEnchantments(this, entityIn); + } + + return flag; + } + public void setTamed(boolean tamed) + { + super.setTamed(tamed); + } + public boolean processInteract(EntityPlayer player, EnumHand hand) + { + ItemStack itemstack = player.getHeldItem(hand); + + if (this.isTamed()) + { + if (!itemstack.isEmpty()) + { + if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + this.heal(10); + return true; + } + } + + if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) + { + this.aiSit.setSitting(!this.isSitting()); + this.isJumping = false; + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + } + } + else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + if (!this.world.isRemote) + { + if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) + { + this.setTamedBy(player); + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + this.aiSit.setSitting(true); + this.setHealth(30.0F); + this.playTameEffect(true); + this.world.setEntityState(this, (byte)7); + } + else + { + this.playTameEffect(false); + this.world.setEntityState(this, (byte)6); + } + } + + return true; + } + + return super.processInteract(player, hand); + } + public boolean canBeLeashedTo(EntityPlayer player) + { + return !this.isAngry() && super.canBeLeashedTo(player); + } + public int getMaxSpawnedInChunk() + { + return 8; + } + + /* + * Emotions - Start + */ + @Override + public void writeEntityToNBT(NBTTagCompound compound) + { + super.writeEntityToNBT(compound); + compound.setBoolean("Angry", this.isAngry()); + } + @Override + public void readEntityFromNBT(NBTTagCompound compound) + { + super.readEntityFromNBT(compound); + this.setAngry(compound.getBoolean("Angry")); + } + public boolean isAngry() + { + return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; + } + public void setAngry(boolean angry) + { + byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); + + if (angry) + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 | 2))); + } + else + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); + } + } + /* + * Emotions - End + */ + + /* + * Mating - Start + */ + public boolean isBreedingItem(ItemStack stack) + { + return stack.getItem() == Items.GOLDEN_APPLE; + } + @Override + public EntityAgeable createChild(EntityAgeable ageable) + { + EntityFlyingLemur entitymonkey = new EntityFlyingLemur(this.world); + UUID uuid = this.getOwnerId(); + + if (uuid != null) + { + entitymonkey.setOwnerId(uuid); + entitymonkey.setTamed(true); + } + + return entitymonkey; + } + public boolean canMateWith(EntityAnimal otherAnimal) + { + if (otherAnimal == this) + { + return false; + } + else if (!this.isTamed()) + { + return false; + } + else if (!(otherAnimal instanceof EntityFlyingLemur)) + { + return false; + } + else + { + EntityFlyingLemur lemur = (EntityFlyingLemur)otherAnimal; + + if (!lemur.isTamed()) + { + return false; + } + else if (lemur.isSitting()) + { + return false; + } + else + { + return this.isInLove() && lemur.isInLove(); + } + } + } + /* + * Mating - End + */ + + /* + * Sounds - Start + */ + protected SoundEvent getAmbientSound() + { + return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; + } + protected SoundEvent getHurtSound(DamageSource damageSourceIn) + { + return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; + } + protected SoundEvent getDeathSound() + { + return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; + } + protected float getSoundVolume() + { + return 1.75F; + } + /* + * Sounds - End + */ + + /* + * Particle Effects - Start + */ + public void playRideEffect(boolean play) { + EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; + for (int i = 0; i < 4; ++i) + { + double d0 = this.rand.nextGaussian() * 0.02D; + double d1 = this.rand.nextGaussian() * 0.02D; + double d2 = this.rand.nextGaussian() * 0.02D; + this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); + } + } + /* + * Particle Effects - End + */ +} \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/common/event/CapabilityHandler.java b/src/main/java/com/crowsofwar/avatar/common/event/CapabilityHandler.java new file mode 100644 index 0000000000..eaef5e45aa --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/event/CapabilityHandler.java @@ -0,0 +1,19 @@ +package com.crowsofwar.avatar.common.event; + +import com.crowsofwar.avatar.common.capabilities.PlayerShoulderProvider; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +public class CapabilityHandler +{ + + @SubscribeEvent + public void attachCapability(AttachCapabilitiesEvent event) + { + if (!(event.getObject() instanceof EntityPlayer)) return; + event.addCapability(null, new PlayerShoulderProvider()); + } +} \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java b/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java index 628d1b3797..1a1ff39a17 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java +++ b/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java @@ -182,6 +182,15 @@ public void preInit() { registerEntityRenderingHandler(EntityAirblade.class, RenderNothing::new); registerEntityRenderingHandler(EntityAirBubble.class, RenderAirBubble::new); registerEntityRenderingHandler(EntitySkyBison.class, RenderSkyBison::new); + + if(AvatarMod.llibrary){ + registerEntityRenderingHandler(EntityFlyingLemur.class, RenderLlibraryLemur::new); + registerEntityRenderingHandler(EntityAscendedFlyingLemur.class, RenderAscendedLlibraryLemur::new); + }else{ + registerEntityRenderingHandler(EntityFlyingLemur.class, RenderLemur::new); + registerEntityRenderingHandler(EntityAscendedFlyingLemur.class, RenderAscendedLemur::new); + } + registerEntityRenderingHandler(EntityOtterPenguin.class, RenderOtterPenguin::new); registerEntityRenderingHandler(EntityIceShard.class, RenderIceShard::new); registerEntityRenderingHandler(EntityOstrichHorse.class, RenderOstrichHorse::new); diff --git a/src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java b/src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java index de30f1f164..840b445855 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java +++ b/src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java @@ -1,16 +1,23 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.capabilities.CapabilityHelper; -import com.crowsofwar.avatar.util.helper.GliderHelper; -import com.crowsofwar.avatar.capabilities.GliderCapabilityImplementation; -import com.crowsofwar.avatar.util.helper.GliderPlayerHelper; -import com.crowsofwar.avatar.network.packets.glider.PacketCUpdateClientTarget; +import com.crowsofwar.avatar.api.capabilities.CapabilityHelper; +import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.common.capabilities.CapabilityPlayerShoulders; +import com.crowsofwar.avatar.common.capabilities.GliderCapabilityImplementation; +import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.helper.GliderPlayerHelper; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCUpdateClientTarget; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.PlayerEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -105,4 +112,108 @@ private void syncGlidingCapability(EntityPlayer player) { CapabilityHelper.getGliderCapability(player).sync((EntityPlayerMP) player); } + + //===========================================================Lemur Events============================================== + + @SubscribeEvent + void onOwnerTeleport(PlayerEvent.PlayerChangedDimensionEvent event) + { + + IPlayerShoulders playerShoulders = event.player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + + if(playerShoulders.getRiders().size() > 0) { + + for(Entity passeger : playerShoulders.getRiders()) + { + if(passeger instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; + playerShoulders.removeRiders(lemur); + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + lemur.setSitting(true); + + } + else if(passeger instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) passeger; + playerShoulders.removeRiders(lemur); + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + lemur.setSitting(true); + } + } + } + + } + + @SubscribeEvent + void onLemurRideExit(PlayerInteractEvent.RightClickBlock event) + { + + IPlayerShoulders playerShoulders = event.getEntityPlayer().getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + + if(playerShoulders.getRiders().size() > 0 && event.getEntityPlayer().isSneaking()) + { + BlockPos pos = new BlockPos(event.getPos().getX(), event.getPos().getY()+1f,event.getPos().getZ()); + + if(event.getWorld().getBlockState(pos).getBlock() == Blocks.AIR) + { + for(Entity passeger : playerShoulders.getRiders()) + { + + + if(passeger instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; + playerShoulders.removeRiders(lemur); + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + lemur.setSitting(true); + lemur.setPosition(event.getPos().getX() +0.5f, event.getPos().getY()+1.0F, event.getPos().getZ() +0.5f); + } + else if(passeger instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) passeger; + playerShoulders.removeRiders(lemur); + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + lemur.setSitting(true); + lemur.setPosition(event.getPos().getX() +0.5f, event.getPos().getY()+1.0F, event.getPos().getZ() +0.5f); + } + + + + } + + } + + } + + + } + + + @SubscribeEvent + void onLogOutLemurExit(PlayerEvent.PlayerLoggedOutEvent event) { + IPlayerShoulders playerShoulders = event.player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + + if(playerShoulders.getRiders().size() > 0) + { + for(Entity passeger : playerShoulders.getRiders()) + { + if(passeger instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; + lemur.height = 1f; + lemur.width = 0.3f; + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + } + else if(passeger instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) passeger;; + lemur.height = 1f; + lemur.width = 0.3f; + lemur.setRightShoulder(false); + lemur.setLeftShoulder(false); + } + } + + } + } } diff --git a/src/main/resources/assets/avatarmod/sounds.json b/src/main/resources/assets/avatarmod/sounds.json new file mode 100644 index 0000000000..d2e9a2b67a --- /dev/null +++ b/src/main/resources/assets/avatarmod/sounds.json @@ -0,0 +1,22 @@ +{ + + "entity.momo.ambient": + { + "category": "entity", + "subtitle": "entity.momo.ambient", + "sounds": [{ "name": "avatarmod:entity/momo/ambient", "stream": true}] + }, + "entity.momo.hurt": + { + "category": "entity", + "subtitle": "entity.momo.hurt", + "sounds": [{ "name": "avatarmod:entity/momo/hurt", "stream": true}] + }, + "entity.momo.death": + { + "category": "entity", + "subtitle": "entity.momo.death", + "sounds": [{ "name": "avatarmod:entity/momo/death", "stream": true}] + } + +} \ No newline at end of file diff --git a/src/main/resources/assets/avatarmod/sounds/entity/momo/ambient.ogg b/src/main/resources/assets/avatarmod/sounds/entity/momo/ambient.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b2931fbc59a25afb631b60173108edc410dd2d10 GIT binary patch literal 52430 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/avatarmod/sounds/entity/momo/death.ogg b/src/main/resources/assets/avatarmod/sounds/entity/momo/death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1701369a22c3c919a23325ee63634f590d55b570 GIT binary patch literal 34012 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/avatarmod/sounds/entity/momo/hurt.ogg b/src/main/resources/assets/avatarmod/sounds/entity/momo/hurt.ogg new file mode 100644 index 0000000000000000000000000000000000000000..653918b499cc0d88d49d0ec1861fd09b254a68a3 GIT binary patch literal 26348 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/avatarmod/textures/entity/lemur.png b/src/main/resources/assets/avatarmod/textures/entity/lemur.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac145bc225f5d27d62c1af764947bd08b51acf8 GIT binary patch literal 61789 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 Date: Sat, 11 Jul 2020 16:00:37 +0300 Subject: [PATCH 2/9] Revert "Merge branch 'FD/OldPackets' into KR/Lemurs" This reverts commit bbef09221e8d66bbc9508806bc5074f050732179, reversing changes made to ee893ebe56fd9adcc1e6c873f96340bfb33c169c. --- .../com/crowsofwar/avatar/AvatarInfo.java | 4 +- .../capabilities/CapabilityHelper.java | 2 +- .../IAdvancedGliderCapabilityHandler.java | 2 +- .../IGliderCapabilityHandler.java | 2 +- .../{util => api}/helper/GliderHelper.java | 8 +- .../avatar/{ => api}/item/IGlider.java | 2 +- .../{ => api}/item/ItemHangGliderBase.java | 35 +++---- .../{item => api/upgrade}/UpgradeItems.java | 2 +- .../powermods/CloudburstPowerModifier.java | 11 --- .../air/powermods/StaffPowerModifier.java | 11 --- .../statctrls/StatCtrlFillWaterPouch.java | 4 - .../AvatarClientProxy.java | 43 ++++----- .../avatar/client/AvatarFovChanger.java | 2 +- .../client/AvatarInventoryOverride.java | 4 +- .../crowsofwar/avatar/client/ClientInput.java | 34 +++---- .../avatar/client/ClientKeybindWrapper.java | 2 +- .../avatar/{network => client}/IProxy.java | 4 +- .../avatar/client/PacketHandlerClient.java | 16 ++-- .../client/event/GliderRenderHandler.java | 13 +-- .../client/gui/AnalyticsWarningGui.java | 2 +- .../avatar/client/gui/AvatarUiRenderer.java | 27 +++--- .../avatar/client/gui/AvatarUiTextures.java | 6 +- .../client/gui/FadeElementListener.java | 10 +- .../avatar/client/gui/GuiBisonChest.java | 4 +- .../avatar/client/gui/RadialMenu.java | 20 ++-- .../avatar/client/gui/RadialSegment.java | 5 +- .../client/gui/RenderElementHandler.java | 7 +- .../avatar/client/gui/skills/AbilityCard.java | 2 +- .../gui/skills/ComponentAbilityIcon.java | 4 +- .../gui/skills/ComponentAbilityKeybind.java | 6 +- .../gui/skills/ComponentAbilityTree.java | 6 +- .../gui/skills/ComponentBendingTab.java | 4 +- .../client/gui/skills/GetBendingGui.java | 8 +- .../avatar/client/gui/skills/SkillsGui.java | 14 +-- .../client/gui/skills/WindowAbility.java | 8 +- .../avatar/client/model/ModelGlider.java | 5 +- .../particles/newparticles/ParticleBeam.java | 2 + .../client/render/ModelEarthspikes.java | 2 +- .../client/render/ModelFlyingBison.java | 2 +- .../client/render/ModelOtterPenguin.java | 2 +- .../avatar/client/render/ModelSandstorm.java | 2 +- .../avatar/client/render/RenderAirBlade.java | 3 +- .../avatar/client/render/RenderAirBubble.java | 4 +- .../avatar/client/render/RenderAirGust.java | 6 +- .../avatar/client/render/RenderArc.java | 4 +- .../client/render/RenderAvatarLightning.java | 2 +- .../client/render/RenderCloudburst.java | 4 +- .../render/RenderEarthspikeSpawner.java | 2 +- .../client/render/RenderEarthspikes.java | 2 +- .../avatar/client/render/RenderFireball.java | 4 +- .../avatar/client/render/RenderFlames.java | 10 +- .../client/render/RenderFlamethrower.java | 2 +- .../client/render/RenderFloatingBlock.java | 2 +- .../client/render/RenderHumanBender.java | 9 +- .../avatar/client/render/RenderIceShard.java | 2 +- .../avatar/client/render/RenderIceShield.java | 2 +- .../client/render/RenderLightCylinder.java | 2 +- .../avatar/client/render/RenderLightOrb.java | 11 ++- .../client/render/RenderLightningArc.java | 6 +- .../client/render/RenderLightningSpawner.java | 2 +- .../client/render/RenderLightningSpear.java | 2 +- .../client/render/RenderOstrichHorse.java | 4 +- .../client/render/RenderOtterPenguin.java | 2 +- .../avatar/client/render/RenderRavine.java | 2 +- .../client/render/RenderSandPrison.java | 2 +- .../avatar/client/render/RenderSandstorm.java | 2 +- .../avatar/client/render/RenderShockwave.java | 4 +- .../avatar/client/render/RenderSkyBison.java | 3 +- .../render/RenderSlipstreamInvisibility.java | 7 +- .../avatar/client/render/RenderTempBlock.java | 2 +- .../client/render/RenderWallSegment.java | 2 +- .../avatar/client/render/RenderWaterArc.java | 6 +- .../client/render/RenderWaterBubble.java | 2 +- .../client/render/RenderWaterCannon.java | 12 ++- .../avatar/client/render/RenderWave.java | 6 +- .../render/iceprison/RenderIcePrison.java | 2 +- .../avatar/client/renderer/LayerGlider.java | 7 +- .../AvatarAnnouncements.java | 2 +- .../AvatarChatMessages.java | 2 +- .../AvatarCommonProxy.java | 15 +-- .../{util => common}/AvatarEntityDeath.java | 10 +- .../particle => common}/AvatarParticles.java | 5 +- .../{util => common}/AvatarPlayerDeath.java | 12 +-- .../{util => common}/AvatarPlayerTick.java | 23 ++--- .../{util => common}/AvatarScrollDrops.java | 9 +- .../BisonInventoryPreventDismount.java | 6 +- .../BisonLeftClickHandler.java | 4 +- .../DamagePerformancePenalty.java | 7 +- .../FallAbsorptionHandler.java | 6 +- .../avatar/{util => common}/GliderInfo.java | 2 +- .../{util => common}/HumanBenderSpawner.java | 11 ++- .../{util => common}/IceActionCanceller.java | 11 ++- .../PlayerScrollShareHandler.java | 13 +-- .../QueuedAbilityExecutionHandler.java | 9 +- .../ShieldAbsorptionHandler.java | 6 +- .../SleepChiRegenHandler.java | 14 +-- .../TemporaryWaterHandler.java | 6 +- .../TransferConfirmHandler.java | 6 +- .../analytics/AnalyticEvent.java | 2 +- .../analytics/AnalyticEvents.java | 2 +- .../analytics/AnalyticsManager.java | 2 +- .../analytics/AnalyticsUtils.java | 4 +- .../analytics/AvatarAnalytics.java | 4 +- .../bending/Abilities.java | 4 +- .../{bending => common}/bending/Ability.java | 0 .../bending/BattlePerformanceScore.java | 6 +- .../bending/BendingAi.java | 14 +-- .../bending/BendingAiMelee.java | 4 +- .../bending/BendingStyle.java | 4 +- .../bending/BendingStyles.java | 2 +- .../bending/BuffPowerModifier.java | 12 +-- .../bending/DefaultAbilityAi.java | 4 +- .../bending/WallJumpEvents.java | 12 +-- .../bending/air/AbilityAirBubble.java | 26 ++--- .../bending/air/AbilityAirBurst.java | 22 ++--- .../bending/air/AbilityAirGust.java | 0 .../bending/air/AbilityAirJump.java | 24 ++--- .../bending/air/AbilityAirblade.java | 0 .../bending/air/AbilityCloudBurst.java | 26 ++--- .../bending/air/AbilitySlipstream.java | 0 .../bending/air/AiAirBubble.java | 14 +-- .../bending/air/AiAirBurst.java | 12 +-- .../bending/air/AiAirGust.java | 10 +- .../bending/air/AiAirblade.java | 8 +- .../bending/air/AiCloudBall.java | 20 ++-- .../bending/air/Airbending.java | 14 +-- .../bending/air/FallDamageHandler.java | 10 +- .../air/powermods/AirJumpPowerModifier.java | 6 +- .../AirbendingPerformanceChiBonus.java | 15 ++- .../powermods/CloudburstPowerModifier.java | 11 +++ .../powermods/SlipstreamPowerModifier.java | 0 .../air/powermods/StaffPowerModifier.java | 11 +++ .../air/statctrls/StatCtrlAirJump.java | 0 .../air/statctrls/StatCtrlBubbleContract.java | 10 +- .../air/statctrls/StatCtrlBubbleExpand.java | 10 +- .../StatCtrlSetAirburstCharging.java | 24 ++--- .../air/statctrls/StatCtrlShootAirburst.java | 16 ++-- .../air/statctrls/StatCtrlThrowCloudBall.java | 20 ++-- .../air/tickhandlers/AirBurstHandler.java | 40 ++++---- .../air/tickhandlers/AirDodgeHandler.java | 8 +- .../air/tickhandlers/AirParticleSpawner.java | 20 ++-- .../tickhandlers/AirStatusControlHandler.java | 14 +-- .../tickhandlers/ShootAirBurstHandler.java | 40 ++++---- .../SlipstreamAirWalkHandler.java | 18 ++-- .../air/tickhandlers/SmashGroundHandler.java | 32 +++---- .../air/tickhandlers/StaffGustCooldown.java | 6 +- .../bending/combustion/AbilityExplosion.java | 16 ++-- .../combustion/AbilityExplosivePillar.java | 16 ++-- .../bending/combustion/Combustionbending.java | 10 +- .../bending/dev/LightningDeflectHandler.java | 4 +- .../bending/earth/AbilityEarthControl.java | 26 ++--- .../bending/earth/AbilityEarthRedirect.java | 4 +- .../bending/earth/AbilityEarthSpear.java | 6 +- .../bending/earth/AbilityEarthspikes.java | 16 ++-- .../bending/earth/AbilityMining.java | 26 ++--- .../bending/earth/AbilityRavine.java | 20 ++-- .../bending/earth/AbilityRestore.java | 22 ++--- .../bending/earth/AbilityWall.java | 0 .../bending/earth/Earthbending.java | 10 +- .../bending/earth/EarthbendingEvents.java | 12 +-- .../earth/EarthbendingJingModifier.java | 8 +- .../earth/EarthbendingPerformanceBonus.java | 6 +- .../earth/powermods/RestorePowerModifier.java | 12 +-- .../earth/statctrls/StatCtrlDropWall.java | 18 ++-- .../earth/statctrls/StatCtrlPlaceBlock.java | 32 +++---- .../earth/statctrls/StatCtrlPlaceWall.java | 18 ++-- .../earth/statctrls/StatCtrlPullWall.java | 16 ++-- .../earth/statctrls/StatCtrlPushWall.java | 18 ++-- .../earth/statctrls/StatCtrlShootWall.java | 26 ++--- .../earth/statctrls/StatCtrlThrowBlock.java | 0 .../tickhandlers/RestoreParticleHandler.java | 18 ++-- .../bending/fire/AbilityFireJump.java | 26 ++--- .../bending/fire/AbilityFireRedirect.java | 4 +- .../bending/fire/AbilityFireShot.java | 0 .../bending/fire/AbilityFireball.java | 0 .../bending/fire/AbilityFlameStrike.java | 0 .../bending/fire/AbilityFlamethrower.java | 0 .../bending/fire/AbilityImmolate.java | 0 .../bending/fire/AbilitySwirlingInferno.java | 26 ++--- .../bending/fire/AiFireShot.java | 10 +- .../bending/fire/AiFireball.java | 20 ++-- .../bending/fire/AiFlameStrike.java | 12 +-- .../bending/fire/AiFlamethrower.java | 18 ++-- .../bending/fire/FirePassiveHandler.java | 10 +- .../fire/FireSmashGroundHandlerBig.java | 12 +-- .../fire/FireStatusControlHandler.java | 14 +-- .../bending/fire/Firebending.java | 10 +- .../FirebendingPerformanceHealthRegen.java | 6 +- .../bending/fire/ImmolateParticleHandler.java | 62 ++++++++++++ .../bending/fire/ImmolatePowerModifier.java | 94 +++++++++++++++++++ .../powermods/FireDevourPowerModifier.java | 6 +- .../statctrls/StatCtrlChargeFlameStrike.java | 16 ++-- .../fire/statctrls/StatCtrlChargeInferno.java | 8 +- .../fire/statctrls/StatCtrlFireJump.java | 34 +++---- .../fire/statctrls/StatCtrlFlameStrike.java | 0 .../statctrls/StatCtrlSetFlamethrowing.java | 30 +++--- .../fire/statctrls/StatCtrlThrowFireball.java | 0 .../ChargeFlameStrikeHandler.java | 14 +-- .../tickhandlers/FireParticleSpawner.java | 0 .../tickhandlers/FireSmashGroundHandler.java | 18 ++-- .../fire/tickhandlers/FlameStrikeHandler.java | 0 .../tickhandlers/FlamethrowerUpdateTick.java | 0 .../bending/ice/AbilityIceBurst.java | 22 ++--- .../bending/ice/AbilityIcePrison.java | 18 ++-- .../bending/ice/Icebending.java | 12 +-- .../bending/ice/StatCtrlShieldShatter.java | 12 +-- .../lightning/AbilityLightningArc.java | 14 +-- .../lightning/AbilityLightningRaze.java | 18 ++-- .../lightning/AbilityLightningRedirect.java | 6 +- .../lightning/AbilityLightningSpear.java | 26 ++--- .../bending/lightning/AiLightningSpear.java | 20 ++-- .../lightning/LightningChargeHandler.java | 20 ++-- .../lightning/LightningCreateHandler.java | 6 +- .../lightning/LightningRedirectHandler.java | 10 +- .../bending/lightning/Lightningbending.java | 12 +-- .../StatCtrlThrowLightningSpear.java | 20 ++-- .../bending/sand/AbilitySandPrison.java | 18 ++-- .../bending/sand/AbilitySandstorm.java | 18 ++-- .../bending/sand/Sandbending.java | 10 +- .../sand/StatCtrlSandstormRedirect.java | 12 +-- .../bending/water/AbilityBubbleBlitz.java | 6 +- .../bending/water/AbilityCleanse.java | 22 ++--- .../bending/water/AbilityCreateWave.java | 20 ++-- .../bending/water/AbilityWaterArc.java | 30 +++--- .../bending/water/AbilityWaterBlast.java | 22 ++--- .../bending/water/AbilityWaterBubble.java | 28 +++--- .../bending/water/AbilityWaterRedirect.java | 4 +- .../bending/water/AbilityWaterSkate.java | 12 +-- .../bending/water/AiWaterArc.java | 20 ++-- .../bending/water/AiWave.java | 10 +- .../bending/water/WaterPassives.java | 10 +- .../bending/water/Waterbending.java | 10 +- .../water/WaterbendingPerformanceBonus.java | 6 +- .../water/statctrls/StatCtrlChargeBubble.java | 12 +-- .../statctrls/StatCtrlChargeWaterBlast.java | 8 +- .../statctrls/StatCtrlFillWaterPouch.java | 4 + .../water/statctrls/StatCtrlLobBubble.java | 24 ++--- .../water/statctrls/StatCtrlSkateJump.java | 22 ++--- .../water/statctrls/StatCtrlSkateStart.java | 10 +- .../water/statctrls/StatCtrlThrowBubble.java | 8 +- .../water/statctrls/StatCtrlThrowWater.java | 20 ++-- .../tickhandlers/CleansePowerModifier.java | 12 +-- .../tickhandlers/WaterArcComboHandler.java | 6 +- .../tickhandlers/WaterChargeHandler.java | 34 +++---- .../tickhandlers/WaterParticleSpawner.java | 14 +-- .../water/tickhandlers/WaterSkateHandler.java | 30 +++--- .../water/tickhandlers/WaterSmashHandler.java | 14 +-- .../{ => common}/blocks/AvatarBlocks.java | 6 +- .../avatar/{ => common}/blocks/BlockTemp.java | 7 +- .../{ => common}/blocks/BlockUtils.java | 2 +- .../{ => common}/blocks/CloudBlock.java | 0 .../blocks/tiles/TileBlockTemp.java | 2 +- .../GliderCapabilityImplementation.java | 7 +- .../command/ArgumentAbility.java | 6 +- .../command/ArgumentBendingController.java | 6 +- .../command/AvatarCommand.java | 12 +-- .../command/NodeAbilityGet.java | 8 +- .../command/NodeAbilitySet.java | 8 +- .../command/NodeBendingAdd.java | 12 +-- .../command/NodeBendingList.java | 8 +- .../command/NodeBendingRemove.java | 12 +-- .../{util => common}/command/NodeConfig.java | 6 +- .../{util => common}/command/NodeXpSet.java | 20 ++-- .../config/AbilityProperties.java | 0 .../{ => common}/config/ConfigAnalytics.java | 2 +- .../avatar/{ => common}/config/ConfigChi.java | 2 +- .../{ => common}/config/ConfigClient.java | 6 +- .../{ => common}/config/ConfigGlider.java | 2 +- .../{ => common}/config/ConfigMobs.java | 4 +- .../{ => common}/config/ConfigSkills.java | 2 +- .../{ => common}/config/ConfigStats.java | 2 +- .../config/ConfigurableProperty.java | 2 +- .../controls/AvatarControl.java | 2 +- .../controls/IControlsHandler.java | 2 +- .../controls/KeybindingWrapper.java | 2 +- .../damageutils/AvatarDamageSource.java | 5 +- .../damageutils/DamageUtils.java | 14 +-- .../{util => common}/data/AbilityData.java | 8 +- .../data/AvatarPlayerData.java | 5 +- .../data/AvatarWorldData.java | 5 +- .../avatar/{util => common}/data/Bender.java | 0 .../data/BenderEntityComponent.java | 4 +- .../{util => common}/data/BenderInfo.java | 4 +- .../data/BenderInfoEntity.java | 2 +- .../data/BenderInfoPlayer.java | 2 +- .../{util => common}/data/BendingData.java | 10 +- .../{util => common}/data/CachedEntity.java | 2 +- .../avatar/{util => common}/data/Chi.java | 2 +- .../{util => common}/data/DataCategory.java | 6 +- .../data/LightningRedirectionData.java | 4 +- .../{util => common}/data/MiscData.java | 4 +- .../data/PowerRatingManager.java | 4 +- .../data/PowerRatingModifier.java | 4 +- .../data/PreAlpha5SaveConverter.java | 10 +- .../data/SandstormMovementHandler.java | 5 +- .../data/ScheduledDestroyBlock.java | 2 +- .../{util => common}/data/StatusControl.java | 23 +++-- .../data/StatusControlController.java | 16 ++-- .../data/TemporaryWaterLocation.java | 2 +- .../{util => common}/data/TickHandler.java | 5 +- .../data/TickHandlerController.java | 18 ++-- .../avatar/{util => common}/data/Vision.java | 2 +- .../data/WallJumpManager.java | 15 +-- .../data/ctx/AbilityContext.java | 14 +-- .../data/ctx/BendingContext.java | 10 +- .../data/ctx/NoBenderInfo.java | 6 +- .../data/ctx/PlayerBender.java | 28 +++--- .../{ => common}/entity/AvatarEntity.java | 0 .../{ => common}/entity/AvatarEntityItem.java | 2 +- .../{ => common}/entity/ControlPoint.java | 2 +- .../{ => common}/entity/EntityAirBubble.java | 24 ++--- .../{ => common}/entity/EntityAirGust.java | 0 .../{ => common}/entity/EntityAirblade.java | 18 ++-- .../avatar/{ => common}/entity/EntityArc.java | 2 +- .../entity/EntityAvatarLightning.java | 14 +-- .../{ => common}/entity/EntityCloudBall.java | 34 +++---- .../{ => common}/entity/EntityEarthSpear.java | 2 +- .../{ => common}/entity/EntityEarthspike.java | 21 +++-- .../entity/EntityEarthspikeSpawner.java | 14 +-- .../entity/EntityExplosionSpawner.java | 4 +- .../{ => common}/entity/EntityFireball.java | 0 .../{ => common}/entity/EntityFlame.java | 24 ++--- .../{ => common}/entity/EntityFlames.java | 0 .../entity/EntityFloatingBlock.java | 0 .../{ => common}/entity/EntityIcePrison.java | 18 ++-- .../{ => common}/entity/EntityIceShard.java | 9 +- .../{ => common}/entity/EntityIceShield.java | 10 +- .../entity/EntityLightCylinder.java | 6 +- .../{ => common}/entity/EntityLightOrb.java | 7 +- .../entity/EntityLightningArc.java | 30 +++--- .../entity/EntityLightningSpawner.java | 2 +- .../entity/EntityLightningSpear.java | 24 ++--- .../{ => common}/entity/EntityOffensive.java | 0 .../{ => common}/entity/EntityRavine.java | 0 .../{ => common}/entity/EntitySandPrison.java | 18 ++-- .../{ => common}/entity/EntitySandstorm.java | 25 ++--- .../{ => common}/entity/EntityShield.java | 10 +- .../{ => common}/entity/EntityShockwave.java | 12 +-- .../{ => common}/entity/EntityWall.java | 0 .../entity/EntityWallSegment.java | 0 .../{ => common}/entity/EntityWaterArc.java | 24 ++--- .../entity/EntityWaterBubble.java | 27 ++++-- .../entity/EntityWaterCannon.java | 10 +- .../{ => common}/entity/EntityWave.java | 12 +-- .../{ => common}/entity/ICustomHitbox.java | 2 +- .../{ => common}/entity/IOffensiveEntity.java | 0 .../{ => common}/entity/IShieldEntity.java | 2 +- .../entity/ai/EntityAIAttackMobs.java | 4 +- .../ai/EntityAIBenderDefendVillage.java | 4 +- .../entity/ai/EntityAiBisonBreeding.java | 10 +- .../entity/ai/EntityAiBisonDefendOwner.java | 8 +- .../entity/ai/EntityAiBisonEatGrass.java | 4 +- .../ai/EntityAiBisonFollowAttacker.java | 4 +- .../entity/ai/EntityAiBisonFollowOwner.java | 6 +- .../ai/EntityAiBisonHelpOwnerTarget.java | 8 +- .../entity/ai/EntityAiBisonLand.java | 6 +- .../entity/ai/EntityAiBisonSit.java | 4 +- .../entity/ai/EntityAiBisonTempt.java | 6 +- .../entity/ai/EntityAiBisonWander.java | 4 +- .../entity/ai/EntityAiGiveScroll.java | 11 ++- .../entity/ai/EntityAiKeepDistance.java | 2 +- .../entity/ai/EntityAiUseStaff.java | 8 +- .../entity/data/AnimalCondition.java | 4 +- .../{ => common}/entity/data/Behavior.java | 2 +- .../entity/data/BisonSpawnData.java | 2 +- .../entity/data/CloudburstBehavior.java | 12 +-- .../entity/data/EarthspikesBehavior.java | 14 +-- .../entity/data/EntityBenderData.java | 6 +- .../entity/data/FireballBehavior.java | 0 .../entity/data/FloatingBlockBehavior.java | 6 +- .../entity/data/LightCylinderBehaviour.java | 6 +- .../entity/data/LightOrbBehavior.java | 17 ++-- .../entity/data/LightningFloodFill.java | 2 +- .../entity/data/LightningSpearBehavior.java | 19 ++-- .../entity/data/OffensiveBehaviour.java | 0 .../entity/data/ShockwaveBehaviour.java | 10 +- .../entity/data/SyncedEntity.java | 4 +- .../entity/data/WallBehavior.java | 12 +-- .../entity/data/WaterArcBehavior.java | 18 ++-- .../entity/data/WaterBubbleBehavior.java | 12 +-- .../entity/mob/BisonSummonHandler.java | 6 +- .../entity/mob/EntityAirbender.java | 25 +++-- .../{ => common}/entity/mob/EntityBender.java | 20 ++-- .../entity/mob/EntityFirebender.java | 18 ++-- .../entity/mob/EntityHumanBender.java | 18 ++-- .../entity/mob/EntityOstrichHorse.java | 10 +- .../entity/mob/EntityOtterPenguin.java | 2 +- .../entity/mob/EntitySkyBison.java | 52 +++++----- .../entity/mob/EntityWaterbender.java | 18 +++- .../entity/mob/SkyBisonMoveHelper.java | 2 +- .../event/AbilityLevelEvent.java | 4 +- .../event/AbilityUnlockEvent.java | 4 +- .../event/AbilityUseEvent.java | 6 +- .../event/AvatarEventHandler.java | 6 +- .../event/BendingCycleEvent.java | 4 +- .../{util => common}/event/BendingEvent.java | 2 +- .../event/BendingUseEvent.java | 4 +- .../event/ElementRemoveEvent.java | 4 +- .../event/ElementUnlockEvent.java | 4 +- .../event/ParticleCollideEvent.java | 7 +- .../event/ServerEventHandler.java | 0 .../{util => common}/event/StaffUseEvent.java | 2 +- .../explosions/AvatarCombustionExplosion.java | 4 + .../{client => common}/gui/AvatarGui.java | 2 +- .../gui/AvatarGuiHandler.java | 6 +- .../gui/BendingMenuInfo.java | 7 +- .../gui/ContainerBisonChest.java | 6 +- .../gui/ContainerGetBending.java | 11 ++- .../gui/ContainerSkillsGui.java | 9 +- .../gui/GetBendingInventory.java | 2 +- .../gui/InventoryBisonChest.java | 2 +- .../gui/InventoryOstrichChest.java | 2 +- .../{client => common}/gui/MenuTheme.java | 2 +- .../gui/SkillsGuiInventory.java | 2 +- .../helper/GliderPlayerHelper.java | 17 ++-- .../{util => common}/helper/MathHelper.java | 2 +- .../{ => common}/item/AvatarDungeonLoot.java | 9 +- .../{registry => common/item}/AvatarItem.java | 2 +- .../item}/AvatarItems.java | 10 +- .../{ => common}/item/ItemBisonArmor.java | 4 +- .../{ => common}/item/ItemBisonSaddle.java | 7 +- .../{ => common}/item/ItemBisonWhistle.java | 14 ++- .../item/ItemHangGliderAdvanced.java | 10 +- .../item/ItemHangGliderBasic.java | 9 +- .../{ => common}/item/ItemHangGliderPart.java | 10 +- .../item/ItemOstrichEquipment.java | 4 +- .../{ => common}/item/ItemWaterPouch.java | 6 +- .../{ => common}/item/scroll/ItemScroll.java | 22 ++--- .../item/scroll/ItemScrollAir.java | 4 +- .../item/scroll/ItemScrollAll.java | 5 +- .../item/scroll/ItemScrollCombustion.java | 4 +- .../item/scroll/ItemScrollEarth.java | 4 +- .../item/scroll/ItemScrollFire.java | 6 +- .../item/scroll/ItemScrollIce.java | 4 +- .../item/scroll/ItemScrollLightning.java | 4 +- .../item/scroll/ItemScrollSand.java | 4 +- .../item/scroll/ItemScrollWater.java | 4 +- .../{ => common}/item/scroll/Scrolls.java | 22 ++--- .../{ => common}/network/DataTransmitter.java | 4 +- .../network/DataTransmitters.java | 8 +- .../{ => common}/network/IPacketHandler.java | 2 +- .../network/PacketHandlerServer.java | 72 +++++++------- .../network/PacketRedirector.java | 2 +- .../network/packets/AvatarPacket.java | 2 +- .../network/packets/PacketCErrorMessage.java | 6 +- .../network/packets/PacketCOpenSkillCard.java | 8 +- .../network/packets/PacketCParticles.java | 6 +- .../network/packets/PacketCPlayerData.java | 10 +- .../network/packets/PacketCPowerRating.java | 4 +- .../packets/PacketCRemoveStatusControl.java | 10 +- .../network/packets/PacketCStatusControl.java | 8 +- .../packets/PacketCSyncAbilityProperties.java | 8 +- .../packets/PacketSBisonInventory.java | 6 +- .../packets/PacketSConfirmTransfer.java | 6 +- .../network/packets/PacketSCycleBending.java | 6 +- .../network/packets/PacketSOpenUnlockGui.java | 6 +- .../packets/PacketSParticleCollideEvent.java | 15 +-- .../network/packets/PacketSRequestData.java | 4 +- .../packets/PacketSSendViewStatus.java | 4 +- .../network/packets/PacketSSkillsMenu.java | 12 +-- .../network/packets/PacketSUnlockBending.java | 8 +- .../network/packets/PacketSUseAbility.java | 12 +-- .../network/packets/PacketSUseScroll.java | 10 +- .../packets/PacketSUseStatusControl.java | 10 +- .../network/packets/PacketSWallJump.java | 13 ++- .../packets/glider/PacketCClientGliding.java | 6 +- .../glider/PacketCSyncGliderDataToClient.java | 6 +- .../glider/PacketCUpdateClientTarget.java | 6 +- .../packets/glider/PacketSServerGliding.java | 6 +- .../particle/ClientParticleSpawner.java | 2 +- .../particle/NetworkParticleSpawner.java | 4 +- .../particle/ParticleBuilder.java | 0 .../particle/ParticleSpawner.java | 2 +- .../powerrating}/FirebendingSunModifier.java | 6 +- .../powerrating}/PrModifierHandler.java | 26 ++--- .../powerrating}/WaterbendingMoonBonus.java | 6 +- .../registry/CapabilityRegistry.java | 4 +- .../{ => common}/util/AvatarByteBufUtils.java | 2 +- .../util/AvatarDataSerializers.java | 8 +- .../{ => common}/util/AvatarEntityUtils.java | 2 +- .../util/AvatarParticleUtils.java | 3 +- .../avatar/{ => common}/util/AvatarUtils.java | 0 .../{ => common}/util/GliderHelper.java | 4 +- .../{ => common}/util/PlayerViewRegistry.java | 2 +- .../avatar/{ => common}/util/Raytrace.java | 6 +- .../{ => common}/util/SemanticVersion.java | 2 +- .../{ => common}/util/WildCardTradeList.java | 2 +- .../wind}/WindHelper.java | 8 +- .../wind}/generator/OpenSimplexNoise.java | 2 +- .../AvatarKeybindingServer.java | 6 +- .../AvatarServerProxy.java | 16 ++-- .../explosions/AvatarCombustionExplosion.java | 4 - .../com/crowsofwar/gorecore/GoreCore.java | 1 + .../gorecore/tree/test/GoreCoreCommand.java | 4 + 494 files changed, 2479 insertions(+), 2163 deletions(-) rename src/main/java/com/crowsofwar/avatar/{ => api}/capabilities/CapabilityHelper.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => api}/capabilities/IAdvancedGliderCapabilityHandler.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => api}/capabilities/IGliderCapabilityHandler.java (97%) rename src/main/java/com/crowsofwar/avatar/{util => api}/helper/GliderHelper.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => api}/item/IGlider.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => api}/item/ItemHangGliderBase.java (94%) rename src/main/java/com/crowsofwar/avatar/{item => api/upgrade}/UpgradeItems.java (94%) delete mode 100644 src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/CloudburstPowerModifier.java delete mode 100644 src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/StaffPowerModifier.java delete mode 100644 src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlFillWaterPouch.java rename src/main/java/com/crowsofwar/avatar/{network => client}/AvatarClientProxy.java (92%) rename src/main/java/com/crowsofwar/avatar/{network => client}/IProxy.java (85%) rename src/main/java/com/crowsofwar/avatar/{network => common}/AvatarAnnouncements.java (99%) rename src/main/java/com/crowsofwar/avatar/{network => common}/AvatarChatMessages.java (99%) rename src/main/java/com/crowsofwar/avatar/{network => common}/AvatarCommonProxy.java (88%) rename src/main/java/com/crowsofwar/avatar/{util => common}/AvatarEntityDeath.java (77%) rename src/main/java/com/crowsofwar/avatar/{client/particle => common}/AvatarParticles.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/AvatarPlayerDeath.java (82%) rename src/main/java/com/crowsofwar/avatar/{util => common}/AvatarPlayerTick.java (86%) rename src/main/java/com/crowsofwar/avatar/{util => common}/AvatarScrollDrops.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/BisonInventoryPreventDismount.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/BisonLeftClickHandler.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/DamagePerformancePenalty.java (81%) rename src/main/java/com/crowsofwar/avatar/{util => common}/FallAbsorptionHandler.java (92%) rename src/main/java/com/crowsofwar/avatar/{util => common}/GliderInfo.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/HumanBenderSpawner.java (91%) rename src/main/java/com/crowsofwar/avatar/{util => common}/IceActionCanceller.java (86%) rename src/main/java/com/crowsofwar/avatar/{util => common}/PlayerScrollShareHandler.java (76%) rename src/main/java/com/crowsofwar/avatar/{util => common}/QueuedAbilityExecutionHandler.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/ShieldAbsorptionHandler.java (87%) rename src/main/java/com/crowsofwar/avatar/{util => common}/SleepChiRegenHandler.java (78%) rename src/main/java/com/crowsofwar/avatar/{util => common}/TemporaryWaterHandler.java (93%) rename src/main/java/com/crowsofwar/avatar/{util => common}/TransferConfirmHandler.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/analytics/AnalyticEvent.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/analytics/AnalyticEvents.java (98%) rename src/main/java/com/crowsofwar/avatar/{util => common}/analytics/AnalyticsManager.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/analytics/AnalyticsUtils.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/analytics/AvatarAnalytics.java (98%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/Abilities.java (95%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/Ability.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BattlePerformanceScore.java (95%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BendingAi.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BendingAiMelee.java (98%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BendingStyle.java (98%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BendingStyles.java (98%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/BuffPowerModifier.java (90%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/DefaultAbilityAi.java (91%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/WallJumpEvents.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityAirBubble.java (78%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityAirBurst.java (72%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityAirGust.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityAirJump.java (74%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityAirblade.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilityCloudBurst.java (80%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AbilitySlipstream.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AiAirBubble.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AiAirBurst.java (70%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AiAirGust.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AiAirblade.java (91%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/AiCloudBall.java (77%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/Airbending.java (84%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/FallDamageHandler.java (78%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/powermods/AirJumpPowerModifier.java (60%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/powermods/AirbendingPerformanceChiBonus.java (79%) create mode 100644 src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/CloudburstPowerModifier.java rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/powermods/SlipstreamPowerModifier.java (100%) create mode 100644 src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/StaffPowerModifier.java rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlAirJump.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlBubbleContract.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlBubbleExpand.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlSetAirburstCharging.java (67%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlShootAirburst.java (63%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/statctrls/StatCtrlThrowCloudBall.java (70%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/AirBurstHandler.java (92%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/AirDodgeHandler.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/AirParticleSpawner.java (77%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/AirStatusControlHandler.java (63%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/ShootAirBurstHandler.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/SlipstreamAirWalkHandler.java (72%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/SmashGroundHandler.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/air/tickhandlers/StaffGustCooldown.java (56%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/combustion/AbilityExplosion.java (82%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/combustion/AbilityExplosivePillar.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/combustion/Combustionbending.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/dev/LightningDeflectHandler.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityEarthControl.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityEarthRedirect.java (75%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityEarthSpear.java (52%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityEarthspikes.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityMining.java (91%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityRavine.java (82%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityRestore.java (82%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/AbilityWall.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/Earthbending.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/EarthbendingEvents.java (90%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/EarthbendingJingModifier.java (92%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/EarthbendingPerformanceBonus.java (86%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/powermods/RestorePowerModifier.java (67%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlDropWall.java (66%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlPlaceBlock.java (74%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlPlaceWall.java (73%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlPullWall.java (73%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlPushWall.java (70%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlShootWall.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/statctrls/StatCtrlThrowBlock.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/earth/tickhandlers/RestoreParticleHandler.java (76%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFireJump.java (55%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFireRedirect.java (85%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFireShot.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFireball.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFlameStrike.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityFlamethrower.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilityImmolate.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AbilitySwirlingInferno.java (78%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AiFireShot.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AiFireball.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AiFlameStrike.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/AiFlamethrower.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/FirePassiveHandler.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/FireSmashGroundHandlerBig.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/FireStatusControlHandler.java (64%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/Firebending.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/FirebendingPerformanceHealthRegen.java (88%) create mode 100644 src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolateParticleHandler.java create mode 100644 src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolatePowerModifier.java rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/powermods/FireDevourPowerModifier.java (58%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlChargeFlameStrike.java (55%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlChargeInferno.java (58%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlFireJump.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlFlameStrike.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlSetFlamethrowing.java (64%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/statctrls/StatCtrlThrowFireball.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java (59%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/tickhandlers/FireParticleSpawner.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/tickhandlers/FireSmashGroundHandler.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/tickhandlers/FlameStrikeHandler.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/fire/tickhandlers/FlamethrowerUpdateTick.java (100%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/ice/AbilityIceBurst.java (80%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/ice/AbilityIcePrison.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/ice/Icebending.java (84%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/ice/StatCtrlShieldShatter.java (78%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/AbilityLightningArc.java (65%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/AbilityLightningRaze.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/AbilityLightningRedirect.java (79%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/AbilityLightningSpear.java (81%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/AiLightningSpear.java (79%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/LightningChargeHandler.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/LightningCreateHandler.java (66%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/LightningRedirectHandler.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/Lightningbending.java (84%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/lightning/StatCtrlThrowLightningSpear.java (66%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/sand/AbilitySandPrison.java (84%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/sand/AbilitySandstorm.java (82%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/sand/Sandbending.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/sand/StatCtrlSandstormRedirect.java (80%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityBubbleBlitz.java (69%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityCleanse.java (91%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityCreateWave.java (92%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityWaterArc.java (89%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityWaterBlast.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityWaterBubble.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityWaterRedirect.java (75%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AbilityWaterSkate.java (74%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AiWaterArc.java (84%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/AiWave.java (91%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/WaterPassives.java (83%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/Waterbending.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/WaterbendingPerformanceBonus.java (88%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlChargeBubble.java (67%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlChargeWaterBlast.java (64%) create mode 100644 src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlFillWaterPouch.java rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlLobBubble.java (69%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlSkateJump.java (69%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlSkateStart.java (73%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlThrowBubble.java (57%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/statctrls/StatCtrlThrowWater.java (78%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/CleansePowerModifier.java (67%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/WaterArcComboHandler.java (56%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/WaterChargeHandler.java (87%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/WaterParticleSpawner.java (86%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/WaterSkateHandler.java (90%) rename src/main/java/com/crowsofwar/avatar/{bending => common}/bending/water/tickhandlers/WaterSmashHandler.java (69%) rename src/main/java/com/crowsofwar/avatar/{ => common}/blocks/AvatarBlocks.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/blocks/BlockTemp.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/blocks/BlockUtils.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/blocks/CloudBlock.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/blocks/tiles/TileBlockTemp.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/capabilities/GliderCapabilityImplementation.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/ArgumentAbility.java (93%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/ArgumentBendingController.java (91%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/AvatarCommand.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeAbilityGet.java (88%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeAbilitySet.java (89%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeBendingAdd.java (87%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeBendingList.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeBendingRemove.java (87%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeConfig.java (93%) rename src/main/java/com/crowsofwar/avatar/{util => common}/command/NodeXpSet.java (84%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/AbilityProperties.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigAnalytics.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigChi.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigClient.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigGlider.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigMobs.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigSkills.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigStats.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/config/ConfigurableProperty.java (95%) rename src/main/java/com/crowsofwar/avatar/{client => common}/controls/AvatarControl.java (98%) rename src/main/java/com/crowsofwar/avatar/{client => common}/controls/IControlsHandler.java (97%) rename src/main/java/com/crowsofwar/avatar/{client => common}/controls/KeybindingWrapper.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/damageutils/AvatarDamageSource.java (99%) rename src/main/java/com/crowsofwar/avatar/{util => common}/damageutils/DamageUtils.java (77%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/AbilityData.java (98%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/AvatarPlayerData.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/AvatarWorldData.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/Bender.java (100%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/BenderEntityComponent.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/BenderInfo.java (97%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/BenderInfoEntity.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/BenderInfoPlayer.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/BendingData.java (98%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/CachedEntity.java (98%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/Chi.java (99%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/DataCategory.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/LightningRedirectionData.java (92%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/MiscData.java (97%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/PowerRatingManager.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/PowerRatingModifier.java (92%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/PreAlpha5SaveConverter.java (90%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/SandstormMovementHandler.java (94%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/ScheduledDestroyBlock.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/StatusControl.java (78%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/StatusControlController.java (80%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/TemporaryWaterLocation.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/TickHandler.java (88%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/TickHandlerController.java (80%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/Vision.java (97%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/WallJumpManager.java (91%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/ctx/AbilityContext.java (88%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/ctx/BendingContext.java (96%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/ctx/NoBenderInfo.java (87%) rename src/main/java/com/crowsofwar/avatar/{util => common}/data/ctx/PlayerBender.java (85%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/AvatarEntity.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/AvatarEntityItem.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ControlPoint.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityAirBubble.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityAirGust.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityAirblade.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityArc.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityAvatarLightning.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityCloudBall.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityEarthSpear.java (91%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityEarthspike.java (88%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityEarthspikeSpawner.java (91%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityExplosionSpawner.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityFireball.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityFlame.java (91%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityFlames.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityFloatingBlock.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityIcePrison.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityIceShard.java (91%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityIceShield.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityLightCylinder.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityLightOrb.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityLightningArc.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityLightningSpawner.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityLightningSpear.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityOffensive.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityRavine.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntitySandPrison.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntitySandstorm.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityShield.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityShockwave.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWall.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWallSegment.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWaterArc.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWaterBubble.java (91%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWaterCannon.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/EntityWave.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ICustomHitbox.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/IOffensiveEntity.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/IShieldEntity.java (81%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAIAttackMobs.java (89%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAIBenderDefendVillage.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonBreeding.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonDefendOwner.java (89%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonEatGrass.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonFollowAttacker.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonFollowOwner.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonHelpOwnerTarget.java (89%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonLand.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonSit.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonTempt.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiBisonWander.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiGiveScroll.java (89%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiKeepDistance.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/ai/EntityAiUseStaff.java (80%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/AnimalCondition.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/Behavior.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/BisonSpawnData.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/CloudburstBehavior.java (90%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/EarthspikesBehavior.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/EntityBenderData.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/FireballBehavior.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/FloatingBlockBehavior.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/LightCylinderBehaviour.java (83%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/LightOrbBehavior.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/LightningFloodFill.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/LightningSpearBehavior.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/OffensiveBehaviour.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/ShockwaveBehaviour.java (77%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/SyncedEntity.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/WallBehavior.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/WaterArcBehavior.java (88%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/data/WaterBubbleBehavior.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/BisonSummonHandler.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityAirbender.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityBender.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityFirebender.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityHumanBender.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityOstrichHorse.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityOtterPenguin.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntitySkyBison.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/EntityWaterbender.java (76%) rename src/main/java/com/crowsofwar/avatar/{ => common}/entity/mob/SkyBisonMoveHelper.java (98%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/AbilityLevelEvent.java (85%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/AbilityUnlockEvent.java (75%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/AbilityUseEvent.java (84%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/AvatarEventHandler.java (79%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/BendingCycleEvent.java (83%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/BendingEvent.java (86%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/BendingUseEvent.java (82%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/ElementRemoveEvent.java (76%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/ElementUnlockEvent.java (75%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/ParticleCollideEvent.java (85%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/ServerEventHandler.java (100%) rename src/main/java/com/crowsofwar/avatar/{util => common}/event/StaffUseEvent.java (86%) create mode 100644 src/main/java/com/crowsofwar/avatar/common/explosions/AvatarCombustionExplosion.java rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/AvatarGui.java (94%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/AvatarGuiHandler.java (93%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/BendingMenuInfo.java (91%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/ContainerBisonChest.java (96%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/ContainerGetBending.java (93%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/ContainerSkillsGui.java (92%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/GetBendingInventory.java (95%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/InventoryBisonChest.java (96%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/InventoryOstrichChest.java (83%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/MenuTheme.java (97%) rename src/main/java/com/crowsofwar/avatar/{client => common}/gui/SkillsGuiInventory.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/helper/GliderPlayerHelper.java (95%) rename src/main/java/com/crowsofwar/avatar/{util => common}/helper/MathHelper.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/AvatarDungeonLoot.java (98%) rename src/main/java/com/crowsofwar/avatar/{registry => common/item}/AvatarItem.java (95%) rename src/main/java/com/crowsofwar/avatar/{registry => common/item}/AvatarItems.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemBisonArmor.java (95%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemBisonSaddle.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemBisonWhistle.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemHangGliderAdvanced.java (80%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemHangGliderBasic.java (79%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemHangGliderPart.java (84%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemOstrichEquipment.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/ItemWaterPouch.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScroll.java (88%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollAir.java (79%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollAll.java (73%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollCombustion.java (81%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollEarth.java (80%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollFire.java (86%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollIce.java (79%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollLightning.java (81%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollSand.java (80%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/ItemScrollWater.java (80%) rename src/main/java/com/crowsofwar/avatar/{ => common}/item/scroll/Scrolls.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/DataTransmitter.java (90%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/DataTransmitters.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/IPacketHandler.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/PacketHandlerServer.java (85%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/PacketRedirector.java (97%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/AvatarPacket.java (98%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCErrorMessage.java (86%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCOpenSkillCard.java (78%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCParticles.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCPlayerData.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCPowerRating.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCRemoveStatusControl.java (79%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCStatusControl.java (86%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketCSyncAbilityProperties.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSBisonInventory.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSConfirmTransfer.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSCycleBending.java (85%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSOpenUnlockGui.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSParticleCollideEvent.java (86%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSRequestData.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSSendViewStatus.java (92%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSSkillsMenu.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSUnlockBending.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSUseAbility.java (86%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSUseScroll.java (81%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSUseStatusControl.java (87%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/PacketSWallJump.java (76%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/glider/PacketCClientGliding.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/glider/PacketCSyncGliderDataToClient.java (82%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/glider/PacketCUpdateClientTarget.java (85%) rename src/main/java/com/crowsofwar/avatar/{ => common}/network/packets/glider/PacketSServerGliding.java (85%) rename src/main/java/com/crowsofwar/avatar/{client => common}/particle/ClientParticleSpawner.java (98%) rename src/main/java/com/crowsofwar/avatar/{client => common}/particle/NetworkParticleSpawner.java (94%) rename src/main/java/com/crowsofwar/avatar/{client => common}/particle/ParticleBuilder.java (100%) rename src/main/java/com/crowsofwar/avatar/{client => common}/particle/ParticleSpawner.java (98%) rename src/main/java/com/crowsofwar/avatar/{bending/bendingmultipliers => common/powerrating}/FirebendingSunModifier.java (80%) rename src/main/java/com/crowsofwar/avatar/{bending/bendingmultipliers => common/powerrating}/PrModifierHandler.java (67%) rename src/main/java/com/crowsofwar/avatar/{bending/bendingmultipliers => common/powerrating}/WaterbendingMoonBonus.java (83%) rename src/main/java/com/crowsofwar/avatar/{ => common}/registry/CapabilityRegistry.java (52%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/AvatarByteBufUtils.java (96%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/AvatarDataSerializers.java (94%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/AvatarEntityUtils.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/AvatarParticleUtils.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/AvatarUtils.java (100%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/GliderHelper.java (89%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/PlayerViewRegistry.java (93%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/Raytrace.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/SemanticVersion.java (99%) rename src/main/java/com/crowsofwar/avatar/{ => common}/util/WildCardTradeList.java (98%) rename src/main/java/com/crowsofwar/avatar/{util/windhelper => common/wind}/WindHelper.java (92%) rename src/main/java/com/crowsofwar/avatar/{util/windhelper => common/wind}/generator/OpenSimplexNoise.java (99%) rename src/main/java/com/crowsofwar/avatar/{network => server}/AvatarKeybindingServer.java (88%) rename src/main/java/com/crowsofwar/avatar/{network => server}/AvatarServerProxy.java (82%) delete mode 100644 src/main/java/com/crowsofwar/avatar/world/explosions/AvatarCombustionExplosion.java diff --git a/src/main/java/com/crowsofwar/avatar/AvatarInfo.java b/src/main/java/com/crowsofwar/avatar/AvatarInfo.java index 7e082512b4..4a049d2b29 100644 --- a/src/main/java/com/crowsofwar/avatar/AvatarInfo.java +++ b/src/main/java/com/crowsofwar/avatar/AvatarInfo.java @@ -17,7 +17,9 @@ package com.crowsofwar.avatar; -import com.crowsofwar.avatar.util.SemanticVersion; +import com.crowsofwar.avatar.common.util.SemanticVersion; + +import java.util.Locale; /** * Not using semantic versioning. This isn't an API, and I'm too lazy to be backwards-compatible. diff --git a/src/main/java/com/crowsofwar/avatar/capabilities/CapabilityHelper.java b/src/main/java/com/crowsofwar/avatar/api/capabilities/CapabilityHelper.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/capabilities/CapabilityHelper.java rename to src/main/java/com/crowsofwar/avatar/api/capabilities/CapabilityHelper.java index 695f1fc4fd..8bf0b90ea2 100644 --- a/src/main/java/com/crowsofwar/avatar/capabilities/CapabilityHelper.java +++ b/src/main/java/com/crowsofwar/avatar/api/capabilities/CapabilityHelper.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.capabilities; +package com.crowsofwar.avatar.api.capabilities; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.capabilities.Capability; diff --git a/src/main/java/com/crowsofwar/avatar/capabilities/IAdvancedGliderCapabilityHandler.java b/src/main/java/com/crowsofwar/avatar/api/capabilities/IAdvancedGliderCapabilityHandler.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/capabilities/IAdvancedGliderCapabilityHandler.java rename to src/main/java/com/crowsofwar/avatar/api/capabilities/IAdvancedGliderCapabilityHandler.java index 7bf2575944..749c83b17c 100644 --- a/src/main/java/com/crowsofwar/avatar/capabilities/IAdvancedGliderCapabilityHandler.java +++ b/src/main/java/com/crowsofwar/avatar/api/capabilities/IAdvancedGliderCapabilityHandler.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.capabilities; +package com.crowsofwar.avatar.api.capabilities; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/capabilities/IGliderCapabilityHandler.java b/src/main/java/com/crowsofwar/avatar/api/capabilities/IGliderCapabilityHandler.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/capabilities/IGliderCapabilityHandler.java rename to src/main/java/com/crowsofwar/avatar/api/capabilities/IGliderCapabilityHandler.java index 7116a1a518..a184403892 100644 --- a/src/main/java/com/crowsofwar/avatar/capabilities/IGliderCapabilityHandler.java +++ b/src/main/java/com/crowsofwar/avatar/api/capabilities/IGliderCapabilityHandler.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.capabilities; +package com.crowsofwar.avatar.api.capabilities; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/util/helper/GliderHelper.java b/src/main/java/com/crowsofwar/avatar/api/helper/GliderHelper.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/helper/GliderHelper.java rename to src/main/java/com/crowsofwar/avatar/api/helper/GliderHelper.java index 05d832225c..2281a270d4 100644 --- a/src/main/java/com/crowsofwar/avatar/util/helper/GliderHelper.java +++ b/src/main/java/com/crowsofwar/avatar/api/helper/GliderHelper.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.util.helper; +package com.crowsofwar.avatar.api.helper; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.capabilities.CapabilityHelper; -import com.crowsofwar.avatar.capabilities.IAdvancedGliderCapabilityHandler; -import com.crowsofwar.avatar.item.IGlider; +import com.crowsofwar.avatar.api.capabilities.CapabilityHelper; +import com.crowsofwar.avatar.api.capabilities.IAdvancedGliderCapabilityHandler; +import com.crowsofwar.avatar.api.item.IGlider; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/item/IGlider.java b/src/main/java/com/crowsofwar/avatar/api/item/IGlider.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/item/IGlider.java rename to src/main/java/com/crowsofwar/avatar/api/item/IGlider.java index 3815bf5eff..3eef09f36a 100644 --- a/src/main/java/com/crowsofwar/avatar/item/IGlider.java +++ b/src/main/java/com/crowsofwar/avatar/api/item/IGlider.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.api.item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBase.java b/src/main/java/com/crowsofwar/avatar/api/item/ItemHangGliderBase.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBase.java rename to src/main/java/com/crowsofwar/avatar/api/item/ItemHangGliderBase.java index 18fa023b36..268e83faaa 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBase.java +++ b/src/main/java/com/crowsofwar/avatar/api/item/ItemHangGliderBase.java @@ -1,21 +1,22 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.api.item; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.bending.bending.air.AbilityAirGust; -import com.crowsofwar.avatar.bending.bending.air.AbilityAirblade; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Chi; -import com.crowsofwar.avatar.entity.EntityAirGust; -import com.crowsofwar.avatar.entity.EntityAirblade; -import com.crowsofwar.avatar.util.event.StaffUseEvent; -import com.crowsofwar.avatar.util.helper.GliderPlayerHelper; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.network.packets.glider.PacketCUpdateClientTarget; -import com.crowsofwar.avatar.util.GliderHelper; +import com.crowsofwar.avatar.common.bending.air.AbilityAirGust; +import com.crowsofwar.avatar.common.bending.air.AbilityAirblade; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Chi; +import com.crowsofwar.avatar.common.entity.EntityAirGust; +import com.crowsofwar.avatar.common.entity.EntityAirblade; +import com.crowsofwar.avatar.common.event.StaffUseEvent; +import com.crowsofwar.avatar.common.helper.GliderPlayerHelper; +import com.crowsofwar.avatar.common.item.AvatarItem; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCUpdateClientTarget; +import com.crowsofwar.avatar.common.util.GliderHelper; import com.crowsofwar.gorecore.util.Vector; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; +import net.minecraft.block.material.Material; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -41,10 +42,10 @@ import java.util.Random; import static com.crowsofwar.avatar.AvatarInfo.MOD_ID; -import static com.crowsofwar.avatar.util.helper.GliderHelper.getIsGliderDeployed; -import static com.crowsofwar.avatar.util.helper.GliderHelper.setIsGliderDeployed; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_AIR_STAFF_COOLDOWN; -import static com.crowsofwar.avatar.util.data.TickHandlerController.STAFF_GUST_HANDLER; +import static com.crowsofwar.avatar.api.helper.GliderHelper.getIsGliderDeployed; +import static com.crowsofwar.avatar.api.helper.GliderHelper.setIsGliderDeployed; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_AIR_STAFF_COOLDOWN; +import static com.crowsofwar.avatar.common.data.TickHandlerController.STAFF_GUST_HANDLER; public class ItemHangGliderBase extends ItemSword implements IGlider, AvatarItem { diff --git a/src/main/java/com/crowsofwar/avatar/item/UpgradeItems.java b/src/main/java/com/crowsofwar/avatar/api/upgrade/UpgradeItems.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/item/UpgradeItems.java rename to src/main/java/com/crowsofwar/avatar/api/upgrade/UpgradeItems.java index 8e5d315192..1bc0f42bdc 100644 --- a/src/main/java/com/crowsofwar/avatar/item/UpgradeItems.java +++ b/src/main/java/com/crowsofwar/avatar/api/upgrade/UpgradeItems.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.api.upgrade; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/CloudburstPowerModifier.java b/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/CloudburstPowerModifier.java deleted file mode 100644 index 992bceb84c..0000000000 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/CloudburstPowerModifier.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.crowsofwar.avatar.bending.bending.air.powermods; - -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; - -public class CloudburstPowerModifier extends PowerRatingModifier { - @Override - public double get(BendingContext ctx) { - return -50; - } -} diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/StaffPowerModifier.java b/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/StaffPowerModifier.java deleted file mode 100644 index 52b709986c..0000000000 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/StaffPowerModifier.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.crowsofwar.avatar.bending.bending.air.powermods; - -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; - -public class StaffPowerModifier extends PowerRatingModifier { - @Override - public double get(BendingContext ctx) { - return 40; - } -} diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlFillWaterPouch.java b/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlFillWaterPouch.java deleted file mode 100644 index 760bc87b82..0000000000 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlFillWaterPouch.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.crowsofwar.avatar.bending.bending.water.statctrls; - -public class StatCtrlFillWaterPouch { -} diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java b/src/main/java/com/crowsofwar/avatar/client/AvatarClientProxy.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java rename to src/main/java/com/crowsofwar/avatar/client/AvatarClientProxy.java index 1a1ff39a17..86729d970e 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarClientProxy.java +++ b/src/main/java/com/crowsofwar/avatar/client/AvatarClientProxy.java @@ -15,12 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.client; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.client.*; import com.crowsofwar.avatar.client.gui.AnalyticsWarningGui; import com.crowsofwar.avatar.client.gui.AvatarUiRenderer; import com.crowsofwar.avatar.client.gui.GuiBisonChest; @@ -31,23 +30,25 @@ import com.crowsofwar.avatar.client.particles.oldsystem.*; import com.crowsofwar.avatar.client.render.*; import com.crowsofwar.avatar.client.render.iceprison.RenderIcePrison; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.blocks.tiles.TileBlockTemp; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.client.controls.IControlsHandler; -import com.crowsofwar.avatar.client.controls.KeybindingWrapper; -import com.crowsofwar.avatar.util.data.AvatarPlayerData; -import com.crowsofwar.avatar.entity.*; -import com.crowsofwar.avatar.entity.mob.EntityFirebender; -import com.crowsofwar.avatar.entity.mob.*; -import com.crowsofwar.avatar.client.gui.AvatarGui; -import com.crowsofwar.avatar.client.gui.AvatarGuiHandler; -import com.crowsofwar.avatar.network.packets.PacketSRequestData; -import com.crowsofwar.avatar.network.packets.PacketSSendViewStatus; -import com.crowsofwar.avatar.client.particle.ClientParticleSpawner; -import com.crowsofwar.avatar.capabilities.CapabilityHelper; -import com.crowsofwar.avatar.capabilities.IAdvancedGliderCapabilityHandler; -import com.crowsofwar.avatar.client.particle.ParticleBuilder.Type; +import com.crowsofwar.avatar.common.AvatarCommonProxy; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.blocks.tiles.TileBlockTemp; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.controls.IControlsHandler; +import com.crowsofwar.avatar.common.controls.KeybindingWrapper; +import com.crowsofwar.avatar.common.data.AvatarPlayerData; +import com.crowsofwar.avatar.common.entity.*; +import com.crowsofwar.avatar.common.entity.mob.EntityFirebender; +import com.crowsofwar.avatar.common.entity.mob.*; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.gui.AvatarGuiHandler; +import com.crowsofwar.avatar.common.network.IPacketHandler; +import com.crowsofwar.avatar.common.network.packets.PacketSRequestData; +import com.crowsofwar.avatar.common.network.packets.PacketSSendViewStatus; +import com.crowsofwar.avatar.common.particle.ClientParticleSpawner; +import com.crowsofwar.avatar.api.capabilities.CapabilityHelper; +import com.crowsofwar.avatar.api.capabilities.IAdvancedGliderCapabilityHandler; +import com.crowsofwar.avatar.common.particle.ParticleBuilder.Type; import com.crowsofwar.avatar.client.event.GliderRenderHandler; import com.crowsofwar.avatar.client.renderer.LayerGlider; import com.crowsofwar.gorecore.data.PlayerDataFetcher; @@ -77,8 +78,8 @@ import java.util.HashMap; import java.util.Map; -import static com.crowsofwar.avatar.config.ConfigAnalytics.ANALYTICS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigAnalytics.ANALYTICS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; import static net.minecraftforge.fml.client.registry.RenderingRegistry.registerEntityRenderingHandler; //@SideOnly(Side.CLIENT) diff --git a/src/main/java/com/crowsofwar/avatar/client/AvatarFovChanger.java b/src/main/java/com/crowsofwar/avatar/client/AvatarFovChanger.java index 9fe8a98075..0c024bde03 100644 --- a/src/main/java/com/crowsofwar/avatar/client/AvatarFovChanger.java +++ b/src/main/java/com/crowsofwar/avatar/client/AvatarFovChanger.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.client.event.FOVUpdateEvent; diff --git a/src/main/java/com/crowsofwar/avatar/client/AvatarInventoryOverride.java b/src/main/java/com/crowsofwar/avatar/client/AvatarInventoryOverride.java index 7bd1f0b114..0111fb05af 100644 --- a/src/main/java/com/crowsofwar/avatar/client/AvatarInventoryOverride.java +++ b/src/main/java/com/crowsofwar/avatar/client/AvatarInventoryOverride.java @@ -17,8 +17,8 @@ package com.crowsofwar.avatar.client; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.network.packets.PacketSBisonInventory; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.network.packets.PacketSBisonInventory; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/crowsofwar/avatar/client/ClientInput.java b/src/main/java/com/crowsofwar/avatar/client/ClientInput.java index 544cf5ef37..e162dc233d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/ClientInput.java +++ b/src/main/java/com/crowsofwar/avatar/client/ClientInput.java @@ -20,20 +20,20 @@ import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiRenderer; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.client.controls.IControlsHandler; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.event.BendingCycleEvent; -import com.crowsofwar.avatar.util.event.BendingUseEvent; -import com.crowsofwar.avatar.network.packets.*; -import com.crowsofwar.avatar.util.Raytrace; -import com.crowsofwar.avatar.util.Raytrace.Result; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.controls.IControlsHandler; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.event.BendingCycleEvent; +import com.crowsofwar.avatar.common.event.BendingUseEvent; +import com.crowsofwar.avatar.common.network.packets.*; +import com.crowsofwar.avatar.common.util.Raytrace; +import com.crowsofwar.avatar.common.util.Raytrace.Result; import com.crowsofwar.gorecore.format.FormattedMessageProcessor; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -53,9 +53,9 @@ import java.util.*; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_DONT_HAVE_BENDING; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; -import static com.crowsofwar.avatar.client.controls.AvatarControl.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_DONT_HAVE_BENDING; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.controls.AvatarControl.*; /** * Large class that manages input on the client-side. After input is received, diff --git a/src/main/java/com/crowsofwar/avatar/client/ClientKeybindWrapper.java b/src/main/java/com/crowsofwar/avatar/client/ClientKeybindWrapper.java index 396a7db283..a9766ce241 100644 --- a/src/main/java/com/crowsofwar/avatar/client/ClientKeybindWrapper.java +++ b/src/main/java/com/crowsofwar/avatar/client/ClientKeybindWrapper.java @@ -18,7 +18,7 @@ import net.minecraft.client.settings.KeyBinding; -import com.crowsofwar.avatar.client.controls.KeybindingWrapper; +import com.crowsofwar.avatar.common.controls.KeybindingWrapper; import javax.annotation.Nonnull; diff --git a/src/main/java/com/crowsofwar/avatar/network/IProxy.java b/src/main/java/com/crowsofwar/avatar/client/IProxy.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/network/IProxy.java rename to src/main/java/com/crowsofwar/avatar/client/IProxy.java index 28c118c0cc..864a4f3986 100644 --- a/src/main/java/com/crowsofwar/avatar/network/IProxy.java +++ b/src/main/java/com/crowsofwar/avatar/client/IProxy.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.client; -import com.crowsofwar.avatar.capabilities.IGliderCapabilityHandler; +import com.crowsofwar.avatar.api.capabilities.IGliderCapabilityHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fml.common.event.FMLInitializationEvent; diff --git a/src/main/java/com/crowsofwar/avatar/client/PacketHandlerClient.java b/src/main/java/com/crowsofwar/avatar/client/PacketHandlerClient.java index d66f7ac34e..619b18300a 100644 --- a/src/main/java/com/crowsofwar/avatar/client/PacketHandlerClient.java +++ b/src/main/java/com/crowsofwar/avatar/client/PacketHandlerClient.java @@ -20,16 +20,16 @@ import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.util.helper.GliderHelper; +import com.crowsofwar.avatar.api.helper.GliderHelper; import com.crowsofwar.avatar.client.gui.AvatarUiRenderer; import com.crowsofwar.avatar.client.gui.skills.SkillsGui; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.network.IPacketHandler; -import com.crowsofwar.avatar.network.packets.*; -import com.crowsofwar.avatar.network.packets.glider.PacketCClientGliding; -import com.crowsofwar.avatar.network.packets.glider.PacketCSyncGliderDataToClient; -import com.crowsofwar.avatar.network.packets.glider.PacketCUpdateClientTarget; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.network.IPacketHandler; +import com.crowsofwar.avatar.common.network.packets.*; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCClientGliding; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCSyncGliderDataToClient; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCUpdateClientTarget; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/crowsofwar/avatar/client/event/GliderRenderHandler.java b/src/main/java/com/crowsofwar/avatar/client/event/GliderRenderHandler.java index aac131a109..b92393d42c 100644 --- a/src/main/java/com/crowsofwar/avatar/client/event/GliderRenderHandler.java +++ b/src/main/java/com/crowsofwar/avatar/client/event/GliderRenderHandler.java @@ -1,12 +1,13 @@ package com.crowsofwar.avatar.client.event; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.helper.GliderHelper; -import com.crowsofwar.avatar.item.IGlider; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.api.item.IGlider; import com.crowsofwar.avatar.client.model.ModelGlider; -import com.crowsofwar.avatar.util.helper.GliderPlayerHelper; +import com.crowsofwar.avatar.common.helper.GliderPlayerHelper; +import com.crowsofwar.avatar.common.helper.MathHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.inventory.GuiInventory; import net.minecraft.client.renderer.GlStateManager; @@ -25,7 +26,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; @SideOnly(Side.CLIENT) public class GliderRenderHandler { diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/AnalyticsWarningGui.java b/src/main/java/com/crowsofwar/avatar/client/gui/AnalyticsWarningGui.java index 2225d02183..6d426ae3ba 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/AnalyticsWarningGui.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/AnalyticsWarningGui.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.gui; -import com.crowsofwar.avatar.config.ConfigAnalytics; +import com.crowsofwar.avatar.common.config.ConfigAnalytics; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiScreen; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiRenderer.java b/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiRenderer.java index bd60ee949f..90163a7406 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiRenderer.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiRenderer.java @@ -19,15 +19,16 @@ import com.crowsofwar.avatar.client.AvatarShaderUtils; import com.crowsofwar.avatar.client.gui.skills.SkillsGui; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.*; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityAirBubble; -import com.crowsofwar.avatar.entity.EntityIcePrison; -import com.crowsofwar.avatar.entity.EntityIceShield; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.*; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; +import com.crowsofwar.avatar.common.entity.EntityIcePrison; +import com.crowsofwar.avatar.common.entity.EntityIceShield; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.Gui; @@ -53,10 +54,10 @@ import static com.crowsofwar.avatar.client.gui.AvatarUiTextures.BLOCK_BREAK; import static com.crowsofwar.avatar.client.uitools.ScreenInfo.*; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.BUBBLE_CONTRACT; -import static com.crowsofwar.avatar.util.data.StatusControlController.SHIELD_SHATTER; -import static com.crowsofwar.avatar.util.data.TickHandlerController.RENDER_ELEMENT_HANDLER; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.BUBBLE_CONTRACT; +import static com.crowsofwar.avatar.common.data.StatusControlController.SHIELD_SHATTER; +import static com.crowsofwar.avatar.common.data.TickHandlerController.RENDER_ELEMENT_HANDLER; import static net.minecraft.client.renderer.GlStateManager.*; /** diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiTextures.java b/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiTextures.java index d7bbb2bcdf..0dc19795d6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiTextures.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/AvatarUiTextures.java @@ -17,9 +17,9 @@ package com.crowsofwar.avatar.client.gui; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; import net.minecraft.util.ResourceLocation; import javax.imageio.ImageIO; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/FadeElementListener.java b/src/main/java/com/crowsofwar/avatar/client/gui/FadeElementListener.java index c1693d1c62..43dfba95a1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/FadeElementListener.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/FadeElementListener.java @@ -1,15 +1,15 @@ package com.crowsofwar.avatar.client.gui; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.event.BendingCycleEvent; -import com.crowsofwar.avatar.util.event.BendingUseEvent; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.event.BendingCycleEvent; +import com.crowsofwar.avatar.common.event.BendingUseEvent; import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.RENDER_ELEMENT_HANDLER; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.RENDER_ELEMENT_HANDLER; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class FadeElementListener { diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/GuiBisonChest.java b/src/main/java/com/crowsofwar/avatar/client/gui/GuiBisonChest.java index eb83cc3235..963f7a67a9 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/GuiBisonChest.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/GuiBisonChest.java @@ -17,7 +17,9 @@ package com.crowsofwar.avatar.client.gui; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.gui.ContainerBisonChest; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.resources.I18n; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/RadialMenu.java b/src/main/java/com/crowsofwar/avatar/client/gui/RadialMenu.java index b2786a5911..4c8837e9f1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/RadialMenu.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/RadialMenu.java @@ -18,14 +18,15 @@ package com.crowsofwar.avatar.client.gui; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.network.packets.PacketSSkillsMenu; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.network.packets.PacketSSkillsMenu; import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.format.FormattedMessageProcessor; import net.minecraft.client.Minecraft; @@ -33,12 +34,13 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.resources.I18n; +import net.minecraft.init.SoundEvents; import net.minecraft.util.text.TextFormatting; import org.apache.commons.lang3.ArrayUtils; import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; import static com.crowsofwar.gorecore.format.FormattedMessage.newChatMessage; public class RadialMenu extends Gui { diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/RadialSegment.java b/src/main/java/com/crowsofwar/avatar/client/gui/RadialSegment.java index b9556a8b9f..0cb9b608fb 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/RadialSegment.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/RadialSegment.java @@ -17,8 +17,9 @@ package com.crowsofwar.avatar.client.gui; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.gui.MenuTheme; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; import net.minecraft.client.gui.ScaledResolution; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/RenderElementHandler.java b/src/main/java/com/crowsofwar/avatar/client/gui/RenderElementHandler.java index c19113859e..f1d73ca2b2 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/RenderElementHandler.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/RenderElementHandler.java @@ -1,9 +1,10 @@ package com.crowsofwar.avatar.client.gui; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.TickHandlerController; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; public class RenderElementHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/AbilityCard.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/AbilityCard.java index 69b83fee39..1f352d750e 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/AbilityCard.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/AbilityCard.java @@ -18,7 +18,7 @@ import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.*; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; import net.minecraft.client.renderer.GlStateManager; import static com.crowsofwar.avatar.client.gui.AvatarUiTextures.getAbilityTexture; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityIcon.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityIcon.java index 9c55c7b25a..f4abf6e67b 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityIcon.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityIcon.java @@ -18,8 +18,8 @@ import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.ComponentImage; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.client.Minecraft; /** diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityKeybind.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityKeybind.java index 870f18b43c..8e9f6e28fa 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityKeybind.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityKeybind.java @@ -17,15 +17,15 @@ package com.crowsofwar.avatar.client.gui.skills; import com.crowsofwar.avatar.client.uitools.UiComponent; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.config.ConfigClient; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.config.ConfigClient; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.resources.I18n; import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import org.lwjgl.input.Keyboard; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityTree.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityTree.java index 955e7de05d..555182c424 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityTree.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentAbilityTree.java @@ -19,9 +19,9 @@ import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.Measurement; import com.crowsofwar.avatar.client.uitools.UiComponent; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; import net.minecraft.client.resources.I18n; import java.util.Arrays; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentBendingTab.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentBendingTab.java index cc1a421b67..ee2c83f684 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentBendingTab.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/ComponentBendingTab.java @@ -19,8 +19,8 @@ import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.UiComponent; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.network.packets.PacketSSkillsMenu; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.network.packets.PacketSSkillsMenu; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/GetBendingGui.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/GetBendingGui.java index 9fd104acbe..2be8a212e6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/GetBendingGui.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/GetBendingGui.java @@ -19,10 +19,10 @@ import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.*; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.client.gui.AvatarGui; -import com.crowsofwar.avatar.client.gui.ContainerGetBending; -import com.crowsofwar.avatar.network.packets.PacketSUnlockBending; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.gui.ContainerGetBending; +import com.crowsofwar.avatar.common.network.packets.PacketSUnlockBending; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/SkillsGui.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/SkillsGui.java index aff66cff29..d60b91876e 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/SkillsGui.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/SkillsGui.java @@ -19,13 +19,13 @@ import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.*; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.client.gui.AvatarGui; -import com.crowsofwar.avatar.client.gui.ContainerSkillsGui; -import com.crowsofwar.avatar.network.packets.PacketSUseScroll; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.gui.ContainerSkillsGui; +import com.crowsofwar.avatar.common.network.packets.PacketSUseScroll; import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.format.FormattedMessageProcessor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/skills/WindowAbility.java b/src/main/java/com/crowsofwar/avatar/client/gui/skills/WindowAbility.java index 13d7b62a64..b743721a90 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/skills/WindowAbility.java +++ b/src/main/java/com/crowsofwar/avatar/client/gui/skills/WindowAbility.java @@ -19,10 +19,10 @@ import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiTextures; import com.crowsofwar.avatar.client.uitools.*; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.network.packets.PacketSUseScroll; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.network.packets.PacketSUseScroll; import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.format.FormattedMessageProcessor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/crowsofwar/avatar/client/model/ModelGlider.java b/src/main/java/com/crowsofwar/avatar/client/model/ModelGlider.java index 8f78882232..78e5b196e0 100644 --- a/src/main/java/com/crowsofwar/avatar/client/model/ModelGlider.java +++ b/src/main/java/com/crowsofwar/avatar/client/model/ModelGlider.java @@ -1,11 +1,14 @@ package com.crowsofwar.avatar.client.model; -import com.crowsofwar.avatar.util.helper.GliderPlayerHelper; +import com.crowsofwar.avatar.common.helper.GliderPlayerHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.util.ResourceLocation; + +import static com.crowsofwar.avatar.AvatarInfo.MOD_ID; /** * ModelGlider - DavieDoo diff --git a/src/main/java/com/crowsofwar/avatar/client/particles/newparticles/ParticleBeam.java b/src/main/java/com/crowsofwar/avatar/client/particles/newparticles/ParticleBeam.java index 64703d574f..7e56e3248a 100644 --- a/src/main/java/com/crowsofwar/avatar/client/particles/newparticles/ParticleBeam.java +++ b/src/main/java/com/crowsofwar/avatar/client/particles/newparticles/ParticleBeam.java @@ -6,6 +6,8 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; //@SideOnly(Side.CLIENT) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelEarthspikes.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelEarthspikes.java index 76a9d749d4..e862752659 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelEarthspikes.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelEarthspikes.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityEarthspike; +import com.crowsofwar.avatar.common.entity.EntityEarthspike; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelFlyingBison.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelFlyingBison.java index d7c2765895..57d1d389b1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelFlyingBison.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelFlyingBison.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.block.Block; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelOtterPenguin.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelOtterPenguin.java index 24f5328551..d054cd64a6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelOtterPenguin.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelOtterPenguin.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.mob.EntityOtterPenguin; +import com.crowsofwar.avatar.common.entity.mob.EntityOtterPenguin; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelSandstorm.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelSandstorm.java index fd4c878b47..2cffd5af92 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelSandstorm.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelSandstorm.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntitySandstorm; +import com.crowsofwar.avatar.common.entity.EntitySandstorm; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBlade.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBlade.java index 76a84a0950..73182dc1d4 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBlade.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBlade.java @@ -1,9 +1,10 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityAirblade; +import com.crowsofwar.avatar.common.entity.EntityAirblade; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.ResourceLocation; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBubble.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBubble.java index 2a7bc7b6ec..fd6e884ae9 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBubble.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirBubble.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityAirBubble; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -30,7 +30,7 @@ import org.joml.Vector4f; import org.lwjgl.opengl.GL11; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; import static net.minecraft.client.renderer.GlStateManager.*; /** diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirGust.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirGust.java index ab5597bdda..74432ec027 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAirGust.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAirGust.java @@ -1,9 +1,13 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityAirGust; +import com.crowsofwar.avatar.common.entity.EntityAirGust; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.world.World; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderArc.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderArc.java index cae0f2d541..ec04acf5a1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderArc.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderArc.java @@ -17,8 +17,8 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.ControlPoint; -import com.crowsofwar.avatar.entity.EntityArc; +import com.crowsofwar.avatar.common.entity.ControlPoint; +import com.crowsofwar.avatar.common.entity.EntityArc; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAvatarLightning.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAvatarLightning.java index 3483b74811..a110e30a4d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAvatarLightning.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAvatarLightning.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityAvatarLightning; +import com.crowsofwar.avatar.common.entity.EntityAvatarLightning; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderCloudburst.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderCloudburst.java index 6e3269f322..015437286f 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderCloudburst.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderCloudburst.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -16,7 +16,7 @@ import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; import static net.minecraft.client.renderer.GlStateManager.*; import static net.minecraft.util.math.MathHelper.cos; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikeSpawner.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikeSpawner.java index 55d29ce69c..88be259ff5 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikeSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikeSpawner.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityEarthspikeSpawner; +import com.crowsofwar.avatar.common.entity.EntityEarthspikeSpawner; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikes.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikes.java index fe308c5bae..44cf8ba2e0 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikes.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderEarthspikes.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityEarthspike; +import com.crowsofwar.avatar.common.entity.EntityEarthspike; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBase; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderFireball.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderFireball.java index 7ba7ebe6f8..7b4e12b509 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderFireball.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderFireball.java @@ -16,13 +16,15 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityFireball; +import com.crowsofwar.avatar.common.entity.EntityFireball; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.Vec3d; import org.joml.Matrix4f; import org.joml.Vector4f; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderFlames.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderFlames.java index 026945e047..0929d1137a 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderFlames.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderFlames.java @@ -17,13 +17,17 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.entity.EntityFlames; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.entity.EntityFlames; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.world.World; import java.util.Random; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderFlamethrower.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderFlamethrower.java index 667a50595e..f7bfdf9b9d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderFlamethrower.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderFlamethrower.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityFlame; +import com.crowsofwar.avatar.common.entity.EntityFlame; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderFloatingBlock.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderFloatingBlock.java index 50c89c707d..77c8e27e7a 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderFloatingBlock.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderFloatingBlock.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityFloatingBlock; +import com.crowsofwar.avatar.common.entity.EntityFloatingBlock; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderHumanBender.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderHumanBender.java index a0da1abaab..7191d5dcf2 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderHumanBender.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderHumanBender.java @@ -16,12 +16,19 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.mob.EntityHumanBender; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.mob.EntityHumanBender; +import com.crowsofwar.avatar.common.util.Raytrace; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; +import static com.crowsofwar.avatar.common.data.TickHandlerController.FLAMETHROWER; + /** * @author CrowsOfWar */ diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShard.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShard.java index 73196af854..91a2a120f7 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShard.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShard.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityIceShard; +import com.crowsofwar.avatar.common.entity.EntityIceShard; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShield.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShield.java index 53c517c0c5..0cd02968d3 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShield.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderIceShield.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityIceShield; +import com.crowsofwar.avatar.common.entity.EntityIceShield; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightCylinder.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightCylinder.java index e04c4f2efa..80ec1ef58d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightCylinder.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightCylinder.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityLightCylinder; +import com.crowsofwar.avatar.common.entity.EntityLightCylinder; import com.crowsofwar.gorecore.util.Vector; import org.lwjgl.opengl.GL11; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightOrb.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightOrb.java index d5ad440371..1de5b6cc46 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightOrb.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightOrb.java @@ -5,8 +5,13 @@ import codechicken.lib.render.CCRenderState; import codechicken.lib.render.OBJParser; import codechicken.lib.texture.TextureUtils; -import com.crowsofwar.avatar.bending.bending.fire.AbilityFlameStrike; -import com.crowsofwar.avatar.entity.EntityLightOrb; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.fire.AbilityFireball; +import com.crowsofwar.avatar.common.bending.fire.AbilityFlameStrike; +import com.crowsofwar.avatar.common.bending.fire.AbilityFlamethrower; +import com.crowsofwar.avatar.common.entity.EntityFireball; +import com.crowsofwar.avatar.common.entity.EntityLightOrb; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.GlStateManager; @@ -15,6 +20,8 @@ import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.world.World; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningArc.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningArc.java index 6e4f6846a1..79d9d527e4 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningArc.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningArc.java @@ -17,9 +17,9 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityLightningArc; -import com.crowsofwar.avatar.client.particle.ClientParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.entity.EntityLightningArc; +import com.crowsofwar.avatar.common.particle.ClientParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpawner.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpawner.java index c69e661251..52d7eadea1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpawner.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityLightningSpawner; +import com.crowsofwar.avatar.common.entity.EntityLightningSpawner; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpear.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpear.java index b6ec953fa2..5bbc4aed0e 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpear.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLightningSpear.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityLightningSpear; +import com.crowsofwar.avatar.common.entity.EntityLightningSpear; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderOstrichHorse.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderOstrichHorse.java index cca36e9ae6..c53ad1fe7e 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderOstrichHorse.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderOstrichHorse.java @@ -20,8 +20,8 @@ import com.crowsofwar.avatar.client.render.ostrich.ModelOstrichHorsePlate; import com.crowsofwar.avatar.client.render.ostrich.ModelOstrichHorseWild; import com.crowsofwar.avatar.client.render.ostrich.ModelOstrichHorseWoven; -import com.crowsofwar.avatar.entity.mob.EntityOstrichHorse; -import com.crowsofwar.avatar.item.ItemOstrichEquipment; +import com.crowsofwar.avatar.common.entity.mob.EntityOstrichHorse; +import com.crowsofwar.avatar.common.item.ItemOstrichEquipment; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderOtterPenguin.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderOtterPenguin.java index bfba2b0ae2..f162d154c6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderOtterPenguin.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderOtterPenguin.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.mob.EntityOtterPenguin; +import com.crowsofwar.avatar.common.entity.mob.EntityOtterPenguin; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderRavine.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderRavine.java index 6bbce023d2..8d95941455 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderRavine.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderRavine.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityRavine; +import com.crowsofwar.avatar.common.entity.EntityRavine; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderSandPrison.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderSandPrison.java index f12ac88ba1..0e7e669d35 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderSandPrison.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderSandPrison.java @@ -16,7 +16,7 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntitySandPrison; +import com.crowsofwar.avatar.common.entity.EntitySandPrison; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderSandstorm.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderSandstorm.java index 4fbe02a4c4..1d742e8f7b 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderSandstorm.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderSandstorm.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntitySandstorm; +import com.crowsofwar.avatar.common.entity.EntitySandstorm; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.EnumParticleTypes; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderShockwave.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderShockwave.java index 0543bda4b9..30284c8e15 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderShockwave.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderShockwave.java @@ -1,8 +1,10 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityShockwave; +import com.crowsofwar.avatar.common.entity.EntityShockwave; +import com.crowsofwar.gorecore.util.Vector; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.ResourceLocation; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderSkyBison.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderSkyBison.java index 7c1074fe96..5f67cfd2c5 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderSkyBison.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderSkyBison.java @@ -16,7 +16,8 @@ */ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderSlipstreamInvisibility.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderSlipstreamInvisibility.java index 3772cbcae9..ed0e98b549 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderSlipstreamInvisibility.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderSlipstreamInvisibility.java @@ -1,9 +1,10 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.air.powermods.SlipstreamPowerModifier; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.client.renderer.LayerGlider; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.air.powermods.SlipstreamPowerModifier; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderTempBlock.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderTempBlock.java index 636425210a..5b84ebd4eb 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderTempBlock.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderTempBlock.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.blocks.tiles.TileBlockTemp; +import com.crowsofwar.avatar.common.blocks.tiles.TileBlockTemp; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderWallSegment.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderWallSegment.java index 4d99fb9e85..a12febfa5f 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderWallSegment.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderWallSegment.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockRendererDispatcher; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterArc.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterArc.java index 0e1dc8f56f..94d0e7f500 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterArc.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterArc.java @@ -17,9 +17,9 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.ControlPoint; -import com.crowsofwar.avatar.entity.EntityArc; -import com.crowsofwar.avatar.entity.EntityWaterArc; +import com.crowsofwar.avatar.common.entity.ControlPoint; +import com.crowsofwar.avatar.common.entity.EntityArc; +import com.crowsofwar.avatar.common.entity.EntityWaterArc; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterBubble.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterBubble.java index 87f904cdd6..8ead2dbca4 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterBubble.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterBubble.java @@ -17,7 +17,7 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.EntityWaterBubble; +import com.crowsofwar.avatar.common.entity.EntityWaterBubble; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterCannon.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterCannon.java index 015237db23..818176ea8e 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterCannon.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderWaterCannon.java @@ -1,8 +1,10 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.entity.ControlPoint; -import com.crowsofwar.avatar.entity.EntityArc; -import com.crowsofwar.avatar.entity.EntityWaterCannon; +import com.crowsofwar.avatar.common.entity.ControlPoint; +import com.crowsofwar.avatar.common.entity.EntityArc; +import com.crowsofwar.avatar.common.entity.EntityWaterCannon; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; @@ -10,6 +12,10 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import static com.crowsofwar.gorecore.util.Vector.getEyePos; +import static java.lang.Math.cos; +import static java.lang.Math.sin; + public class RenderWaterCannon extends RenderArc { private static final ResourceLocation TEXTURE = new ResourceLocation("minecraft", "textures/blocks/water_overlay.png"); diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderWave.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderWave.java index 5694d8a2f1..2936d89537 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderWave.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderWave.java @@ -17,9 +17,9 @@ package com.crowsofwar.avatar.client.render; -import com.crowsofwar.avatar.bending.bending.water.AbilityCreateWave; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.entity.EntityWave; +import com.crowsofwar.avatar.common.bending.water.AbilityCreateWave; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.entity.EntityWave; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/iceprison/RenderIcePrison.java b/src/main/java/com/crowsofwar/avatar/client/render/iceprison/RenderIcePrison.java index 502e281557..bc90d216ee 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/iceprison/RenderIcePrison.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/iceprison/RenderIcePrison.java @@ -1,6 +1,6 @@ package com.crowsofwar.avatar.client.render.iceprison; -import com.crowsofwar.avatar.entity.EntityIcePrison; +import com.crowsofwar.avatar.common.entity.EntityIcePrison; import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.Render; diff --git a/src/main/java/com/crowsofwar/avatar/client/renderer/LayerGlider.java b/src/main/java/com/crowsofwar/avatar/client/renderer/LayerGlider.java index 925aa02597..2cf038fe44 100644 --- a/src/main/java/com/crowsofwar/avatar/client/renderer/LayerGlider.java +++ b/src/main/java/com/crowsofwar/avatar/client/renderer/LayerGlider.java @@ -1,9 +1,10 @@ package com.crowsofwar.avatar.client.renderer; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.util.helper.GliderHelper; -import com.crowsofwar.avatar.item.IGlider; +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.api.item.IGlider; import com.crowsofwar.avatar.client.model.ModelGlider; +import com.crowsofwar.avatar.common.config.ConfigGlider; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.renderer.GlStateManager; @@ -15,7 +16,7 @@ import javax.annotation.Nonnull; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; public class LayerGlider implements LayerRenderer { diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarAnnouncements.java b/src/main/java/com/crowsofwar/avatar/common/AvatarAnnouncements.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/network/AvatarAnnouncements.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarAnnouncements.java index d047095db4..cee8c9729c 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarAnnouncements.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarAnnouncements.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; import com.crowsofwar.avatar.AvatarLog; diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarChatMessages.java b/src/main/java/com/crowsofwar/avatar/common/AvatarChatMessages.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/network/AvatarChatMessages.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarChatMessages.java index 9e818803a6..96b7ce5c63 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarChatMessages.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarChatMessages.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common; import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.format.MessageConfiguration; diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarCommonProxy.java b/src/main/java/com/crowsofwar/avatar/common/AvatarCommonProxy.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/network/AvatarCommonProxy.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarCommonProxy.java index a1b0e183bc..9da10377af 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarCommonProxy.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarCommonProxy.java @@ -15,15 +15,16 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.particles.newparticles.ParticleAvatar; -import com.crowsofwar.avatar.client.controls.IControlsHandler; -import com.crowsofwar.avatar.client.controls.KeybindingWrapper; -import com.crowsofwar.avatar.util.data.AvatarPlayerData; -import com.crowsofwar.avatar.client.gui.AvatarGui; -import com.crowsofwar.avatar.capabilities.IAdvancedGliderCapabilityHandler; +import com.crowsofwar.avatar.common.controls.IControlsHandler; +import com.crowsofwar.avatar.common.controls.KeybindingWrapper; +import com.crowsofwar.avatar.common.data.AvatarPlayerData; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.network.IPacketHandler; +import com.crowsofwar.avatar.api.capabilities.IAdvancedGliderCapabilityHandler; import com.crowsofwar.gorecore.data.PlayerDataFetcher; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -95,7 +96,7 @@ default void registerParticles() { /** * Creates a new particle of the specified type from the appropriate particle factory. Does not actually spawn the - * particle; use {@link com.crowsofwar.avatar.client.particle.ParticleBuilder ParticleBuilder} to spawn particles. + * particle; use {@link com.crowsofwar.avatar.common.particle.ParticleBuilder ParticleBuilder} to spawn particles. */ default ParticleAvatar createParticle(ResourceLocation type, World world, double x, double y, double z) { return null; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarEntityDeath.java b/src/main/java/com/crowsofwar/avatar/common/AvatarEntityDeath.java similarity index 77% rename from src/main/java/com/crowsofwar/avatar/util/AvatarEntityDeath.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarEntityDeath.java index 53d4f30e68..df6fd190a0 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarEntityDeath.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarEntityDeath.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/crowsofwar/avatar/client/particle/AvatarParticles.java b/src/main/java/com/crowsofwar/avatar/common/AvatarParticles.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/client/particle/AvatarParticles.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarParticles.java index 8bcd6e7924..738393dd5f 100644 --- a/src/main/java/com/crowsofwar/avatar/client/particle/AvatarParticles.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarParticles.java @@ -15,15 +15,16 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.particle; +package com.crowsofwar.avatar.common; +import com.google.common.collect.Maps; import net.minecraft.util.EnumParticleTypes; import net.minecraftforge.common.util.EnumHelper; import java.util.HashMap; import java.util.Map; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; /** * Manages registration of custom particles diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarPlayerDeath.java b/src/main/java/com/crowsofwar/avatar/common/AvatarPlayerDeath.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/util/AvatarPlayerDeath.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarPlayerDeath.java index dcca298106..cde29c02be 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarPlayerDeath.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarPlayerDeath.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarPlayerTick.java b/src/main/java/com/crowsofwar/avatar/common/AvatarPlayerTick.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/util/AvatarPlayerTick.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarPlayerTick.java index 1d9dc442e7..98f5efcbb9 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarPlayerTick.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarPlayerTick.java @@ -15,18 +15,19 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.event.AbilityUnlockEvent; -import com.crowsofwar.avatar.util.event.AbilityUseEvent; -import com.crowsofwar.avatar.util.event.ElementUnlockEvent; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.event.AbilityUnlockEvent; +import com.crowsofwar.avatar.common.event.AbilityUseEvent; +import com.crowsofwar.avatar.common.event.ElementUnlockEvent; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.MinecraftForge; @@ -41,7 +42,7 @@ import java.util.Objects; import java.util.stream.Collectors; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class AvatarPlayerTick { diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarScrollDrops.java b/src/main/java/com/crowsofwar/avatar/common/AvatarScrollDrops.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/AvatarScrollDrops.java rename to src/main/java/com/crowsofwar/avatar/common/AvatarScrollDrops.java index 107b865b5a..9076dd011c 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarScrollDrops.java +++ b/src/main/java/com/crowsofwar/avatar/common/AvatarScrollDrops.java @@ -14,11 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; @@ -29,7 +30,7 @@ import java.util.List; import java.util.Objects; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class AvatarScrollDrops { diff --git a/src/main/java/com/crowsofwar/avatar/util/BisonInventoryPreventDismount.java b/src/main/java/com/crowsofwar/avatar/common/BisonInventoryPreventDismount.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/BisonInventoryPreventDismount.java rename to src/main/java/com/crowsofwar/avatar/common/BisonInventoryPreventDismount.java index 08b64c8034..d9b4705787 100644 --- a/src/main/java/com/crowsofwar/avatar/util/BisonInventoryPreventDismount.java +++ b/src/main/java/com/crowsofwar/avatar/common/BisonInventoryPreventDismount.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.client.gui.ContainerBisonChest; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.gui.ContainerBisonChest; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.event.entity.EntityMountEvent; diff --git a/src/main/java/com/crowsofwar/avatar/util/BisonLeftClickHandler.java b/src/main/java/com/crowsofwar/avatar/common/BisonLeftClickHandler.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/BisonLeftClickHandler.java rename to src/main/java/com/crowsofwar/avatar/common/BisonLeftClickHandler.java index 993b562ae9..adcafd1dbd 100644 --- a/src/main/java/com/crowsofwar/avatar/util/BisonLeftClickHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/BisonLeftClickHandler.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.DamageSource; diff --git a/src/main/java/com/crowsofwar/avatar/util/DamagePerformancePenalty.java b/src/main/java/com/crowsofwar/avatar/common/DamagePerformancePenalty.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/util/DamagePerformancePenalty.java rename to src/main/java/com/crowsofwar/avatar/common/DamagePerformancePenalty.java index 96fd22e941..2eaf660032 100644 --- a/src/main/java/com/crowsofwar/avatar/util/DamagePerformancePenalty.java +++ b/src/main/java/com/crowsofwar/avatar/common/DamagePerformancePenalty.java @@ -1,8 +1,7 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -12,7 +11,7 @@ /** * Applies a performance penalty when players take damage. * - * @see BattlePerformanceScore + * @see com.crowsofwar.avatar.common.bending.BattlePerformanceScore */ @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class DamagePerformancePenalty { diff --git a/src/main/java/com/crowsofwar/avatar/util/FallAbsorptionHandler.java b/src/main/java/com/crowsofwar/avatar/common/FallAbsorptionHandler.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/util/FallAbsorptionHandler.java rename to src/main/java/com/crowsofwar/avatar/common/FallAbsorptionHandler.java index 3a7d7a373e..13c90b69e5 100644 --- a/src/main/java/com/crowsofwar/avatar/util/FallAbsorptionHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/FallAbsorptionHandler.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.MiscData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.MiscData; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.util.FakePlayer; diff --git a/src/main/java/com/crowsofwar/avatar/util/GliderInfo.java b/src/main/java/com/crowsofwar/avatar/common/GliderInfo.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/GliderInfo.java rename to src/main/java/com/crowsofwar/avatar/common/GliderInfo.java index 22ee00e8d7..7503f5899b 100644 --- a/src/main/java/com/crowsofwar/avatar/util/GliderInfo.java +++ b/src/main/java/com/crowsofwar/avatar/common/GliderInfo.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; public class GliderInfo { public static final String NETWORK_CHANNEL = "avatarmod"; diff --git a/src/main/java/com/crowsofwar/avatar/util/HumanBenderSpawner.java b/src/main/java/com/crowsofwar/avatar/common/HumanBenderSpawner.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/util/HumanBenderSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/HumanBenderSpawner.java index ecea9daed4..fc79838aee 100644 --- a/src/main/java/com/crowsofwar/avatar/util/HumanBenderSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/HumanBenderSpawner.java @@ -14,12 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.mob.EntityAirbender; -import com.crowsofwar.avatar.entity.mob.EntityFirebender; -import com.crowsofwar.avatar.entity.mob.EntityHumanBender; +import com.crowsofwar.avatar.common.entity.mob.EntityAirbender; +import com.crowsofwar.avatar.common.entity.mob.EntityFirebender; +import com.crowsofwar.avatar.common.entity.mob.EntityHumanBender; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.util.math.AxisAlignedBB; @@ -36,7 +37,7 @@ import java.util.Map; import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/util/IceActionCanceller.java b/src/main/java/com/crowsofwar/avatar/common/IceActionCanceller.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/util/IceActionCanceller.java rename to src/main/java/com/crowsofwar/avatar/common/IceActionCanceller.java index e58a09cbd7..862a1b1e61 100644 --- a/src/main/java/com/crowsofwar/avatar/util/IceActionCanceller.java +++ b/src/main/java/com/crowsofwar/avatar/common/IceActionCanceller.java @@ -14,12 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.EntityIcePrison; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.EntityIcePrison; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; @@ -29,7 +30,7 @@ import java.util.Objects; -import static com.crowsofwar.avatar.util.data.StatusControlController.SHIELD_SHATTER; +import static com.crowsofwar.avatar.common.data.StatusControlController.SHIELD_SHATTER; /** * Cancels any actions done when a player is in an ice prison or ice shield diff --git a/src/main/java/com/crowsofwar/avatar/util/PlayerScrollShareHandler.java b/src/main/java/com/crowsofwar/avatar/common/PlayerScrollShareHandler.java similarity index 76% rename from src/main/java/com/crowsofwar/avatar/util/PlayerScrollShareHandler.java rename to src/main/java/com/crowsofwar/avatar/common/PlayerScrollShareHandler.java index 9ee9fc3f63..3231c68657 100644 --- a/src/main/java/com/crowsofwar/avatar/util/PlayerScrollShareHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/PlayerScrollShareHandler.java @@ -1,11 +1,12 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.analytics.AnalyticEvent; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.item.scroll.ItemScroll; -import com.crowsofwar.avatar.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.analytics.AnalyticEvent; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/util/QueuedAbilityExecutionHandler.java b/src/main/java/com/crowsofwar/avatar/common/QueuedAbilityExecutionHandler.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/QueuedAbilityExecutionHandler.java rename to src/main/java/com/crowsofwar/avatar/common/QueuedAbilityExecutionHandler.java index 5990006a67..45acdbeb21 100644 --- a/src/main/java/com/crowsofwar/avatar/util/QueuedAbilityExecutionHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/QueuedAbilityExecutionHandler.java @@ -1,9 +1,10 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.util.Raytrace; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/com/crowsofwar/avatar/util/ShieldAbsorptionHandler.java b/src/main/java/com/crowsofwar/avatar/common/ShieldAbsorptionHandler.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/util/ShieldAbsorptionHandler.java rename to src/main/java/com/crowsofwar/avatar/common/ShieldAbsorptionHandler.java index 3d34d97186..af5642fe1d 100644 --- a/src/main/java/com/crowsofwar/avatar/util/ShieldAbsorptionHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/ShieldAbsorptionHandler.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityShield; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityShield; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundCategory; diff --git a/src/main/java/com/crowsofwar/avatar/util/SleepChiRegenHandler.java b/src/main/java/com/crowsofwar/avatar/common/SleepChiRegenHandler.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/util/SleepChiRegenHandler.java rename to src/main/java/com/crowsofwar/avatar/common/SleepChiRegenHandler.java index 914118acc8..46a9c61152 100644 --- a/src/main/java/com/crowsofwar/avatar/util/SleepChiRegenHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/SleepChiRegenHandler.java @@ -14,21 +14,21 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Chi; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Chi; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.event.entity.player.PlayerWakeUpEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigChi.CHI_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigChi.CHI_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class SleepChiRegenHandler { diff --git a/src/main/java/com/crowsofwar/avatar/util/TemporaryWaterHandler.java b/src/main/java/com/crowsofwar/avatar/common/TemporaryWaterHandler.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/util/TemporaryWaterHandler.java rename to src/main/java/com/crowsofwar/avatar/common/TemporaryWaterHandler.java index 7db29f0a17..4c2c5a634e 100644 --- a/src/main/java/com/crowsofwar/avatar/util/TemporaryWaterHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/TemporaryWaterHandler.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.AvatarWorldData; -import com.crowsofwar.avatar.util.data.TemporaryWaterLocation; +import com.crowsofwar.avatar.common.data.AvatarWorldData; +import com.crowsofwar.avatar.common.data.TemporaryWaterLocation; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/crowsofwar/avatar/util/TransferConfirmHandler.java b/src/main/java/com/crowsofwar/avatar/common/TransferConfirmHandler.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/util/TransferConfirmHandler.java rename to src/main/java/com/crowsofwar/avatar/common/TransferConfirmHandler.java index 0affc5723e..5d1a474ee9 100644 --- a/src/main/java/com/crowsofwar/avatar/util/TransferConfirmHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/TransferConfirmHandler.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -29,7 +29,7 @@ import java.util.Map; import java.util.Set; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; /** * Manages information and handling of current bison transfers diff --git a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvent.java b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvent.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvent.java rename to src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvent.java index 141a9c764c..8da364880f 100644 --- a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvent.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.analytics; +package com.crowsofwar.avatar.common.analytics; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvents.java b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvents.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvents.java rename to src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvents.java index 7990717466..9509bdf931 100644 --- a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticEvents.java +++ b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticEvents.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.analytics; +package com.crowsofwar.avatar.common.analytics; import net.minecraft.util.DamageSource; diff --git a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsManager.java b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsManager.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsManager.java rename to src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsManager.java index 527f5cfe5e..9224d93cec 100644 --- a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsManager.java +++ b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsManager.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.analytics; +package com.crowsofwar.avatar.common.analytics; import com.crowsofwar.avatar.AvatarInfo; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsUtils.java b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsUtils.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsUtils.java rename to src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsUtils.java index b688b38e38..636467d52f 100644 --- a/src/main/java/com/crowsofwar/avatar/util/analytics/AnalyticsUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/analytics/AnalyticsUtils.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.analytics; +package com.crowsofwar.avatar.common.analytics; -import com.crowsofwar.avatar.config.ConfigAnalytics; +import com.crowsofwar.avatar.common.config.ConfigAnalytics; import java.io.OutputStream; import java.net.HttpURLConnection; diff --git a/src/main/java/com/crowsofwar/avatar/util/analytics/AvatarAnalytics.java b/src/main/java/com/crowsofwar/avatar/common/analytics/AvatarAnalytics.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/analytics/AvatarAnalytics.java rename to src/main/java/com/crowsofwar/avatar/common/analytics/AvatarAnalytics.java index ae56421562..9135c69a76 100644 --- a/src/main/java/com/crowsofwar/avatar/util/analytics/AvatarAnalytics.java +++ b/src/main/java/com/crowsofwar/avatar/common/analytics/AvatarAnalytics.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.util.analytics; +package com.crowsofwar.avatar.common.analytics; import com.crowsofwar.avatar.AvatarInfo; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.network.AvatarServerProxy; +import com.crowsofwar.avatar.server.AvatarServerProxy; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.Loader; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/Abilities.java b/src/main/java/com/crowsofwar/avatar/common/bending/Abilities.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/bending/bending/Abilities.java rename to src/main/java/com/crowsofwar/avatar/common/bending/Abilities.java index a44780df49..1abd83d339 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/Abilities.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/Abilities.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.util.data.Bender; +import com.crowsofwar.avatar.common.data.Bender; import net.minecraft.entity.EntityLiving; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/Ability.java b/src/main/java/com/crowsofwar/avatar/common/bending/Ability.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/Ability.java rename to src/main/java/com/crowsofwar/avatar/common/bending/Ability.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BattlePerformanceScore.java b/src/main/java/com/crowsofwar/avatar/common/bending/BattlePerformanceScore.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BattlePerformanceScore.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BattlePerformanceScore.java index 60857597f1..cf9d2801ac 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BattlePerformanceScore.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BattlePerformanceScore.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.DataCategory; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.DataCategory; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.math.MathHelper; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingAi.java b/src/main/java/com/crowsofwar/avatar/common/bending/BendingAi.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BendingAi.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BendingAi.java index 81ac993d6f..59c282db44 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingAi.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BendingAi.java @@ -14,18 +14,18 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.Raytrace; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIBase; -import static com.crowsofwar.avatar.bending.bending.BendingAi.AbilityType.PROJECTILE; +import static com.crowsofwar.avatar.common.bending.BendingAi.AbilityType.PROJECTILE; /** * Represents behavior needed for use of an ability by a mob. When most diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingAiMelee.java b/src/main/java/com/crowsofwar/avatar/common/bending/BendingAiMelee.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BendingAiMelee.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BendingAiMelee.java index 8bd284998a..b6ba7367f1 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingAiMelee.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BendingAiMelee.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.util.data.Bender; +import com.crowsofwar.avatar.common.data.Bender; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyle.java b/src/main/java/com/crowsofwar/avatar/common/bending/BendingStyle.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyle.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BendingStyle.java index 333691ffab..bde488a9dd 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyle.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BendingStyle.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; import com.crowsofwar.gorecore.util.GoreCoreNBTInterfaces.CreateFromNBT; import com.crowsofwar.gorecore.util.GoreCoreNBTInterfaces.ReadableWritable; import com.crowsofwar.gorecore.util.GoreCoreNBTInterfaces.WriteToNBT; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyles.java b/src/main/java/com/crowsofwar/avatar/common/bending/BendingStyles.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyles.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BendingStyles.java index 571c202a30..f9d7bc46f1 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BendingStyles.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BendingStyles.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; import javax.annotation.Nullable; import java.util.*; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/BuffPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/BuffPowerModifier.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/bending/bending/BuffPowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/BuffPowerModifier.java index d26b8ce5cb..efed809f2b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/BuffPowerModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/BuffPowerModifier.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.config.ConfigClient; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.Vision; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.config.ConfigClient; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.Vision; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; /** * "Buff abilities", abilities which apply temporary bending and other boosts, diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/DefaultAbilityAi.java b/src/main/java/com/crowsofwar/avatar/common/bending/DefaultAbilityAi.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/bending/bending/DefaultAbilityAi.java rename to src/main/java/com/crowsofwar/avatar/common/bending/DefaultAbilityAi.java index ed2fb3dc2c..f849c2b887 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/DefaultAbilityAi.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/DefaultAbilityAi.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; -import com.crowsofwar.avatar.util.data.Bender; +import com.crowsofwar.avatar.common.data.Bender; import net.minecraft.entity.EntityLiving; /** diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/WallJumpEvents.java b/src/main/java/com/crowsofwar/avatar/common/bending/WallJumpEvents.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/WallJumpEvents.java rename to src/main/java/com/crowsofwar/avatar/common/bending/WallJumpEvents.java index 8e48858593..24619a896e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/WallJumpEvents.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/WallJumpEvents.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending; +package com.crowsofwar.avatar.common.bending; import com.crowsofwar.avatar.AvatarInfo; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.MiscData; -import com.crowsofwar.avatar.network.packets.PacketSWallJump; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.MiscData; +import com.crowsofwar.avatar.common.network.packets.PacketSWallJump; import com.crowsofwar.gorecore.GoreCore; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBubble.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBubble.java index c5abc8e726..58ce183c8f 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBubble.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityAirBubble; +package com.crowsofwar.avatar.common.bending.air; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Items; @@ -29,11 +29,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath.FIRST; -import static com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath.SECOND; -import static com.crowsofwar.avatar.util.data.StatusControlController.BUBBLE_CONTRACT; -import static com.crowsofwar.avatar.util.data.StatusControlController.BUBBLE_EXPAND; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath.FIRST; +import static com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath.SECOND; +import static com.crowsofwar.avatar.common.data.StatusControlController.BUBBLE_CONTRACT; +import static com.crowsofwar.avatar.common.data.StatusControlController.BUBBLE_EXPAND; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBurst.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBurst.java similarity index 72% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBurst.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBurst.java index 76ac0e7cf8..1b85be98ce 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirBurst.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirBurst.java @@ -1,18 +1,18 @@ -package com.crowsofwar.avatar.bending.bending.air; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +package com.crowsofwar.avatar.common.bending.air; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.CHARGE_AIR_BURST; -import static com.crowsofwar.avatar.util.data.StatusControlController.RELEASE_AIR_BURST; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.CHARGE_AIR_BURST; +import static com.crowsofwar.avatar.common.data.StatusControlController.RELEASE_AIR_BURST; public class AbilityAirBurst extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirGust.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirGust.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirGust.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirGust.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirJump.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirJump.java similarity index 74% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirJump.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirJump.java index ea04a708b9..929961434a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirJump.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirJump.java @@ -15,15 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.Raytrace; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; import net.minecraft.util.math.AxisAlignedBB; @@ -31,10 +31,10 @@ import java.util.List; -import static com.crowsofwar.avatar.bending.bending.air.statctrls.StatCtrlAirJump.timesJumped; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.AIR_JUMP; -import static com.crowsofwar.avatar.util.data.TickHandlerController.AIR_PARTICLE_SPAWNER; +import static com.crowsofwar.avatar.common.bending.air.statctrls.StatCtrlAirJump.timesJumped; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.AIR_JUMP; +import static com.crowsofwar.avatar.common.data.TickHandlerController.AIR_PARTICLE_SPAWNER; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirblade.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirblade.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityAirblade.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityAirblade.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityCloudBurst.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityCloudBurst.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityCloudBurst.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityCloudBurst.java index 52c7cc596f..e8774bfdf0 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilityCloudBurst.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilityCloudBurst.java @@ -1,21 +1,21 @@ -package com.crowsofwar.avatar.bending.bending.air; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityCloudBall; -import com.crowsofwar.avatar.entity.data.CloudburstBehavior; +package com.crowsofwar.avatar.common.bending.air; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.entity.data.CloudburstBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_CLOUDBURST; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_CLOUDBURST; import static com.crowsofwar.gorecore.util.Vector.getEyePos; import static com.crowsofwar.gorecore.util.Vector.getLookRectangular; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilitySlipstream.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AbilitySlipstream.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AbilitySlipstream.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AbilitySlipstream.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBubble.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBubble.java index 19a81cda73..0879cc4b61 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBubble.java @@ -14,18 +14,18 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityAirBubble; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; import net.minecraft.entity.EntityLiving; import java.util.Random; -import static com.crowsofwar.avatar.util.data.StatusControlController.BUBBLE_EXPAND; +import static com.crowsofwar.avatar.common.data.StatusControlController.BUBBLE_EXPAND; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBurst.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBurst.java similarity index 70% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBurst.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBurst.java index 0985aa686f..e55ef9e5cd 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirBurst.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirBurst.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandlerController; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandlerController; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirGust.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirGust.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirGust.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirGust.java index 808fdbea3e..1928cc80cc 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirGust.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirGust.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirblade.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirblade.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirblade.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirblade.java index 16e0883f2e..50981848f4 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiAirblade.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiAirblade.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiCloudBall.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiCloudBall.java similarity index 77% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/AiCloudBall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/AiCloudBall.java index ee95e3c078..1fef20bafa 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/AiCloudBall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/AiCloudBall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.air; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityCloudBall; -import com.crowsofwar.avatar.entity.data.CloudburstBehavior; +package com.crowsofwar.avatar.common.bending.air; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.entity.data.CloudburstBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_CLOUDBURST; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_CLOUDBURST; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.toDegrees; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/Airbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/Airbending.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/Airbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/Airbending.java index f5b3b27f6e..0c535b27a9 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/Airbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/Airbending.java @@ -15,12 +15,14 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +package com.crowsofwar.avatar.common.bending.air; + +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.SoundEvent; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/FallDamageHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/FallDamageHandler.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/FallDamageHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/FallDamageHandler.java index 402be4fbf1..f9800d47b3 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/FallDamageHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/FallDamageHandler.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.air; +package com.crowsofwar.avatar.common.bending.air; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.DamageSource; @@ -11,7 +11,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirJumpPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirJumpPowerModifier.java similarity index 60% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirJumpPowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirJumpPowerModifier.java index 57dc16c53c..025a552829 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirJumpPowerModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirJumpPowerModifier.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.air.powermods; +package com.crowsofwar.avatar.common.bending.air.powermods; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirbendingPerformanceChiBonus.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirbendingPerformanceChiBonus.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirbendingPerformanceChiBonus.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirbendingPerformanceChiBonus.java index 4fee740eeb..faea9366ab 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/AirbendingPerformanceChiBonus.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/AirbendingPerformanceChiBonus.java @@ -1,21 +1,20 @@ -package com.crowsofwar.avatar.bending.bending.air.powermods; +package com.crowsofwar.avatar.common.bending.air.powermods; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Chi; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Chi; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; -import static com.crowsofwar.avatar.config.ConfigChi.CHI_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigChi.CHI_CONFIG; /** - * Grants airbenders a bonus where {@link BattlePerformanceScore doing well in combat} + * Grants airbenders a bonus where {@link com.crowsofwar.avatar.common.bending.BattlePerformanceScore doing well in combat} * grants them faster chi regeneration. * * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/CloudburstPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/CloudburstPowerModifier.java new file mode 100644 index 0000000000..d61d8e2902 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/CloudburstPowerModifier.java @@ -0,0 +1,11 @@ +package com.crowsofwar.avatar.common.bending.air.powermods; + +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; + +public class CloudburstPowerModifier extends PowerRatingModifier { + @Override + public double get(BendingContext ctx) { + return -50; + } +} diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/SlipstreamPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/SlipstreamPowerModifier.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/powermods/SlipstreamPowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/SlipstreamPowerModifier.java diff --git a/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/StaffPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/StaffPowerModifier.java new file mode 100644 index 0000000000..b3029fa687 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/powermods/StaffPowerModifier.java @@ -0,0 +1,11 @@ +package com.crowsofwar.avatar.common.bending.air.powermods; + +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; + +public class StaffPowerModifier extends PowerRatingModifier { + @Override + public double get(BendingContext ctx) { + return 40; + } +} diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlAirJump.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlAirJump.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlAirJump.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlAirJump.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleContract.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleContract.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleContract.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleContract.java index 13a0f94362..4bb7454ac6 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleContract.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleContract.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air.statctrls; +package com.crowsofwar.avatar.common.bending.air.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityAirBubble; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; import net.minecraft.entity.EntityLivingBase; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleExpand.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleExpand.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleExpand.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleExpand.java index 9c7a8c6ebf..607ba28fea 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlBubbleExpand.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlBubbleExpand.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air.statctrls; +package com.crowsofwar.avatar.common.bending.air.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityAirBubble; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityAirBubble; import net.minecraft.entity.EntityLivingBase; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlSetAirburstCharging.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlSetAirburstCharging.java similarity index 67% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlSetAirburstCharging.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlSetAirburstCharging.java index a57a63b877..7137eea887 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlSetAirburstCharging.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlSetAirburstCharging.java @@ -15,22 +15,22 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air.statctrls; +package com.crowsofwar.avatar.common.bending.air.statctrls; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; -import static com.crowsofwar.avatar.bending.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_UP; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.StatusControlController.RELEASE_AIR_BURST; -import static com.crowsofwar.avatar.util.data.StatusControlController.SHOOT_AIR_BURST; -import static com.crowsofwar.avatar.util.data.TickHandlerController.AIRBURST_CHARGE_HANDLER; +import static com.crowsofwar.avatar.common.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_UP; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControlController.RELEASE_AIR_BURST; +import static com.crowsofwar.avatar.common.data.StatusControlController.SHOOT_AIR_BURST; +import static com.crowsofwar.avatar.common.data.TickHandlerController.AIRBURST_CHARGE_HANDLER; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlShootAirburst.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlShootAirburst.java similarity index 63% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlShootAirburst.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlShootAirburst.java index 41b1642316..53b8eb5596 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlShootAirburst.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlShootAirburst.java @@ -1,15 +1,15 @@ -package com.crowsofwar.avatar.bending.bending.air.statctrls; +package com.crowsofwar.avatar.common.bending.air.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.TickHandlerController; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.TickHandlerController; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; -import static com.crowsofwar.avatar.bending.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; -import static com.crowsofwar.avatar.util.data.StatusControlController.RELEASE_AIR_BURST; +import static com.crowsofwar.avatar.common.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; +import static com.crowsofwar.avatar.common.data.StatusControlController.RELEASE_AIR_BURST; public class StatCtrlShootAirburst extends StatusControl { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlThrowCloudBall.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlThrowCloudBall.java similarity index 70% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlThrowCloudBall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlThrowCloudBall.java index 97f2f82c5d..17b6ae7b9e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/statctrls/StatCtrlThrowCloudBall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/statctrls/StatCtrlThrowCloudBall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.air.statctrls; - -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityCloudBall; -import com.crowsofwar.avatar.entity.data.CloudburstBehavior; +package com.crowsofwar.avatar.common.bending.air.statctrls; + +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.entity.data.CloudburstBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_LEFT_CLICK; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_LEFT_CLICK; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; public class StatCtrlThrowCloudBall extends StatusControl { public StatCtrlThrowCloudBall() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirBurstHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirBurstHandler.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirBurstHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirBurstHandler.java index 22f5c04ac0..1c4a74c824 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirBurstHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirBurstHandler.java @@ -1,19 +1,19 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; - -import com.crowsofwar.avatar.bending.bending.air.AbilityAirBurst; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.*; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.OffensiveBehaviour; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; + +import com.crowsofwar.avatar.common.bending.air.AbilityAirBurst; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.*; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.OffensiveBehaviour; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -33,10 +33,10 @@ import java.util.List; import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.RELEASE_AIR_BURST; -import static com.crowsofwar.avatar.util.data.StatusControlController.SHOOT_AIR_BURST; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.RELEASE_AIR_BURST; +import static com.crowsofwar.avatar.common.data.StatusControlController.SHOOT_AIR_BURST; public class AirBurstHandler extends TickHandler { public static final UUID AIRBURST_MOVEMENT_MODIFIER_ID = UUID.fromString diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirDodgeHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirDodgeHandler.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirDodgeHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirDodgeHandler.java index fe45b3e3a1..bcc3bd09b5 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirDodgeHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirDodgeHandler.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; //@Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirParticleSpawner.java similarity index 77% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirParticleSpawner.java index d8037f7da0..2779bca08c 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirParticleSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirParticleSpawner.java @@ -14,17 +14,17 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirStatusControlHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirStatusControlHandler.java similarity index 63% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirStatusControlHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirStatusControlHandler.java index 2c4e440d65..9e4c0e11be 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/AirStatusControlHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/AirStatusControlHandler.java @@ -1,14 +1,14 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_CLOUDBURST; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_CLOUDBURST; public class AirStatusControlHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/ShootAirBurstHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/ShootAirBurstHandler.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/ShootAirBurstHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/ShootAirBurstHandler.java index e279223c9c..b44c059739 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/ShootAirBurstHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/ShootAirBurstHandler.java @@ -1,18 +1,18 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; - -import com.crowsofwar.avatar.bending.bending.air.AbilityAirBurst; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityAirGust; -import com.crowsofwar.avatar.entity.EntityOffensive; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.OffensiveBehaviour; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; + +import com.crowsofwar.avatar.common.bending.air.AbilityAirBurst; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityAirGust; +import com.crowsofwar.avatar.common.entity.EntityOffensive; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.OffensiveBehaviour; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -24,11 +24,11 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import static com.crowsofwar.avatar.bending.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.CHARGE_AIR_BURST; -import static com.crowsofwar.avatar.util.data.TickHandlerController.AIRBURST_CHARGE_HANDLER; +import static com.crowsofwar.avatar.common.bending.air.tickhandlers.AirBurstHandler.AIRBURST_MOVEMENT_MODIFIER_ID; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.CHARGE_AIR_BURST; +import static com.crowsofwar.avatar.common.data.TickHandlerController.AIRBURST_CHARGE_HANDLER; public class ShootAirBurstHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SlipstreamAirWalkHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SlipstreamAirWalkHandler.java similarity index 72% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SlipstreamAirWalkHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SlipstreamAirWalkHandler.java index 4b387abe03..01f4c1f76c 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SlipstreamAirWalkHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SlipstreamAirWalkHandler.java @@ -1,13 +1,13 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.air.powermods.SlipstreamPowerModifier; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Chi; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.air.powermods.SlipstreamPowerModifier; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Chi; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SmashGroundHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SmashGroundHandler.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SmashGroundHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SmashGroundHandler.java index 5c7ddead90..aa49de945b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/SmashGroundHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/SmashGroundHandler.java @@ -14,22 +14,22 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.AbilityAirJump; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityOffensive; -import com.crowsofwar.avatar.entity.EntityShockwave; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.OffensiveBehaviour; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.AbilityAirJump; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityOffensive; +import com.crowsofwar.avatar.common.entity.EntityShockwave; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.OffensiveBehaviour; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/StaffGustCooldown.java b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/StaffGustCooldown.java similarity index 56% rename from src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/StaffGustCooldown.java rename to src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/StaffGustCooldown.java index c04a0942ce..db824d3eb2 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/air/tickhandlers/StaffGustCooldown.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/air/tickhandlers/StaffGustCooldown.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.air.tickhandlers; +package com.crowsofwar.avatar.common.bending.air.tickhandlers; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class StaffGustCooldown extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosion.java b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosion.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosion.java rename to src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosion.java index a516060430..7a8258e38c 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosion.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosion.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.combustion; +package com.crowsofwar.avatar.common.bending.combustion; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class AbilityExplosion extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosivePillar.java b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosivePillar.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosivePillar.java rename to src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosivePillar.java index 54590f7cca..ef8b56c573 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/AbilityExplosivePillar.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/AbilityExplosivePillar.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.combustion; +package com.crowsofwar.avatar.common.bending.combustion; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityExplosionSpawner; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityExplosionSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class AbilityExplosivePillar extends Ability { public AbilityExplosivePillar() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/Combustionbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/Combustionbending.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/combustion/Combustionbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/combustion/Combustionbending.java index 5fd426e68e..a941d86632 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/combustion/Combustionbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/combustion/Combustionbending.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.combustion; +package com.crowsofwar.avatar.common.bending.combustion; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; import net.minecraft.init.SoundEvents; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.SoundEvent; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/dev/LightningDeflectHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/dev/LightningDeflectHandler.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/dev/LightningDeflectHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/dev/LightningDeflectHandler.java index debb175b33..bb14dde647 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/dev/LightningDeflectHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/dev/LightningDeflectHandler.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.dev; +package com.crowsofwar.avatar.common.bending.dev; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.entity.EntityLightningArc; +import com.crowsofwar.avatar.common.entity.EntityLightningArc; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthControl.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthControl.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthControl.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthControl.java index 2ac7ff487f..25ecbfc83c 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthControl.java @@ -15,15 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityFloatingBlock; -import com.crowsofwar.avatar.entity.data.FloatingBlockBehavior; +package com.crowsofwar.avatar.common.bending.earth; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityFloatingBlock; +import com.crowsofwar.avatar.common.entity.data.FloatingBlockBehavior; import com.crowsofwar.gorecore.util.Vector; import com.crowsofwar.gorecore.util.VectorI; import net.minecraft.block.Block; @@ -40,10 +40,10 @@ import java.util.List; import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.PLACE_BLOCK; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_BLOCK; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.PLACE_BLOCK; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_BLOCK; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthRedirect.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthRedirect.java similarity index 75% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthRedirect.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthRedirect.java index 934cbcca78..9fbe88c7c3 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthRedirect.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthRedirect.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; public class AbilityEarthRedirect extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthSpear.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthSpear.java similarity index 52% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthSpear.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthSpear.java index 2f57b23124..31d30a762b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthSpear.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; public class AbilityEarthSpear extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthspikes.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthspikes.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthspikes.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthspikes.java index 4c9c2d5006..332492f349 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityEarthspikes.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityEarthspikes.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityEarthspikeSpawner; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityEarthspikeSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class AbilityEarthspikes extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityMining.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityMining.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityMining.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityMining.java index fc72550b06..4ed2a709aa 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityMining.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityMining.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.AvatarWorldData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ScheduledDestroyBlock; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +package com.crowsofwar.avatar.common.bending.earth; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.AvatarWorldData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ScheduledDestroyBlock; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.block.BlockOre; @@ -36,10 +36,10 @@ import java.util.*; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath.FIRST; -import static com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath.SECOND; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath.FIRST; +import static com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath.SECOND; import static net.minecraft.init.Blocks.AIR; /** diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRavine.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRavine.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRavine.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRavine.java index c32077675c..626606eb97 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRavine.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRavine.java @@ -15,20 +15,20 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityRavine; +package com.crowsofwar.avatar.common.bending.earth; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityRavine; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRestore.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRestore.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRestore.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRestore.java index 19e807d105..6fe7fd475e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityRestore.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityRestore.java @@ -1,19 +1,19 @@ -package com.crowsofwar.avatar.bending.bending.earth; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.earth.powermods.RestorePowerModifier; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +package com.crowsofwar.avatar.common.bending.earth; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.earth.powermods.RestorePowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.potion.PotionEffect; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.RESTORE_PARTICLE_SPAWNER; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.RESTORE_PARTICLE_SPAWNER; public class AbilityRestore extends Ability { public AbilityRestore() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityWall.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/AbilityWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/AbilityWall.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/Earthbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/Earthbending.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/Earthbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/Earthbending.java index 2e3c9e9ad4..272dbad979 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/Earthbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/Earthbending.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundEvent; import net.minecraft.util.text.TextFormatting; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingEvents.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingEvents.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingEvents.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingEvents.java index af4bd4ad1c..b3987ff1cf 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingEvents.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingEvents.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.util.data.AvatarWorldData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ScheduledDestroyBlock; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.data.AvatarWorldData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ScheduledDestroyBlock; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -36,7 +36,7 @@ import java.util.Iterator; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingJingModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingJingModifier.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingJingModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingJingModifier.java index 6f77f4409e..39a6623fd3 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingJingModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingJingModifier.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityMob; import net.minecraft.util.math.AxisAlignedBB; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingPerformanceBonus.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingPerformanceBonus.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingPerformanceBonus.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingPerformanceBonus.java index 90909251f9..19c167137a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/EarthbendingPerformanceBonus.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/EarthbendingPerformanceBonus.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.earth; +package com.crowsofwar.avatar.common.bending.earth; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.potion.PotionEffect; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/powermods/RestorePowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/powermods/RestorePowerModifier.java similarity index 67% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/powermods/RestorePowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/powermods/RestorePowerModifier.java index 2c67ae5fb7..07cd3d9fbf 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/powermods/RestorePowerModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/powermods/RestorePowerModifier.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.earth.powermods; +package com.crowsofwar.avatar.common.bending.earth.powermods; -import com.crowsofwar.avatar.bending.bending.BuffPowerModifier; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Vision; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.bending.BuffPowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Vision; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class RestorePowerModifier extends BuffPowerModifier { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlDropWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlDropWall.java similarity index 66% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlDropWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlDropWall.java index 4174a322b7..44a6f35d93 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlDropWall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlDropWall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.entity.data.WallBehavior; +package com.crowsofwar.avatar.common.bending.earth.statctrls; + +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.data.WallBehavior; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import java.util.List; -import static com.crowsofwar.avatar.util.data.StatusControlController.*; +import static com.crowsofwar.avatar.common.data.StatusControlController.*; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceBlock.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceBlock.java similarity index 74% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceBlock.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceBlock.java index cca6e851ab..1ea1732dea 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceBlock.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceBlock.java @@ -15,18 +15,18 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.bending.bending.earth.AbilityEarthControl; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityFloatingBlock; -import com.crowsofwar.avatar.entity.data.FloatingBlockBehavior; +package com.crowsofwar.avatar.common.bending.earth.statctrls; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.bending.earth.AbilityEarthControl; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityFloatingBlock; +import com.crowsofwar.avatar.common.entity.data.FloatingBlockBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.block.BlockSnow; @@ -38,10 +38,10 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_BLOCK; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_BLOCK; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceWall.java similarity index 73% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceWall.java index 919b95bff9..7d37a82c48 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPlaceWall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPlaceWall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.entity.data.WallBehavior; +package com.crowsofwar.avatar.common.bending.earth.statctrls; + +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.data.WallBehavior; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import java.util.List; -import static com.crowsofwar.avatar.util.data.StatusControlController.*; +import static com.crowsofwar.avatar.common.data.StatusControlController.*; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPullWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPullWall.java similarity index 73% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPullWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPullWall.java index 7e6d3752e9..96536fd99b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPullWall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPullWall.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.entity.data.WallBehavior; +package com.crowsofwar.avatar.common.bending.earth.statctrls; + +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.data.WallBehavior; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPushWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPushWall.java similarity index 70% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPushWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPushWall.java index ecc78ca030..817fcc86fe 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlPushWall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlPushWall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.entity.data.WallBehavior; +package com.crowsofwar.avatar.common.bending.earth.statctrls; + +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.data.WallBehavior; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import java.util.List; -import static com.crowsofwar.avatar.util.data.StatusControlController.PLACE_WALL; +import static com.crowsofwar.avatar.common.data.StatusControlController.PLACE_WALL; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlShootWall.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlShootWall.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlShootWall.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlShootWall.java index 5ebacfd19c..837d5554a5 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlShootWall.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlShootWall.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.earth.statctrls; +package com.crowsofwar.avatar.common.bending.earth.statctrls; import akka.japi.Pair; -import com.crowsofwar.avatar.bending.bending.earth.AbilityWall; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityFloatingBlock; -import com.crowsofwar.avatar.entity.EntityWall; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.entity.data.FloatingBlockBehavior; -import com.crowsofwar.avatar.util.AvatarUtils; -import com.crowsofwar.avatar.util.Raytrace; -import com.crowsofwar.avatar.util.Raytrace.Result; +import com.crowsofwar.avatar.common.bending.earth.AbilityWall; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityFloatingBlock; +import com.crowsofwar.avatar.common.entity.EntityWall; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.entity.data.FloatingBlockBehavior; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.Raytrace; +import com.crowsofwar.avatar.common.util.Raytrace.Result; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -24,7 +24,7 @@ import java.util.HashSet; import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlThrowBlock.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlThrowBlock.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/statctrls/StatCtrlThrowBlock.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/statctrls/StatCtrlThrowBlock.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/tickhandlers/RestoreParticleHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/earth/tickhandlers/RestoreParticleHandler.java similarity index 76% rename from src/main/java/com/crowsofwar/avatar/bending/bending/earth/tickhandlers/RestoreParticleHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/earth/tickhandlers/RestoreParticleHandler.java index 6d02fa0543..c850e432dd 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/earth/tickhandlers/RestoreParticleHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/earth/tickhandlers/RestoreParticleHandler.java @@ -1,12 +1,12 @@ -package com.crowsofwar.avatar.bending.bending.earth.tickhandlers; +package com.crowsofwar.avatar.common.bending.earth.tickhandlers; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.EnumParticleTypes; @@ -15,7 +15,7 @@ import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigClient.CLIENT_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigClient.CLIENT_CONFIG; public class RestoreParticleHandler extends TickHandler { private final ParticleSpawner particles; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireJump.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireJump.java similarity index 55% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireJump.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireJump.java index 56303da99c..1d39759aa9 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireJump.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireJump.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.fire; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.Raytrace; - -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.FIRE_JUMP; -import static com.crowsofwar.avatar.util.data.TickHandlerController.FIRE_PARTICLE_SPAWNER; +package com.crowsofwar.avatar.common.bending.fire; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.Raytrace; + +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.FIRE_JUMP; +import static com.crowsofwar.avatar.common.data.TickHandlerController.FIRE_PARTICLE_SPAWNER; public class AbilityFireJump extends Ability { public AbilityFireJump() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireRedirect.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireRedirect.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireRedirect.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireRedirect.java index 1b0a6dc4a5..c8c61ecf94 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireRedirect.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireRedirect.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; public class AbilityFireRedirect extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireShot.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireShot.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireShot.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireShot.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireball.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireball.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFireball.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFireball.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFlameStrike.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFlameStrike.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFlameStrike.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFlameStrike.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFlamethrower.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFlamethrower.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityFlamethrower.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityFlamethrower.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityImmolate.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityImmolate.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilityImmolate.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilityImmolate.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilitySwirlingInferno.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilitySwirlingInferno.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilitySwirlingInferno.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilitySwirlingInferno.java index 9af35bc5f5..bd3f903d53 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AbilitySwirlingInferno.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AbilitySwirlingInferno.java @@ -1,22 +1,22 @@ -package com.crowsofwar.avatar.bending.bending.fire; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityFireball; -import com.crowsofwar.avatar.entity.data.FireballBehavior; +package com.crowsofwar.avatar.common.bending.fire; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityFireball; +import com.crowsofwar.avatar.common.entity.data.FireballBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_FIREBALL; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_FIREBALL; import static com.crowsofwar.gorecore.util.Vector.getEyePos; import static com.crowsofwar.gorecore.util.Vector.getLookRectangular; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireShot.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireShot.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireShot.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireShot.java index 4c85a9b52f..85ed5cbc1a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireShot.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireShot.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireball.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireball.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireball.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireball.java index 9e178526fc..4ce661682b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFireball.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFireball.java @@ -14,20 +14,20 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityFireball; -import com.crowsofwar.avatar.entity.data.FireballBehavior; +package com.crowsofwar.avatar.common.bending.fire; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityFireball; +import com.crowsofwar.avatar.common.entity.data.FireballBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_FIREBALL; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_FIREBALL; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.toDegrees; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlameStrike.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlameStrike.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlameStrike.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlameStrike.java index 0f1a4c9cc8..5e3e845cae 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlameStrike.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlameStrike.java @@ -14,17 +14,17 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.AvatarUtils.normalizeAngle; +import static com.crowsofwar.avatar.common.util.AvatarUtils.normalizeAngle; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.abs; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlamethrower.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlamethrower.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlamethrower.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlamethrower.java index 7c64ed82d4..333c2dd5aa 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/AiFlamethrower.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/AiFlamethrower.java @@ -14,20 +14,20 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.data.StatusControlController.START_FLAMETHROW; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_FLAMETHROW; -import static com.crowsofwar.avatar.util.data.TickHandlerController.FLAMETHROWER; +import static com.crowsofwar.avatar.common.data.StatusControlController.START_FLAMETHROW; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_FLAMETHROW; +import static com.crowsofwar.avatar.common.data.TickHandlerController.FLAMETHROWER; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.toDegrees; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirePassiveHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FirePassiveHandler.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirePassiveHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/FirePassiveHandler.java index e68e46147e..bbfe5cdcd2 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirePassiveHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FirePassiveHandler.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -12,7 +12,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class FirePassiveHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireSmashGroundHandlerBig.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FireSmashGroundHandlerBig.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireSmashGroundHandlerBig.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/FireSmashGroundHandlerBig.java index 8df2e0fd85..15eba08047 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireSmashGroundHandlerBig.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FireSmashGroundHandlerBig.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.SmashGroundHandler; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.SmashGroundHandler; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireStatusControlHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FireStatusControlHandler.java similarity index 64% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireStatusControlHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/FireStatusControlHandler.java index 5ba53ad97a..4ce455cffb 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FireStatusControlHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FireStatusControlHandler.java @@ -1,14 +1,14 @@ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityFireball; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityFireball; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_FIREBALL; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_FIREBALL; public class FireStatusControlHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/Firebending.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/Firebending.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/Firebending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/Firebending.java index a5b9e58d42..0fdccbfced 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/Firebending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/Firebending.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.SoundEvent; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirebendingPerformanceHealthRegen.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FirebendingPerformanceHealthRegen.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirebendingPerformanceHealthRegen.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/FirebendingPerformanceHealthRegen.java index 648d6acbe4..678d200550 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/FirebendingPerformanceHealthRegen.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/FirebendingPerformanceHealthRegen.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.fire; +package com.crowsofwar.avatar.common.bending.fire; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.potion.PotionEffect; diff --git a/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolateParticleHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolateParticleHandler.java new file mode 100644 index 0000000000..eb10140a69 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolateParticleHandler.java @@ -0,0 +1,62 @@ +package com.crowsofwar.avatar.common.bending.fire; + +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.gorecore.util.Vector; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +import java.util.Random; + + +public class ImmolateParticleHandler extends TickHandler { + private final ParticleSpawner particles; + + public ImmolateParticleHandler(int id) { + super(id); + particles = new NetworkParticleSpawner(); + } + + @Override + public boolean tick(BendingContext ctx) { + EntityLivingBase entity = ctx.getBenderEntity(); + BendingData data = ctx.getData(); + AbilityData aD = data.getAbilityData("immolate"); + World world = ctx.getWorld(); + int duration = data.getTickHandlerDuration(this); + int immolateDuration = aD.getLevel() > 0 ? 60 + 40 * aD.getLevel() : 40; + //The particles take a while to disappear after the ability finishes- so you decrease the time the particles can spawn + Random rand = new Random(); + double r = rand.nextDouble(); + if (!world.isRemote) { + for (int i = 0; i < 12 + Math.max(aD.getLevel(), 1) * 4; i++) { + int random = rand.nextInt(2) + 1; + r = random == 1 ? r : r * -1; + Vector location = Vector.toRectangular(Math.toRadians(entity.rotationYaw + (i * 30) + (r * 2)), 0).times(aD.getLevel() < 1 ? 0.5 : aD.getLevel() * 0.5).withY(entity.getEyeHeight() - 0.7); + particles.spawnParticles(world, AvatarParticles.getParticleFlames(), 1, 1, location.plus(Vector.getEntityPos(entity)), + new Vector(0.8, 4, 0.8), true); + } + } + else { + for (int i = 0; i < 12 + Math.max(aD.getLevel(), 1) * 4; i++) { + int random = rand.nextInt(2) + 1; + r = random == 1 ? r : r * -1; + Vector location = Vector.toRectangular(Math.toRadians(entity.rotationYaw + (i * 30) + (r * 2)), 0).times(aD.getLevel() < 1 ? 0.5 : aD.getLevel() * 0.5).withY(entity.getEyeHeight() - 0.7); + //Temporary solution to colour fading: randomising the colour between crimson and orangey-yellow for each particle. + ParticleBuilder.create(ParticleBuilder.Type.FLASH).pos(location.plus(Vector.getEntityPos(entity)).toMinecraft()).time(4 + AvatarUtils.getRandomNumberInRange(1, 4)). + vel(world.rand.nextGaussian() / 40, world.rand.nextDouble() / 2, world.rand.nextGaussian() / 40) + .clr(235 + AvatarUtils.getRandomNumberInRange(1, 20), 30 + AvatarUtils.getRandomNumberInRange(1, 60), 5) + .element(new Firebending()).spawn(world); + } + } + return duration >= immolateDuration; + } +} + diff --git a/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolatePowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolatePowerModifier.java new file mode 100644 index 0000000000..20ada18cb9 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/ImmolatePowerModifier.java @@ -0,0 +1,94 @@ +package com.crowsofwar.avatar.common.bending.fire; + +import com.crowsofwar.avatar.common.bending.BuffPowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Vision; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.entity.projectile.EntityThrowable; +import net.minecraft.util.math.AxisAlignedBB; + +import java.util.List; + +public class ImmolatePowerModifier extends BuffPowerModifier { + + @Override + public double get(BendingContext ctx) { + + BendingData data = ctx.getData(); + AbilityData abilityData = data.getAbilityData("immolate"); + + double modifier = 20; + if (abilityData.getLevel() >= 1) { + modifier = 25; + } + if (abilityData.getLevel() == 3) { + modifier = 40; + } + if (abilityData.isMasterPath(AbilityData.AbilityTreePath.SECOND)) { + modifier = 60; + } + return modifier; + + } + + @Override + public boolean onUpdate(BendingContext ctx) { + + EntityLivingBase entity = ctx.getBenderEntity(); + AbilityData abilityData = AbilityData.get(entity, "immolate"); + + // Intermittently light on fire + if (entity.ticksExisted % 20 == 0) { + double chance = 0.3; + if (abilityData.isMasterPath(AbilityData.AbilityTreePath.SECOND)) { + chance = 0.6; + } + + // 30% chance per second to be lit on fire + if (Math.random() < chance && !abilityData.isMasterPath(AbilityData.AbilityTreePath.FIRST)) { + entity.setFire(2); + } + } + if (abilityData.isMasterPath(AbilityData.AbilityTreePath.SECOND)) { + AxisAlignedBB box = new AxisAlignedBB(entity.posX - 2, entity.posY, entity.posZ - 2, entity.posX + 2, entity.posY + 3, entity.posZ + 2); + List targets = entity.world.getEntitiesWithinAABB(Entity.class, box); + if (!entity.world.isRemote) { + if (!targets.isEmpty()) { + for (Entity e : targets) { + if (e != entity || (e instanceof AvatarEntity && ((AvatarEntity) e).getOwner() != e)) { + e.setFire(5); + if (e instanceof EntityThrowable || e instanceof EntityItem) { + e.setFire(1); + e.setDead(); + } + if (e instanceof EntityArrow) { + e.setFire(1); + e.setDead(); + } + } + } + } + } + } + + return super.onUpdate(ctx); + } + + @Override + protected Vision[] getVisions() { + return new Vision[]{Vision.IMMOLATE_WEAK, Vision.IMMOLATE_MEDIUM, Vision.IMMOLATE_POWERFUL}; + } + + @Override + protected String getAbilityName() { + return new AbilityImmolate().getName(); + } + +} + diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/powermods/FireDevourPowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/powermods/FireDevourPowerModifier.java similarity index 58% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/powermods/FireDevourPowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/powermods/FireDevourPowerModifier.java index e09c189053..843402b39f 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/powermods/FireDevourPowerModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/powermods/FireDevourPowerModifier.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.fire.powermods; +package com.crowsofwar.avatar.common.bending.fire.powermods; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class FireDevourPowerModifier extends PowerRatingModifier { private double powerRating; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeFlameStrike.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeFlameStrike.java similarity index 55% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeFlameStrike.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeFlameStrike.java index 049a23de23..921a89efb0 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeFlameStrike.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeFlameStrike.java @@ -1,14 +1,14 @@ -package com.crowsofwar.avatar.bending.bending.fire.statctrls; +package com.crowsofwar.avatar.common.bending.fire.statctrls; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.util.EnumHand; -import static com.crowsofwar.avatar.client.controls.AvatarControl.*; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_MAIN; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_OFF; +import static com.crowsofwar.avatar.common.controls.AvatarControl.*; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_MAIN; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_OFF; public class StatCtrlChargeFlameStrike extends StatusControl { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeInferno.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeInferno.java similarity index 58% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeInferno.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeInferno.java index e7fe09fed9..2b6710e2a1 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlChargeInferno.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlChargeInferno.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.fire.statctrls; +package com.crowsofwar.avatar.common.bending.fire.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class StatCtrlChargeInferno extends StatusControl { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlFireJump.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlFireJump.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlFireJump.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlFireJump.java index 3c3521d7b0..640440457d 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlFireJump.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlFireJump.java @@ -1,18 +1,18 @@ -package com.crowsofwar.avatar.bending.bending.fire.statctrls; - -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.config.ConfigSkills; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.bending.fire.statctrls; + +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.config.ConfigSkills; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -33,8 +33,8 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.*; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.*; public class StatCtrlFireJump extends StatusControl { public StatCtrlFireJump() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlFlameStrike.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlFlameStrike.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlFlameStrike.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlFlameStrike.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlSetFlamethrowing.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlSetFlamethrowing.java similarity index 64% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlSetFlamethrowing.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlSetFlamethrowing.java index 2dd5367f1f..f63c82928f 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlSetFlamethrowing.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlSetFlamethrowing.java @@ -15,27 +15,27 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire.statctrls; +package com.crowsofwar.avatar.common.bending.fire.statctrls; -import com.crowsofwar.avatar.bending.bending.fire.AbilityFlamethrower; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.bending.bending.fire.tickhandlers.FlamethrowerUpdateTick; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightOrb; +import com.crowsofwar.avatar.common.bending.fire.AbilityFlamethrower; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.bending.fire.tickhandlers.FlamethrowerUpdateTick; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightOrb; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import static com.crowsofwar.avatar.bending.bending.fire.tickhandlers.FlamethrowerUpdateTick.FLAMETHROWER_MOVEMENT_MODIFIER_ID; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_UP; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_FLAMETHROW; -import static com.crowsofwar.avatar.util.data.TickHandlerController.FLAMETHROWER; +import static com.crowsofwar.avatar.common.bending.fire.tickhandlers.FlamethrowerUpdateTick.FLAMETHROWER_MOVEMENT_MODIFIER_ID; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_UP; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_FLAMETHROW; +import static com.crowsofwar.avatar.common.data.TickHandlerController.FLAMETHROWER; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlThrowFireball.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlThrowFireball.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/statctrls/StatCtrlThrowFireball.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/statctrls/StatCtrlThrowFireball.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java similarity index 59% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java index 1d2a00d898..142de67512 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/ChargeFlameStrikeHandler.java @@ -1,14 +1,14 @@ -package com.crowsofwar.avatar.bending.bending.fire.tickhandlers; +package com.crowsofwar.avatar.common.bending.fire.tickhandlers; -import com.crowsofwar.avatar.bending.bending.fire.statctrls.StatCtrlFlameStrike; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.bending.fire.statctrls.StatCtrlFlameStrike; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import java.util.UUID; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_MAIN; -import static com.crowsofwar.avatar.util.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_OFF; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_MAIN; +import static com.crowsofwar.avatar.common.data.StatusControlController.STOP_CHARGE_FLAME_STRIKE_OFF; public class ChargeFlameStrikeHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FireParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FireParticleSpawner.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FireParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FireParticleSpawner.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FireSmashGroundHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FireSmashGroundHandler.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FireSmashGroundHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FireSmashGroundHandler.java index 53e83b997c..3e0c5ccbe9 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FireSmashGroundHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FireSmashGroundHandler.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.fire.tickhandlers; - -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.SmashGroundHandler; -import com.crowsofwar.avatar.bending.bending.fire.AbilityFireJump; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; +package com.crowsofwar.avatar.common.bending.fire.tickhandlers; + +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.SmashGroundHandler; +import com.crowsofwar.avatar.common.bending.fire.AbilityFireJump; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FlameStrikeHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FlameStrikeHandler.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FlameStrikeHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FlameStrikeHandler.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FlamethrowerUpdateTick.java b/src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FlamethrowerUpdateTick.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/bending/bending/fire/tickhandlers/FlamethrowerUpdateTick.java rename to src/main/java/com/crowsofwar/avatar/common/bending/fire/tickhandlers/FlamethrowerUpdateTick.java diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIceBurst.java b/src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIceBurst.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIceBurst.java rename to src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIceBurst.java index 9ded5abcf9..5bd6ec98b6 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIceBurst.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIceBurst.java @@ -14,20 +14,20 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.ice; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityIceShield; +package com.crowsofwar.avatar.common.bending.ice; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityIceShield; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.SHIELD_SHATTER; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.SHIELD_SHATTER; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIcePrison.java b/src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIcePrison.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIcePrison.java rename to src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIcePrison.java index a2b654e36f..ac314b16d5 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/AbilityIcePrison.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/ice/AbilityIcePrison.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.ice; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.config.ConfigStats; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityIcePrison; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.ice; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.config.ConfigStats; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityIcePrison; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -32,7 +32,7 @@ import java.util.List; import java.util.function.Predicate; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/Icebending.java b/src/main/java/com/crowsofwar/avatar/common/bending/ice/Icebending.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/bending/bending/ice/Icebending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/ice/Icebending.java index b6767cbe22..f837f395af 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/Icebending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/ice/Icebending.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.ice; +package com.crowsofwar.avatar.common.bending.ice; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundEvent; import net.minecraft.util.text.TextFormatting; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/StatCtrlShieldShatter.java b/src/main/java/com/crowsofwar/avatar/common/bending/ice/StatCtrlShieldShatter.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/bending/bending/ice/StatCtrlShieldShatter.java rename to src/main/java/com/crowsofwar/avatar/common/bending/ice/StatCtrlShieldShatter.java index 23264a523e..6ed96d8be1 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/ice/StatCtrlShieldShatter.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/ice/StatCtrlShieldShatter.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.ice; +package com.crowsofwar.avatar.common.bending.ice; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityIceShield; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityIceShield; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningArc.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningArc.java similarity index 65% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningArc.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningArc.java index 0f10477cb4..f8cf1a9309 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningArc.java @@ -1,12 +1,12 @@ -package com.crowsofwar.avatar.bending.bending.lightning; +package com.crowsofwar.avatar.common.bending.lightning; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.LIGHTNING_CHARGE; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.LIGHTNING_CHARGE; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRaze.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRaze.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRaze.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRaze.java index 64573ecbac..3885b32f12 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRaze.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRaze.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.lightning; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityLightningSpawner; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.lightning; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityLightningSpawner; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; import static com.crowsofwar.gorecore.util.Vector.getEyePos; import static com.crowsofwar.gorecore.util.Vector.getLookRectangular; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRedirect.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRedirect.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRedirect.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRedirect.java index 6bf15eceaf..a3b1e4d358 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningRedirect.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningRedirect.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.lightning; +package com.crowsofwar.avatar.common.bending.lightning; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningSpear.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningSpear.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningSpear.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningSpear.java index 8415cab298..9b393f5fdb 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AbilityLightningSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AbilityLightningSpear.java @@ -14,24 +14,24 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.lightning; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityLightningSpear; -import com.crowsofwar.avatar.entity.data.LightningSpearBehavior; +package com.crowsofwar.avatar.common.bending.lightning; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityLightningSpear; +import com.crowsofwar.avatar.common.entity.data.LightningSpearBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_LIGHTNINGSPEAR; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_LIGHTNINGSPEAR; import static com.crowsofwar.gorecore.util.Vector.getEyePos; import static com.crowsofwar.gorecore.util.Vector.getLookRectangular; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AiLightningSpear.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AiLightningSpear.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AiLightningSpear.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/AiLightningSpear.java index 1c0b97eb1a..0374a9f519 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/AiLightningSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/AiLightningSpear.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.lightning; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightningSpear; -import com.crowsofwar.avatar.entity.data.LightningSpearBehavior; +package com.crowsofwar.avatar.common.bending.lightning; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightningSpear; +import com.crowsofwar.avatar.common.entity.data.LightningSpearBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_LIGHTNINGSPEAR; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_LIGHTNINGSPEAR; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.toDegrees; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningChargeHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningChargeHandler.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningChargeHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningChargeHandler.java index a92942312e..0917fa2519 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningChargeHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningChargeHandler.java @@ -1,13 +1,13 @@ -package com.crowsofwar.avatar.bending.bending.lightning; - -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntityLightningArc; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +package com.crowsofwar.avatar.common.bending.lightning; + +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntityLightningArc; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningCreateHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningCreateHandler.java similarity index 66% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningCreateHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningCreateHandler.java index c2210b8f1a..71323fd03a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningCreateHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningCreateHandler.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.lightning; +package com.crowsofwar.avatar.common.bending.lightning; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningRedirectHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningRedirectHandler.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningRedirectHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningRedirectHandler.java index f8fb2a0860..afb750019a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/LightningRedirectHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/LightningRedirectHandler.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.lightning; +package com.crowsofwar.avatar.common.bending.lightning; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BenderInfo; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BenderInfo; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import org.joml.SimplexNoise; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/Lightningbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/Lightningbending.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/Lightningbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/Lightningbending.java index 45620d6dbd..f5f4ee9384 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/Lightningbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/Lightningbending.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.lightning; +package com.crowsofwar.avatar.common.bending.lightning; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundEvent; import net.minecraft.util.text.TextFormatting; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/StatCtrlThrowLightningSpear.java b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/StatCtrlThrowLightningSpear.java similarity index 66% rename from src/main/java/com/crowsofwar/avatar/bending/bending/lightning/StatCtrlThrowLightningSpear.java rename to src/main/java/com/crowsofwar/avatar/common/bending/lightning/StatCtrlThrowLightningSpear.java index 619d428a70..c89301497e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/lightning/StatCtrlThrowLightningSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/lightning/StatCtrlThrowLightningSpear.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bending.lightning; - -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightningSpear; -import com.crowsofwar.avatar.entity.data.LightningSpearBehavior; +package com.crowsofwar.avatar.common.bending.lightning; + +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightningSpear; +import com.crowsofwar.avatar.common.entity.data.LightningSpearBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_LEFT_CLICK; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_LEFT_CLICK; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.LEFT_OF_CROSSHAIR; public class StatCtrlThrowLightningSpear extends StatusControl { public StatCtrlThrowLightningSpear() { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandPrison.java b/src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandPrison.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandPrison.java rename to src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandPrison.java index 2817f585d9..efeb4fb350 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandPrison.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandPrison.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.bending.bending.sand; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.config.ConfigStats; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntitySandPrison; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.sand; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.config.ConfigStats; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntitySandPrison; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -18,7 +18,7 @@ import java.util.List; import java.util.function.Predicate; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandstorm.java b/src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandstorm.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandstorm.java rename to src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandstorm.java index 4b19188816..154049898d 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/AbilitySandstorm.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/sand/AbilitySandstorm.java @@ -1,16 +1,16 @@ -package com.crowsofwar.avatar.bending.bending.sand; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.config.ConfigStats; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntitySandstorm; +package com.crowsofwar.avatar.common.bending.sand; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.config.ConfigStats; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntitySandstorm; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import static com.crowsofwar.avatar.util.data.StatusControlController.SANDSTORM_REDIRECT; +import static com.crowsofwar.avatar.common.data.StatusControlController.SANDSTORM_REDIRECT; public class AbilitySandstorm extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/Sandbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/sand/Sandbending.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/sand/Sandbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/sand/Sandbending.java index 1cf1eb97e0..f01c9255ae 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/Sandbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/sand/Sandbending.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.sand; +package com.crowsofwar.avatar.common.bending.sand; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; import net.minecraft.init.SoundEvents; import net.minecraft.util.SoundEvent; import net.minecraft.util.text.TextFormatting; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/StatCtrlSandstormRedirect.java b/src/main/java/com/crowsofwar/avatar/common/bending/sand/StatCtrlSandstormRedirect.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/bending/bending/sand/StatCtrlSandstormRedirect.java rename to src/main/java/com/crowsofwar/avatar/common/bending/sand/StatCtrlSandstormRedirect.java index dfd518b011..b9cdb82ab0 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/sand/StatCtrlSandstormRedirect.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/sand/StatCtrlSandstormRedirect.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.sand; +package com.crowsofwar.avatar.common.bending.sand; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.EntitySandstorm; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.EntitySandstorm; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityBubbleBlitz.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityBubbleBlitz.java similarity index 69% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityBubbleBlitz.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityBubbleBlitz.java index d2b9ec4ef3..fe4b28908e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityBubbleBlitz.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityBubbleBlitz.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; public class AbilityBubbleBlitz extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCleanse.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCleanse.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCleanse.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCleanse.java index b065aa03e2..5cf597682b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCleanse.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCleanse.java @@ -1,12 +1,12 @@ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.water.tickhandlers.CleansePowerModifier; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.water.tickhandlers.CleansePowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; @@ -24,8 +24,8 @@ import java.util.function.BiPredicate; import java.util.function.Consumer; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; import static java.lang.Math.toRadians; public class AbilityCleanse extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCreateWave.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCreateWave.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCreateWave.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCreateWave.java index 4be08218ea..accc6c3719 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityCreateWave.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityCreateWave.java @@ -15,15 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.EntityWave; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.EntityWave; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import com.crowsofwar.gorecore.util.VectorI; import net.minecraft.block.state.IBlockState; @@ -32,7 +32,7 @@ import net.minecraft.init.Blocks; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class AbilityCreateWave extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterArc.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterArc.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterArc.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterArc.java index 823dcc8056..0c0d06d1ee 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterArc.java @@ -15,18 +15,18 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterArc; -import com.crowsofwar.avatar.entity.data.WaterArcBehavior; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterArc; +import com.crowsofwar.avatar.common.entity.data.WaterArcBehavior; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLiving; @@ -38,9 +38,9 @@ import java.util.function.BiPredicate; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_WATER; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_WATER; import static com.crowsofwar.gorecore.util.Vector.getLookRectangular; import static java.lang.Math.toRadians; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBlast.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBlast.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBlast.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBlast.java index 208c6e3185..67fb05b51b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBlast.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBlast.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; @@ -16,9 +16,9 @@ import java.util.function.BiPredicate; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.WATER_CHARGE; -import static com.crowsofwar.avatar.util.data.TickHandlerController.WATER_PARTICLE_SPAWNER; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.WATER_CHARGE; +import static com.crowsofwar.avatar.common.data.TickHandlerController.WATER_PARTICLE_SPAWNER; import static java.lang.Math.toRadians; public class AbilityWaterBlast extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBubble.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBubble.java index 26cc236a7a..3885681d8a 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterBubble.java @@ -15,17 +15,17 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterBubble; -import com.crowsofwar.avatar.entity.data.WaterBubbleBehavior; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterBubble; +import com.crowsofwar.avatar.common.entity.data.WaterBubbleBehavior; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; @@ -35,9 +35,9 @@ import java.util.function.BiPredicate; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.LOB_BUBBLE; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.LOB_BUBBLE; import static java.lang.Math.toRadians; /** diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterRedirect.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterRedirect.java similarity index 75% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterRedirect.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterRedirect.java index 1e72f9a1f5..650d80ec04 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterRedirect.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterRedirect.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; public class AbilityWaterRedirect extends Ability { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterSkate.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterSkate.java similarity index 74% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterSkate.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterSkate.java index 0ab0c4afb1..619c866636 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AbilityWaterSkate.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AbilityWaterSkate.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; -import static com.crowsofwar.avatar.util.data.StatusControlController.SKATING_START; -import static com.crowsofwar.avatar.util.data.TickHandlerController.WATER_SKATE; +import static com.crowsofwar.avatar.common.data.StatusControlController.SKATING_START; +import static com.crowsofwar.avatar.common.data.TickHandlerController.WATER_SKATE; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWaterArc.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AiWaterArc.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWaterArc.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AiWaterArc.java index ae59eabab3..73dc26f12b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWaterArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AiWaterArc.java @@ -14,20 +14,20 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterArc; -import com.crowsofwar.avatar.entity.data.WaterArcBehavior; +package com.crowsofwar.avatar.common.bending.water; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterArc; +import com.crowsofwar.avatar.common.entity.data.WaterArcBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_WATER; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_WATER; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.getRotationTo; import static java.lang.Math.toDegrees; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWave.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/AiWave.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWave.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/AiWave.java index b8da4d0c28..5d0fc253ff 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/AiWave.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/AiWave.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingAi; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingAi; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import com.crowsofwar.gorecore.util.VectorI; import net.minecraft.block.state.IBlockState; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterPassives.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/WaterPassives.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterPassives.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/WaterPassives.java index 5650138f29..e1fb840f1b 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterPassives.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/WaterPassives.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; @@ -12,7 +12,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) public class WaterPassives { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/Waterbending.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/Waterbending.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/Waterbending.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/Waterbending.java index 1be0858b88..f6366fc779 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/Waterbending.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/Waterbending.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.client.gui.BendingMenuInfo; -import com.crowsofwar.avatar.client.gui.MenuTheme; -import com.crowsofwar.avatar.client.gui.MenuTheme.ThemeColor; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.gui.BendingMenuInfo; +import com.crowsofwar.avatar.common.gui.MenuTheme; +import com.crowsofwar.avatar.common.gui.MenuTheme.ThemeColor; import net.minecraft.init.SoundEvents; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.SoundEvent; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterbendingPerformanceBonus.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/WaterbendingPerformanceBonus.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterbendingPerformanceBonus.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/WaterbendingPerformanceBonus.java index 20a42daaf3..6c15472f29 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/WaterbendingPerformanceBonus.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/WaterbendingPerformanceBonus.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.water; +package com.crowsofwar.avatar.common.bending.water; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.BendingData; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.potion.PotionEffect; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeBubble.java similarity index 67% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeBubble.java index df7f3a7f17..9a897b0e0e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeBubble.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterBubble; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterBubble; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeWaterBlast.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeWaterBlast.java similarity index 64% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeWaterBlast.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeWaterBlast.java index f7051c3e31..f9208c26bb 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlChargeWaterBlast.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlChargeWaterBlast.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class StatCtrlChargeWaterBlast extends StatusControl { diff --git a/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlFillWaterPouch.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlFillWaterPouch.java new file mode 100644 index 0000000000..5b6a229dd4 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlFillWaterPouch.java @@ -0,0 +1,4 @@ +package com.crowsofwar.avatar.common.bending.water.statctrls; + +public class StatCtrlFillWaterPouch { +} diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlLobBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlLobBubble.java similarity index 69% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlLobBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlLobBubble.java index a36c058543..cb37303da5 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlLobBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlLobBubble.java @@ -15,21 +15,21 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterBubble; -import com.crowsofwar.avatar.entity.data.WaterBubbleBehavior; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterBubble; +import com.crowsofwar.avatar.common.entity.data.WaterBubbleBehavior; import com.crowsofwar.gorecore.util.Vector; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_RIGHT_CLICK_DOWN; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.RIGHT_OF_CROSSHAIR; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateJump.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateJump.java similarity index 69% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateJump.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateJump.java index 33bffb4d0b..5d3c4b1876 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateJump.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateJump.java @@ -14,21 +14,21 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; -import static com.crowsofwar.avatar.client.controls.AvatarControl.CONTROL_JUMP; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.BELOW_CROSSHAIR; -import static com.crowsofwar.avatar.util.data.TickHandlerController.SMASH_GROUND_WATER; -import static com.crowsofwar.avatar.util.data.TickHandlerController.WATER_SKATE; +import static com.crowsofwar.avatar.common.controls.AvatarControl.CONTROL_JUMP; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.BELOW_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.TickHandlerController.SMASH_GROUND_WATER; +import static com.crowsofwar.avatar.common.data.TickHandlerController.WATER_SKATE; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateStart.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateStart.java similarity index 73% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateStart.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateStart.java index a044705567..7c822e78c2 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlSkateStart.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlSkateStart.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; -import static com.crowsofwar.avatar.util.data.StatusControl.CrosshairPosition.BELOW_CROSSHAIR; +import static com.crowsofwar.avatar.common.data.StatusControl.CrosshairPosition.BELOW_CROSSHAIR; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowBubble.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowBubble.java similarity index 57% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowBubble.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowBubble.java index 8703128fab..215032d75d 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowBubble.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.bending.bending.water.statctrls; +package com.crowsofwar.avatar.common.bending.water.statctrls; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class StatCtrlThrowBubble extends StatusControl { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowWater.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowWater.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowWater.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowWater.java index 8798477a09..5903bce455 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/statctrls/StatCtrlThrowWater.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/statctrls/StatCtrlThrowWater.java @@ -15,16 +15,16 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water.statctrls; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityWaterArc; -import com.crowsofwar.avatar.entity.data.WaterArcBehavior; +package com.crowsofwar.avatar.common.bending.water.statctrls; + +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityWaterArc; +import com.crowsofwar.avatar.common.entity.data.WaterArcBehavior; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/CleansePowerModifier.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/CleansePowerModifier.java similarity index 67% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/CleansePowerModifier.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/CleansePowerModifier.java index d335fc9412..e22a9ae9d0 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/CleansePowerModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/CleansePowerModifier.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; -import com.crowsofwar.avatar.bending.bending.BuffPowerModifier; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.Vision; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.bending.BuffPowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.Vision; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class CleansePowerModifier extends BuffPowerModifier { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterArcComboHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterArcComboHandler.java similarity index 56% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterArcComboHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterArcComboHandler.java index 053ca1c1ae..5a9f2cacbf 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterArcComboHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterArcComboHandler.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; public class WaterArcComboHandler extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterChargeHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterChargeHandler.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterChargeHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterChargeHandler.java index 804c329248..a521a837cb 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterChargeHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterChargeHandler.java @@ -1,18 +1,18 @@ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; - -import com.crowsofwar.avatar.bending.bending.water.AbilityWaterBlast; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightCylinder; -import com.crowsofwar.avatar.entity.EntityWaterCannon; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.LightCylinderBehaviour; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; + +import com.crowsofwar.avatar.common.bending.water.AbilityWaterBlast; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightCylinder; +import com.crowsofwar.avatar.common.entity.EntityWaterCannon; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.LightCylinderBehaviour; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -28,8 +28,8 @@ import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class WaterChargeHandler extends TickHandler { public static final UUID MOVEMENT_MODIFIER_ID = UUID.fromString("87a0458a-38ea-4d7a-be3b-0fee10217aa6"); diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterParticleSpawner.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterParticleSpawner.java index 240b2291f7..ca021ecb1e 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterParticleSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterParticleSpawner.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.AvatarEntity; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.AvatarEntity; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -17,7 +17,7 @@ import java.util.List; -import static com.crowsofwar.avatar.util.data.TickHandlerController.WATER_CHARGE; +import static com.crowsofwar.avatar.common.data.TickHandlerController.WATER_CHARGE; public class WaterParticleSpawner extends TickHandler { diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSkateHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSkateHandler.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSkateHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSkateHandler.java index 7642b70f7d..1a0b861d31 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSkateHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSkateHandler.java @@ -14,17 +14,17 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; - -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.client.particle.ParticleSpawner; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; + +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.particle.ParticleSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; @@ -40,10 +40,10 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.SKATING_JUMP; -import static com.crowsofwar.avatar.util.data.StatusControlController.SKATING_START; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.SKATING_JUMP; +import static com.crowsofwar.avatar.common.data.StatusControlController.SKATING_START; import static com.crowsofwar.gorecore.util.Vector.toRectangular; import static java.lang.Math.toRadians; import static net.minecraft.init.Blocks.WATER; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSmashHandler.java b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSmashHandler.java similarity index 69% rename from src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSmashHandler.java rename to src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSmashHandler.java index 58bf476d15..7e5ddeae92 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bending/water/tickhandlers/WaterSmashHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/bending/water/tickhandlers/WaterSmashHandler.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.bending.bending.water.tickhandlers; +package com.crowsofwar.avatar.common.bending.water.tickhandlers; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.SmashGroundHandler; -import com.crowsofwar.avatar.bending.bending.water.AbilityWaterSkate; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.SmashGroundHandler; +import com.crowsofwar.avatar.common.bending.water.AbilityWaterSkate; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; import net.minecraft.init.SoundEvents; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumParticleTypes; diff --git a/src/main/java/com/crowsofwar/avatar/blocks/AvatarBlocks.java b/src/main/java/com/crowsofwar/avatar/common/blocks/AvatarBlocks.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/blocks/AvatarBlocks.java rename to src/main/java/com/crowsofwar/avatar/common/blocks/AvatarBlocks.java index 15b72b755f..d780dd4433 100644 --- a/src/main/java/com/crowsofwar/avatar/blocks/AvatarBlocks.java +++ b/src/main/java/com/crowsofwar/avatar/common/blocks/AvatarBlocks.java @@ -14,11 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.blocks; +package com.crowsofwar.avatar.common.blocks; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.blocks.tiles.TileBlockTemp; +import com.crowsofwar.avatar.common.blocks.tiles.TileBlockTemp; import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/com/crowsofwar/avatar/blocks/BlockTemp.java b/src/main/java/com/crowsofwar/avatar/common/blocks/BlockTemp.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/blocks/BlockTemp.java rename to src/main/java/com/crowsofwar/avatar/common/blocks/BlockTemp.java index fcf9143a83..19b0c177e2 100644 --- a/src/main/java/com/crowsofwar/avatar/blocks/BlockTemp.java +++ b/src/main/java/com/crowsofwar/avatar/common/blocks/BlockTemp.java @@ -1,7 +1,8 @@ -package com.crowsofwar.avatar.blocks; +package com.crowsofwar.avatar.common.blocks; -import com.crowsofwar.avatar.blocks.tiles.TileBlockTemp; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.AvatarMod; +import com.crowsofwar.avatar.common.blocks.tiles.TileBlockTemp; +import com.crowsofwar.avatar.common.item.AvatarItems; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/crowsofwar/avatar/blocks/BlockUtils.java b/src/main/java/com/crowsofwar/avatar/common/blocks/BlockUtils.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/blocks/BlockUtils.java rename to src/main/java/com/crowsofwar/avatar/common/blocks/BlockUtils.java index c643de65b1..8be2ca1c56 100644 --- a/src/main/java/com/crowsofwar/avatar/blocks/BlockUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/blocks/BlockUtils.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.blocks; +package com.crowsofwar.avatar.common.blocks; import net.minecraft.block.BlockLiquid; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/crowsofwar/avatar/blocks/CloudBlock.java b/src/main/java/com/crowsofwar/avatar/common/blocks/CloudBlock.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/blocks/CloudBlock.java rename to src/main/java/com/crowsofwar/avatar/common/blocks/CloudBlock.java diff --git a/src/main/java/com/crowsofwar/avatar/blocks/tiles/TileBlockTemp.java b/src/main/java/com/crowsofwar/avatar/common/blocks/tiles/TileBlockTemp.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/blocks/tiles/TileBlockTemp.java rename to src/main/java/com/crowsofwar/avatar/common/blocks/tiles/TileBlockTemp.java index c058328e7d..d268855d77 100644 --- a/src/main/java/com/crowsofwar/avatar/blocks/tiles/TileBlockTemp.java +++ b/src/main/java/com/crowsofwar/avatar/common/blocks/tiles/TileBlockTemp.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.blocks.tiles; +package com.crowsofwar.avatar.common.blocks.tiles; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/crowsofwar/avatar/capabilities/GliderCapabilityImplementation.java b/src/main/java/com/crowsofwar/avatar/common/capabilities/GliderCapabilityImplementation.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/capabilities/GliderCapabilityImplementation.java rename to src/main/java/com/crowsofwar/avatar/common/capabilities/GliderCapabilityImplementation.java index 007e6845f3..0917fa632c 100644 --- a/src/main/java/com/crowsofwar/avatar/capabilities/GliderCapabilityImplementation.java +++ b/src/main/java/com/crowsofwar/avatar/common/capabilities/GliderCapabilityImplementation.java @@ -1,8 +1,9 @@ -package com.crowsofwar.avatar.capabilities; +package com.crowsofwar.avatar.common.capabilities; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.network.packets.glider.PacketCSyncGliderDataToClient; +import com.crowsofwar.avatar.api.capabilities.IAdvancedGliderCapabilityHandler; +import com.crowsofwar.avatar.common.network.packets.glider.PacketCSyncGliderDataToClient; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; @@ -13,7 +14,7 @@ import net.minecraftforge.common.capabilities.ICapabilitySerializable; import static com.crowsofwar.avatar.AvatarInfo.MOD_ID; -import static com.crowsofwar.avatar.capabilities.CapabilityHelper.GLIDER_CAPABILITY; +import static com.crowsofwar.avatar.api.capabilities.CapabilityHelper.GLIDER_CAPABILITY; public final class GliderCapabilityImplementation { diff --git a/src/main/java/com/crowsofwar/avatar/util/command/ArgumentAbility.java b/src/main/java/com/crowsofwar/avatar/common/command/ArgumentAbility.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/util/command/ArgumentAbility.java rename to src/main/java/com/crowsofwar/avatar/common/command/ArgumentAbility.java index 4e08ca1500..d1bbe572c1 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/ArgumentAbility.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/ArgumentAbility.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; import com.crowsofwar.gorecore.tree.IArgument; import com.crowsofwar.gorecore.tree.TreeCommandException; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/ArgumentBendingController.java b/src/main/java/com/crowsofwar/avatar/common/command/ArgumentBendingController.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/util/command/ArgumentBendingController.java rename to src/main/java/com/crowsofwar/avatar/common/command/ArgumentBendingController.java index f764564727..7f661b0b08 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/ArgumentBendingController.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/ArgumentBendingController.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; import com.crowsofwar.gorecore.tree.IArgument; import net.minecraft.command.ICommandSender; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/AvatarCommand.java b/src/main/java/com/crowsofwar/avatar/common/command/AvatarCommand.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/command/AvatarCommand.java rename to src/main/java/com/crowsofwar/avatar/common/command/AvatarCommand.java index 292856fb75..533de62641 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/AvatarCommand.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/AvatarCommand.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.network.AvatarChatMessages; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; +import com.crowsofwar.avatar.common.AvatarChatMessages; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; import com.crowsofwar.gorecore.tree.ICommandNode; import com.crowsofwar.gorecore.tree.ITypeConverter; import com.crowsofwar.gorecore.tree.NodeBranch; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeAbilityGet.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeAbilityGet.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeAbilityGet.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeAbilityGet.java index 320b8dc3c9..70e1109eae 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeAbilityGet.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeAbilityGet.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.network.AvatarChatMessages; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.AvatarChatMessages; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.tree.*; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeAbilitySet.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeAbilitySet.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeAbilitySet.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeAbilitySet.java index 4bb7a7a70d..aa089d2cf6 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeAbilitySet.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeAbilitySet.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.network.AvatarChatMessages; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.AvatarChatMessages; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.tree.*; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingAdd.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingAdd.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeBendingAdd.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeBendingAdd.java index 70c9316403..37fdf45f69 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingAdd.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingAdd.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.event.ElementUnlockEvent; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.event.ElementUnlockEvent; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.tree.*; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +29,7 @@ import java.util.List; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; public class NodeBendingAdd extends NodeFunctional { diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingList.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingList.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeBendingList.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeBendingList.java index 9d7e29bff2..a04519e2d0 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingList.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingList.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.network.AvatarChatMessages; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.AvatarChatMessages; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.data.BendingData; import com.crowsofwar.gorecore.tree.*; import net.minecraft.command.ICommandSender; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingRemove.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingRemove.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeBendingRemove.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeBendingRemove.java index 62cd63e01d..ad713d4f85 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeBendingRemove.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeBendingRemove.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.event.ElementRemoveEvent; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.event.ElementRemoveEvent; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.tree.*; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -29,7 +29,7 @@ import java.util.List; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; public class NodeBendingRemove extends NodeFunctional { diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeConfig.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeConfig.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeConfig.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeConfig.java index 76e1ef6288..5948264fa3 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeConfig.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeConfig.java @@ -15,16 +15,16 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; +package com.crowsofwar.avatar.common.command; -import com.crowsofwar.avatar.config.*; +import com.crowsofwar.avatar.common.config.*; import com.crowsofwar.gorecore.config.ConfigurationException; import com.crowsofwar.gorecore.tree.*; import net.minecraft.command.ICommandSender; import java.util.List; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/util/command/NodeXpSet.java b/src/main/java/com/crowsofwar/avatar/common/command/NodeXpSet.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/util/command/NodeXpSet.java rename to src/main/java/com/crowsofwar/avatar/common/command/NodeXpSet.java index ef786a7cca..40da8a8159 100644 --- a/src/main/java/com/crowsofwar/avatar/util/command/NodeXpSet.java +++ b/src/main/java/com/crowsofwar/avatar/common/command/NodeXpSet.java @@ -14,22 +14,22 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.command; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.event.AbilityLevelEvent; -import com.crowsofwar.avatar.util.event.AbilityUnlockEvent; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +package com.crowsofwar.avatar.common.command; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.event.AbilityLevelEvent; +import com.crowsofwar.avatar.common.event.AbilityUnlockEvent; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.tree.*; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.MinecraftForge; import java.util.List; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_XPSET_SUCCESS; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_XPSET_SUCCESS; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/config/AbilityProperties.java b/src/main/java/com/crowsofwar/avatar/common/config/AbilityProperties.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/config/AbilityProperties.java rename to src/main/java/com/crowsofwar/avatar/common/config/AbilityProperties.java diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigAnalytics.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigAnalytics.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/config/ConfigAnalytics.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigAnalytics.java index 6e39d5c52b..c393379e4a 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigAnalytics.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigAnalytics.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.gorecore.config.ConfigLoader; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigChi.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigChi.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/config/ConfigChi.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigChi.java index cc1f5f6d73..5f324da14f 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigChi.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigChi.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import com.crowsofwar.gorecore.config.ConfigLoader; import com.crowsofwar.gorecore.config.Load; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigClient.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigClient.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/config/ConfigClient.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigClient.java index baf967b8f8..1f4cdf65d3 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigClient.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigClient.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; import com.crowsofwar.gorecore.config.ConfigLoader; import com.crowsofwar.gorecore.config.Load; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigGlider.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigGlider.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/config/ConfigGlider.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigGlider.java index 4f87a1d654..046ac40937 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigGlider.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigGlider.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import com.crowsofwar.gorecore.config.ConfigLoader; import com.crowsofwar.gorecore.config.Load; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigMobs.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigMobs.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/config/ConfigMobs.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigMobs.java index 020c2a9e18..1a2f7314d6 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigMobs.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigMobs.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import akka.japi.Pair; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import com.crowsofwar.gorecore.config.ConfigLoader; import com.crowsofwar.gorecore.config.Load; import com.google.common.collect.ArrayListMultimap; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigSkills.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigSkills.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/config/ConfigSkills.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigSkills.java index 91a8262558..c85899f96e 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigSkills.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigSkills.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import com.crowsofwar.gorecore.config.ConfigLoader; import com.crowsofwar.gorecore.config.Load; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigStats.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigStats.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/config/ConfigStats.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigStats.java index 406b8f7d7c..82bff14176 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigStats.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigStats.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; diff --git a/src/main/java/com/crowsofwar/avatar/config/ConfigurableProperty.java b/src/main/java/com/crowsofwar/avatar/common/config/ConfigurableProperty.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/config/ConfigurableProperty.java rename to src/main/java/com/crowsofwar/avatar/common/config/ConfigurableProperty.java index 67fbe6995e..194f0e7b14 100644 --- a/src/main/java/com/crowsofwar/avatar/config/ConfigurableProperty.java +++ b/src/main/java/com/crowsofwar/avatar/common/config/ConfigurableProperty.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.config; +package com.crowsofwar.avatar.common.config; /** * Represents a Configuration entry. It has a String key and a changeable value. diff --git a/src/main/java/com/crowsofwar/avatar/client/controls/AvatarControl.java b/src/main/java/com/crowsofwar/avatar/common/controls/AvatarControl.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/client/controls/AvatarControl.java rename to src/main/java/com/crowsofwar/avatar/common/controls/AvatarControl.java index a02f3105b7..629f903fc9 100644 --- a/src/main/java/com/crowsofwar/avatar/client/controls/AvatarControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/controls/AvatarControl.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.controls; +package com.crowsofwar.avatar.common.controls; import com.crowsofwar.avatar.AvatarMod; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/crowsofwar/avatar/client/controls/IControlsHandler.java b/src/main/java/com/crowsofwar/avatar/common/controls/IControlsHandler.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/client/controls/IControlsHandler.java rename to src/main/java/com/crowsofwar/avatar/common/controls/IControlsHandler.java index 18af311af3..18bba824bd 100644 --- a/src/main/java/com/crowsofwar/avatar/client/controls/IControlsHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/controls/IControlsHandler.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.controls; +package com.crowsofwar.avatar.common.controls; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/client/controls/KeybindingWrapper.java b/src/main/java/com/crowsofwar/avatar/common/controls/KeybindingWrapper.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/client/controls/KeybindingWrapper.java rename to src/main/java/com/crowsofwar/avatar/common/controls/KeybindingWrapper.java index f14752860f..13b5ad9ace 100644 --- a/src/main/java/com/crowsofwar/avatar/client/controls/KeybindingWrapper.java +++ b/src/main/java/com/crowsofwar/avatar/common/controls/KeybindingWrapper.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.controls; +package com.crowsofwar.avatar.common.controls; /** * Wrapper class so vanilla KeyBindings don't crash on the server side diff --git a/src/main/java/com/crowsofwar/avatar/util/damageutils/AvatarDamageSource.java b/src/main/java/com/crowsofwar/avatar/common/damageutils/AvatarDamageSource.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/damageutils/AvatarDamageSource.java rename to src/main/java/com/crowsofwar/avatar/common/damageutils/AvatarDamageSource.java index 2c428aff35..15af082d09 100644 --- a/src/main/java/com/crowsofwar/avatar/util/damageutils/AvatarDamageSource.java +++ b/src/main/java/com/crowsofwar/avatar/common/damageutils/AvatarDamageSource.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.damageutils; +package com.crowsofwar.avatar.common.damageutils; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityFlying; import net.minecraft.entity.EntityLivingBase; @@ -27,6 +27,7 @@ import net.minecraft.init.MobEffects; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; import net.minecraft.util.EntityDamageSourceIndirect; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/com/crowsofwar/avatar/util/damageutils/DamageUtils.java b/src/main/java/com/crowsofwar/avatar/common/damageutils/DamageUtils.java similarity index 77% rename from src/main/java/com/crowsofwar/avatar/util/damageutils/DamageUtils.java rename to src/main/java/com/crowsofwar/avatar/common/damageutils/DamageUtils.java index ee4cbcfe9b..0003b63e44 100644 --- a/src/main/java/com/crowsofwar/avatar/util/damageutils/DamageUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/damageutils/DamageUtils.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.util.damageutils; +package com.crowsofwar.avatar.common.damageutils; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityShield; -import com.crowsofwar.avatar.entity.IShieldEntity; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityShield; +import com.crowsofwar.avatar.common.entity.IShieldEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.boss.EntityDragon; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/AbilityData.java b/src/main/java/com/crowsofwar/avatar/common/data/AbilityData.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/data/AbilityData.java rename to src/main/java/com/crowsofwar/avatar/common/data/AbilityData.java index 2f45bf6d3f..b7d5ae7c34 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/AbilityData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/AbilityData.java @@ -15,14 +15,16 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; +import akka.japi.Pair; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/AvatarPlayerData.java b/src/main/java/com/crowsofwar/avatar/common/data/AvatarPlayerData.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/data/AvatarPlayerData.java rename to src/main/java/com/crowsofwar/avatar/common/data/AvatarPlayerData.java index 6edbf4a4bf..ff7e0f0c9d 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/AvatarPlayerData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/AvatarPlayerData.java @@ -15,16 +15,17 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.network.packets.PacketCPlayerData; +import com.crowsofwar.avatar.common.network.packets.PacketCPlayerData; import com.crowsofwar.gorecore.data.*; import net.minecraft.entity.EntityTracker; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.WorldServer; +import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import java.util.*; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/AvatarWorldData.java b/src/main/java/com/crowsofwar/avatar/common/data/AvatarWorldData.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/data/AvatarWorldData.java rename to src/main/java/com/crowsofwar/avatar/common/data/AvatarWorldData.java index 6fb1d4d328..167d2fa370 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/AvatarWorldData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/AvatarWorldData.java @@ -15,9 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.gorecore.data.PlayerData; import com.crowsofwar.gorecore.data.WorldDataPlayers; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/Bender.java b/src/main/java/com/crowsofwar/avatar/common/data/Bender.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/util/data/Bender.java rename to src/main/java/com/crowsofwar/avatar/common/data/Bender.java diff --git a/src/main/java/com/crowsofwar/avatar/util/data/BenderEntityComponent.java b/src/main/java/com/crowsofwar/avatar/common/data/BenderEntityComponent.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/data/BenderEntityComponent.java rename to src/main/java/com/crowsofwar/avatar/common/data/BenderEntityComponent.java index 2a7294c664..29dfa01e3c 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/BenderEntityComponent.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/BenderEntityComponent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityLivingBase; /** diff --git a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfo.java b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfo.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/util/data/BenderInfo.java rename to src/main/java/com/crowsofwar/avatar/common/data/BenderInfo.java index 7b6f74f7a6..1701cf2830 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfo.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfo.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.data.ctx.NoBenderInfo; +import com.crowsofwar.avatar.common.data.ctx.NoBenderInfo; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfoEntity.java b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfoEntity.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/data/BenderInfoEntity.java rename to src/main/java/com/crowsofwar/avatar/common/data/BenderInfoEntity.java index 351e538567..5f3b05a975 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfoEntity.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfoEntity.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfoPlayer.java b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfoPlayer.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/data/BenderInfoPlayer.java rename to src/main/java/com/crowsofwar/avatar/common/data/BenderInfoPlayer.java index 07afe5cbd6..7f8c68ab55 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/BenderInfoPlayer.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/BenderInfoPlayer.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import com.crowsofwar.gorecore.util.AccountUUIDs; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/BendingData.java b/src/main/java/com/crowsofwar/avatar/common/data/BendingData.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/data/BendingData.java rename to src/main/java/com/crowsofwar/avatar/common/data/BendingData.java index 1212ec8d9e..fca39b4611 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/BendingData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/BendingData.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.bending.bending.*; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.bending.*; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -32,7 +32,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static com.crowsofwar.avatar.config.ConfigChi.CHI_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigChi.CHI_CONFIG; import static com.crowsofwar.gorecore.util.GoreCoreNBTUtil.nestedCompound; /** diff --git a/src/main/java/com/crowsofwar/avatar/util/data/CachedEntity.java b/src/main/java/com/crowsofwar/avatar/common/data/CachedEntity.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/data/CachedEntity.java rename to src/main/java/com/crowsofwar/avatar/common/data/CachedEntity.java index 1682da982c..b5955a83da 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/CachedEntity.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/CachedEntity.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import com.crowsofwar.gorecore.util.AccountUUIDs; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/Chi.java b/src/main/java/com/crowsofwar/avatar/common/data/Chi.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/data/Chi.java rename to src/main/java/com/crowsofwar/avatar/common/data/Chi.java index 06fb12fce4..ac37fcdc2c 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/Chi.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/Chi.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/DataCategory.java b/src/main/java/com/crowsofwar/avatar/common/data/DataCategory.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/data/DataCategory.java rename to src/main/java/com/crowsofwar/avatar/common/data/DataCategory.java index 3aec0de0ec..27a88523d7 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/DataCategory.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/DataCategory.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.network.DataTransmitter; -import com.crowsofwar.avatar.network.DataTransmitters; +import com.crowsofwar.avatar.common.network.DataTransmitter; +import com.crowsofwar.avatar.common.network.DataTransmitters; import io.netty.buffer.ByteBuf; import java.util.function.BiConsumer; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/LightningRedirectionData.java b/src/main/java/com/crowsofwar/avatar/common/data/LightningRedirectionData.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/util/data/LightningRedirectionData.java rename to src/main/java/com/crowsofwar/avatar/common/data/LightningRedirectionData.java index 42ae09ac18..dd87f6e549 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/LightningRedirectionData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/LightningRedirectionData.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.entity.EntityLightningArc; +import com.crowsofwar.avatar.common.entity.EntityLightningArc; import net.minecraft.entity.EntityLivingBase; /** diff --git a/src/main/java/com/crowsofwar/avatar/util/data/MiscData.java b/src/main/java/com/crowsofwar/avatar/common/data/MiscData.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/util/data/MiscData.java rename to src/main/java/com/crowsofwar/avatar/common/data/MiscData.java index 48f7062bb1..b65416fd7d 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/MiscData.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/MiscData.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.data.ctx.NoBenderInfo; +import com.crowsofwar.avatar.common.data.ctx.NoBenderInfo; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/PowerRatingManager.java b/src/main/java/com/crowsofwar/avatar/common/data/PowerRatingManager.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/util/data/PowerRatingManager.java rename to src/main/java/com/crowsofwar/avatar/common/data/PowerRatingManager.java index d15bdf581b..36a12384be 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/PowerRatingManager.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/PowerRatingManager.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.util.math.MathHelper; import java.util.HashSet; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/PowerRatingModifier.java b/src/main/java/com/crowsofwar/avatar/common/data/PowerRatingModifier.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/util/data/PowerRatingModifier.java rename to src/main/java/com/crowsofwar/avatar/common/data/PowerRatingModifier.java index 00a1cce3ce..9b5e05afd4 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/PowerRatingModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/PowerRatingModifier.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/util/data/PreAlpha5SaveConverter.java b/src/main/java/com/crowsofwar/avatar/common/data/PreAlpha5SaveConverter.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/util/data/PreAlpha5SaveConverter.java rename to src/main/java/com/crowsofwar/avatar/common/data/PreAlpha5SaveConverter.java index 3ec6c8c1f9..789ff92f07 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/PreAlpha5SaveConverter.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/PreAlpha5SaveConverter.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.bending.water.Waterbending; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/SandstormMovementHandler.java b/src/main/java/com/crowsofwar/avatar/common/data/SandstormMovementHandler.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/data/SandstormMovementHandler.java rename to src/main/java/com/crowsofwar/avatar/common/data/SandstormMovementHandler.java index 9634ebe9eb..0cf8bb3368 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/SandstormMovementHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/SandstormMovementHandler.java @@ -1,7 +1,8 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.entity.EntitySandstorm; +import com.crowsofwar.avatar.common.entity.EntitySandstorm; import com.crowsofwar.gorecore.util.Vector; +import net.minecraft.client.Minecraft; import javax.annotation.Nullable; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/ScheduledDestroyBlock.java b/src/main/java/com/crowsofwar/avatar/common/data/ScheduledDestroyBlock.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/data/ScheduledDestroyBlock.java rename to src/main/java/com/crowsofwar/avatar/common/data/ScheduledDestroyBlock.java index 4a0809fc61..07596901ab 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/ScheduledDestroyBlock.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/ScheduledDestroyBlock.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/StatusControl.java b/src/main/java/com/crowsofwar/avatar/common/data/StatusControl.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/util/data/StatusControl.java rename to src/main/java/com/crowsofwar/avatar/common/data/StatusControl.java index 823d25c18f..53a6ea4296 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/StatusControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/StatusControl.java @@ -15,16 +15,25 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; - -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.data; + +import com.crowsofwar.avatar.common.bending.air.statctrls.*; +import com.crowsofwar.avatar.common.bending.earth.*; +import com.crowsofwar.avatar.common.bending.fire.statctrls.*; +import com.crowsofwar.avatar.common.bending.ice.StatCtrlShieldShatter; +import com.crowsofwar.avatar.common.bending.lightning.StatCtrlThrowLightningSpear; +import com.crowsofwar.avatar.common.bending.sand.StatCtrlSandstormRedirect; +import com.crowsofwar.avatar.common.bending.water.*; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.Raytrace; +import net.minecraft.util.EnumHand; import java.util.ArrayList; +import java.util.List; -import static com.crowsofwar.avatar.util.data.StatusControlController.allControls; -import static com.crowsofwar.avatar.util.data.StatusControlController.nextId; +import static com.crowsofwar.avatar.common.data.StatusControlController.allControls; +import static com.crowsofwar.avatar.common.data.StatusControlController.nextId; /** * Describes a temporary effect where a callback listener is added to a control diff --git a/src/main/java/com/crowsofwar/avatar/util/data/StatusControlController.java b/src/main/java/com/crowsofwar/avatar/common/data/StatusControlController.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/util/data/StatusControlController.java rename to src/main/java/com/crowsofwar/avatar/common/data/StatusControlController.java index 5f292d26c3..ca070f6600 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/StatusControlController.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/StatusControlController.java @@ -1,12 +1,12 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.bending.bending.air.statctrls.*; -import com.crowsofwar.avatar.bending.bending.earth.statctrls.*; -import com.crowsofwar.avatar.bending.bending.fire.statctrls.*; -import com.crowsofwar.avatar.bending.bending.ice.StatCtrlShieldShatter; -import com.crowsofwar.avatar.bending.bending.lightning.StatCtrlThrowLightningSpear; -import com.crowsofwar.avatar.bending.bending.sand.StatCtrlSandstormRedirect; -import com.crowsofwar.avatar.bending.bending.water.statctrls.*; +import com.crowsofwar.avatar.common.bending.air.statctrls.*; +import com.crowsofwar.avatar.common.bending.earth.statctrls.*; +import com.crowsofwar.avatar.common.bending.fire.statctrls.*; +import com.crowsofwar.avatar.common.bending.ice.StatCtrlShieldShatter; +import com.crowsofwar.avatar.common.bending.lightning.StatCtrlThrowLightningSpear; +import com.crowsofwar.avatar.common.bending.sand.StatCtrlSandstormRedirect; +import com.crowsofwar.avatar.common.bending.water.statctrls.*; import net.minecraft.util.EnumHand; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/TemporaryWaterLocation.java b/src/main/java/com/crowsofwar/avatar/common/data/TemporaryWaterLocation.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/data/TemporaryWaterLocation.java rename to src/main/java/com/crowsofwar/avatar/common/data/TemporaryWaterLocation.java index 50bd0fc4a7..5dafe14867 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/TemporaryWaterLocation.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/TemporaryWaterLocation.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/TickHandler.java b/src/main/java/com/crowsofwar/avatar/common/data/TickHandler.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/util/data/TickHandler.java rename to src/main/java/com/crowsofwar/avatar/common/data/TickHandler.java index 0b6e557d4d..04e022dbaf 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/TickHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/TickHandler.java @@ -14,10 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import io.netty.buffer.ByteBuf; +import net.minecraft.entity.EntityLivingBase; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/util/data/TickHandlerController.java b/src/main/java/com/crowsofwar/avatar/common/data/TickHandlerController.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/util/data/TickHandlerController.java rename to src/main/java/com/crowsofwar/avatar/common/data/TickHandlerController.java index 5dd4581cd6..64e6abe5a8 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/TickHandlerController.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/TickHandlerController.java @@ -1,14 +1,14 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import com.crowsofwar.avatar.client.gui.RenderElementHandler; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.*; -import com.crowsofwar.avatar.bending.bending.earth.tickhandlers.RestoreParticleHandler; -import com.crowsofwar.avatar.bending.bending.fire.*; -import com.crowsofwar.avatar.bending.bending.fire.tickhandlers.*; -import com.crowsofwar.avatar.bending.bending.lightning.LightningCreateHandler; -import com.crowsofwar.avatar.bending.bending.lightning.LightningRedirectHandler; -import com.crowsofwar.avatar.bending.bending.water.tickhandlers.*; -import com.crowsofwar.avatar.entity.mob.BisonSummonHandler; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.*; +import com.crowsofwar.avatar.common.bending.earth.tickhandlers.RestoreParticleHandler; +import com.crowsofwar.avatar.common.bending.fire.*; +import com.crowsofwar.avatar.common.bending.fire.tickhandlers.*; +import com.crowsofwar.avatar.common.bending.lightning.LightningCreateHandler; +import com.crowsofwar.avatar.common.bending.lightning.LightningRedirectHandler; +import com.crowsofwar.avatar.common.bending.water.tickhandlers.*; +import com.crowsofwar.avatar.common.entity.mob.BisonSummonHandler; import io.netty.buffer.ByteBuf; import java.util.HashMap; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/Vision.java b/src/main/java/com/crowsofwar/avatar/common/data/Vision.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/util/data/Vision.java rename to src/main/java/com/crowsofwar/avatar/common/data/Vision.java index b973b3e4d0..1d48e5d778 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/Vision.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/Vision.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; import net.minecraft.util.ResourceLocation; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/WallJumpManager.java b/src/main/java/com/crowsofwar/avatar/common/data/WallJumpManager.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/util/data/WallJumpManager.java rename to src/main/java/com/crowsofwar/avatar/common/data/WallJumpManager.java index 7a1c5c3560..62b4b54925 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/WallJumpManager.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/WallJumpManager.java @@ -1,11 +1,12 @@ -package com.crowsofwar.avatar.util.data; +package com.crowsofwar.avatar.common.data; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.client.particle.NetworkParticleSpawner; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.particle.NetworkParticleSpawner; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumParticleTypes; @@ -15,8 +16,8 @@ import javax.annotation.Nullable; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.FIRE_PARTICLE_SPAWNER; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.FIRE_PARTICLE_SPAWNER; /** * Contains all wall jump related logic for a Bender. These methods would normally be in the diff --git a/src/main/java/com/crowsofwar/avatar/util/data/ctx/AbilityContext.java b/src/main/java/com/crowsofwar/avatar/common/data/ctx/AbilityContext.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/util/data/ctx/AbilityContext.java rename to src/main/java/com/crowsofwar/avatar/common/data/ctx/AbilityContext.java index 1935fdbb21..feaae43f4f 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/ctx/AbilityContext.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/ctx/AbilityContext.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data.ctx; +package com.crowsofwar.avatar.common.data.ctx; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.Raytrace.Result; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.util.Raytrace.Result; import net.minecraft.entity.EntityLivingBase; /** diff --git a/src/main/java/com/crowsofwar/avatar/util/data/ctx/BendingContext.java b/src/main/java/com/crowsofwar/avatar/common/data/ctx/BendingContext.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/data/ctx/BendingContext.java rename to src/main/java/com/crowsofwar/avatar/common/data/ctx/BendingContext.java index 6cee8dd811..0c079a46be 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/ctx/BendingContext.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/ctx/BendingContext.java @@ -15,12 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data.ctx; +package com.crowsofwar.avatar.common.data.ctx; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import com.crowsofwar.gorecore.util.VectorI; import net.minecraft.block.Block; @@ -36,7 +36,7 @@ import javax.annotation.Nullable; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * Information when something is executed. Only is used server-side. diff --git a/src/main/java/com/crowsofwar/avatar/util/data/ctx/NoBenderInfo.java b/src/main/java/com/crowsofwar/avatar/common/data/ctx/NoBenderInfo.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/util/data/ctx/NoBenderInfo.java rename to src/main/java/com/crowsofwar/avatar/common/data/ctx/NoBenderInfo.java index 2dba1e4efd..c19ab6658f 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/ctx/NoBenderInfo.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/ctx/NoBenderInfo.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data.ctx; +package com.crowsofwar.avatar.common.data.ctx; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BenderInfo; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BenderInfo; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/util/data/ctx/PlayerBender.java b/src/main/java/com/crowsofwar/avatar/common/data/ctx/PlayerBender.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/util/data/ctx/PlayerBender.java rename to src/main/java/com/crowsofwar/avatar/common/data/ctx/PlayerBender.java index ee80ac7e07..70b66e48fc 100644 --- a/src/main/java/com/crowsofwar/avatar/util/data/ctx/PlayerBender.java +++ b/src/main/java/com/crowsofwar/avatar/common/data/ctx/PlayerBender.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util.data.ctx; +package com.crowsofwar.avatar.common.data.ctx; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.*; @@ -22,19 +22,19 @@ import com.crowsofwar.avatar.AvatarMod; import com.crowsofwar.avatar.client.gui.AvatarUiRenderer; -import com.crowsofwar.avatar.util.analytics.*; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.lightning.Lightningbending; -import com.crowsofwar.avatar.util.data.*; -import com.crowsofwar.avatar.entity.EntityLightningArc; -import com.crowsofwar.avatar.entity.mob.EntityBender; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.network.packets.*; -import com.crowsofwar.avatar.util.Raytrace; - -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_LIGHTNING_REDIRECT_SUCCESS; -import static com.crowsofwar.avatar.config.ConfigChi.CHI_CONFIG; -import static com.crowsofwar.avatar.util.data.TickHandlerController.LIGHTNING_REDIRECT; +import com.crowsofwar.avatar.common.analytics.*; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.lightning.Lightningbending; +import com.crowsofwar.avatar.common.data.*; +import com.crowsofwar.avatar.common.entity.EntityLightningArc; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.network.packets.*; +import com.crowsofwar.avatar.common.util.Raytrace; + +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_LIGHTNING_REDIRECT_SUCCESS; +import static com.crowsofwar.avatar.common.config.ConfigChi.CHI_CONFIG; +import static com.crowsofwar.avatar.common.data.TickHandlerController.LIGHTNING_REDIRECT; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/AvatarEntity.java b/src/main/java/com/crowsofwar/avatar/common/entity/AvatarEntity.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/AvatarEntity.java rename to src/main/java/com/crowsofwar/avatar/common/entity/AvatarEntity.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/AvatarEntityItem.java b/src/main/java/com/crowsofwar/avatar/common/entity/AvatarEntityItem.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/AvatarEntityItem.java rename to src/main/java/com/crowsofwar/avatar/common/entity/AvatarEntityItem.java index ca820d70e4..fbbb5abd10 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/AvatarEntityItem.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/AvatarEntityItem.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ControlPoint.java b/src/main/java/com/crowsofwar/avatar/common/entity/ControlPoint.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/ControlPoint.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ControlPoint.java index c4f18e6919..652376d7c8 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ControlPoint.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ControlPoint.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityAirBubble.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAirBubble.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/EntityAirBubble.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityAirBubble.java index 9950d0756b..49b2958749 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityAirBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAirBubble.java @@ -14,16 +14,16 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -50,8 +50,8 @@ import java.util.List; import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; /** diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityAirGust.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAirGust.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityAirGust.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityAirGust.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityAirblade.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAirblade.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/entity/EntityAirblade.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityAirblade.java index 7812387fac..bc62bdd480 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityAirblade.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAirblade.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.AbilityAirblade; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.AbilityAirblade; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -38,7 +38,7 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityArc.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityArc.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/entity/EntityArc.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityArc.java index 89275c48dd..f06a8cb0dd 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityArc.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityAvatarLightning.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAvatarLightning.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/EntityAvatarLightning.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityAvatarLightning.java index 546da7a577..cace969451 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityAvatarLightning.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAvatarLightning.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.bending.bending.lightning.AbilityLightningRaze; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.bending.lightning.AbilityLightningRaze; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; import com.zeitheron.hammercore.api.lighting.ColoredLight; import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.block.material.Material; @@ -27,8 +27,8 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @SuppressWarnings("EntityConstructor") @Mod.EventBusSubscriber(modid = AvatarInfo.MOD_ID) diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityCloudBall.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityCloudBall.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/EntityCloudBall.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityCloudBall.java index f9639383cd..6cba629844 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityCloudBall.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityCloudBall.java @@ -1,19 +1,19 @@ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.air.powermods.CloudburstPowerModifier; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.CloudburstBehavior; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.air.powermods.CloudburstPowerModifier; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.CloudburstBehavior; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -36,7 +36,7 @@ import java.util.Objects; import java.util.UUID; -import static com.crowsofwar.avatar.util.data.TickHandlerController.AIR_STATCTRL_HANDLER; +import static com.crowsofwar.avatar.common.data.TickHandlerController.AIR_STATCTRL_HANDLER; public class EntityCloudBall extends EntityOffensive { diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthSpear.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthSpear.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/entity/EntityEarthSpear.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthSpear.java index 58511614ad..65252a6f1e 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthSpear.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthspike.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspike.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/entity/EntityEarthspike.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspike.java index 47184b4de8..6994fb0d66 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthspike.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspike.java @@ -15,13 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.bending.bending.earth.AbilityEarthspikes; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.bending.earth.AbilityEarthspikes; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.zeitheron.hammercore.api.lighting.ColoredLight; +import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; @@ -36,11 +38,12 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.common.Optional; import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthspikeSpawner.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspikeSpawner.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/entity/EntityEarthspikeSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspikeSpawner.java index 95a357d900..ef9ceed82a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityEarthspikeSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityEarthspikeSpawner.java @@ -1,9 +1,11 @@ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.config.ConfigStats; -import com.crowsofwar.avatar.entity.data.EarthspikesBehavior; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.config.ConfigStats; +import com.crowsofwar.avatar.common.entity.data.EarthspikesBehavior; +import com.zeitheron.hammercore.api.lighting.ColoredLight; +import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityExplosionSpawner.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityExplosionSpawner.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/entity/EntityExplosionSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityExplosionSpawner.java index 0298066ebf..a351a9b832 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityExplosionSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityExplosionSpawner.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -11,7 +11,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class EntityExplosionSpawner extends AvatarEntity { diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityFireball.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFireball.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityFireball.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityFireball.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityFlame.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlame.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/entity/EntityFlame.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityFlame.java index ecc7774a95..1b7581ef5e 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityFlame.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlame.java @@ -1,13 +1,15 @@ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.blocks.BlockTemp; -import com.crowsofwar.avatar.blocks.BlockUtils; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.AvatarUtils; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.fire.AbilityFireShot; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.blocks.BlockTemp; +import com.crowsofwar.avatar.common.blocks.BlockUtils; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import com.zeitheron.hammercore.api.lighting.ColoredLight; import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; @@ -26,7 +28,7 @@ import javax.annotation.Nullable; import java.util.Objects; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; @Optional.Interface(iface = "com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity", modid = "hammercore") public class EntityFlame extends EntityOffensive implements IGlowingEntity, ICustomHitbox { diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityFlames.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlames.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityFlames.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityFlames.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityFloatingBlock.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFloatingBlock.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityFloatingBlock.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityFloatingBlock.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityIcePrison.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIcePrison.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/EntityIcePrison.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityIcePrison.java index a92a6e7f1a..10b543b7e3 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityIcePrison.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIcePrison.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.ice.Icebending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.entity.data.SyncedEntity; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.ice.Icebending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.data.SyncedEntity; import com.google.common.base.Optional; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -42,7 +42,7 @@ import java.util.List; import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityIceShard.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShard.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/entity/EntityIceShard.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShard.java index 54392392b8..12051578ef 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityIceShard.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShard.java @@ -14,11 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; +import com.zeitheron.hammercore.api.lighting.ColoredLight; +import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.MoverType; import net.minecraft.entity.player.EntityPlayer; @@ -27,6 +29,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.util.SoundCategory; import net.minecraft.world.World; +import net.minecraftforge.fml.common.Optional; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityIceShield.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShield.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/EntityIceShield.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShield.java index 8b02d57550..2f6f627748 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityIceShield.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityIceShield.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControlController; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -32,8 +32,8 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityLightCylinder.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightCylinder.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/EntityLightCylinder.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityLightCylinder.java index 5403d938fe..79f33700e3 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityLightCylinder.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightCylinder.java @@ -1,9 +1,11 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.entity.data.LightCylinderBehaviour; +import com.crowsofwar.avatar.common.entity.data.LightCylinderBehaviour; +import com.crowsofwar.gorecore.util.Vector; import com.zeitheron.hammercore.api.lighting.ColoredLight; import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; +import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityLightOrb.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightOrb.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/EntityLightOrb.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityLightOrb.java index ec1e9390e6..c39b905ec0 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityLightOrb.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightOrb.java @@ -1,7 +1,8 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.LightOrbBehavior; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.LightOrbBehavior; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.zeitheron.hammercore.api.lighting.ColoredLight; import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningArc.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningArc.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/entity/EntityLightningArc.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningArc.java index 8987e8d1c7..827c0eae8a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningArc.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.bending.bending.lightning.AbilityLightningArc; -import com.crowsofwar.avatar.bending.bending.lightning.Lightningbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.data.LightningFloodFill; -import com.crowsofwar.avatar.util.AvatarDataSerializers; -import com.crowsofwar.avatar.util.AvatarUtils; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.bending.lightning.AbilityLightningArc; +import com.crowsofwar.avatar.common.bending.lightning.Lightningbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.data.LightningFloodFill; +import com.crowsofwar.avatar.common.util.AvatarDataSerializers; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import com.zeitheron.hammercore.api.lighting.ColoredLight; @@ -34,7 +34,7 @@ import java.util.List; import java.util.Objects; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; /** diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpawner.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpawner.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpawner.java index 7f6e0fc6bf..df69905c0f 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpawner.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import com.crowsofwar.gorecore.util.Vector; import com.zeitheron.hammercore.api.lighting.ColoredLight; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpear.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpear.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpear.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpear.java index 6e975af026..ce1c14383a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityLightningSpear.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityLightningSpear.java @@ -14,17 +14,17 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.damageutils.DamageUtils; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.LightningFloodFill; -import com.crowsofwar.avatar.entity.data.LightningSpearBehavior; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.damageutils.DamageUtils; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.LightningFloodFill; +import com.crowsofwar.avatar.common.entity.data.LightningSpearBehavior; import com.crowsofwar.gorecore.util.Vector; import com.zeitheron.hammercore.api.lighting.ColoredLight; import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; @@ -45,7 +45,7 @@ import java.util.Objects; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityOffensive.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityOffensive.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityOffensive.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityOffensive.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityRavine.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityRavine.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityRavine.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityRavine.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntitySandPrison.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntitySandPrison.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/EntitySandPrison.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntitySandPrison.java index 524eb8ddc0..8f40d9327b 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntitySandPrison.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntitySandPrison.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public LSandnse along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.bending.bending.sand.Sandbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.entity.data.SyncedEntity; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.bending.sand.Sandbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.data.SyncedEntity; import com.google.common.base.Optional; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntitySandstorm.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntitySandstorm.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/EntitySandstorm.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntitySandstorm.java index 1de40e432f..e56885176c 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntitySandstorm.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntitySandstorm.java @@ -1,14 +1,16 @@ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.config.ConfigSkills; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.SandstormMovementHandler; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.config.ConfigSkills; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.SandstormMovementHandler; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; +import com.zeitheron.hammercore.api.lighting.ColoredLight; +import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.block.state.IBlockState; @@ -22,12 +24,13 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.fml.common.Optional; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class EntitySandstorm extends AvatarEntity { diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityShield.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityShield.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/entity/EntityShield.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityShield.java index 553793cef3..c1d7b51aaa 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityShield.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityShield.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityShockwave.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityShockwave.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/EntityShockwave.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityShockwave.java index 0090293db8..1721665cd9 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityShockwave.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityShockwave.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.client.particle.AvatarParticles; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.entity.data.ShockwaveBehaviour; +import com.crowsofwar.avatar.common.AvatarParticles; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.entity.data.ShockwaveBehaviour; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWall.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWall.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWall.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWall.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWallSegment.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWallSegment.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWallSegment.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWallSegment.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterArc.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterArc.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWaterArc.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterArc.java index a6dc3f106c..dc19442894 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterArc.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterArc.java @@ -15,17 +15,17 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.water.AbilityWaterArc; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.entity.data.WaterArcBehavior; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.water.AbilityWaterArc; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.entity.data.WaterArcBehavior; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; @@ -46,7 +46,7 @@ import java.util.Objects; import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class EntityWaterArc extends EntityArc implements IShieldEntity { diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterBubble.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterBubble.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWaterBubble.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterBubble.java index 42431426da..1e62f25460 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterBubble.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterBubble.java @@ -15,17 +15,22 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; - -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.bending.bending.lightning.Lightningbending; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.entity.data.Behavior; -import com.crowsofwar.avatar.entity.data.WaterBubbleBehavior; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity; + +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.bending.lightning.Lightningbending; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.entity.data.Behavior; +import com.crowsofwar.avatar.common.entity.data.WaterBubbleBehavior; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; +import com.zeitheron.hammercore.api.lighting.ColoredLight; +import com.zeitheron.hammercore.api.lighting.impl.IGlowingEntity; import net.minecraft.block.BlockFarmland; import net.minecraft.block.BlockLiquid; import net.minecraft.block.state.IBlockState; @@ -41,7 +46,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import net.minecraftforge.fml.common.Optional; +import java.util.Objects; import java.util.Random; /** diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterCannon.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterCannon.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWaterCannon.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterCannon.java index 52656db842..1f241617bd 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityWaterCannon.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWaterCannon.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.client.particle.ParticleBuilder; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.SoundEvents; diff --git a/src/main/java/com/crowsofwar/avatar/entity/EntityWave.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWave.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/EntityWave.java rename to src/main/java/com/crowsofwar/avatar/common/entity/EntityWave.java index 9201dd7685..fb09ddaa2a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/EntityWave.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityWave.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.AbilityData; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.AbilityData; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -32,8 +32,8 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigSkills.SKILLS_CONFIG; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigSkills.SKILLS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; public class EntityWave extends AvatarEntity { diff --git a/src/main/java/com/crowsofwar/avatar/entity/ICustomHitbox.java b/src/main/java/com/crowsofwar/avatar/common/entity/ICustomHitbox.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/entity/ICustomHitbox.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ICustomHitbox.java index 54993335d8..c17a674468 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ICustomHitbox.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ICustomHitbox.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/com/crowsofwar/avatar/entity/IOffensiveEntity.java b/src/main/java/com/crowsofwar/avatar/common/entity/IOffensiveEntity.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/IOffensiveEntity.java rename to src/main/java/com/crowsofwar/avatar/common/entity/IOffensiveEntity.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/IShieldEntity.java b/src/main/java/com/crowsofwar/avatar/common/entity/IShieldEntity.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/entity/IShieldEntity.java rename to src/main/java/com/crowsofwar/avatar/common/entity/IShieldEntity.java index 67614c757a..d4accdc0dc 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/IShieldEntity.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/IShieldEntity.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity; +package com.crowsofwar.avatar.common.entity; //For projectile entities that can shield you public interface IShieldEntity { diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIAttackMobs.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIAttackMobs.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIAttackMobs.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIAttackMobs.java index 0a3acc93ec..d9f0b9140e 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIAttackMobs.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIAttackMobs.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.ai.EntityAITarget; import net.minecraft.entity.monster.EntityMob; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIBenderDefendVillage.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIBenderDefendVillage.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIBenderDefendVillage.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIBenderDefendVillage.java index e2bfd7655c..a226532eee 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAIBenderDefendVillage.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAIBenderDefendVillage.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntityBender; +import com.crowsofwar.avatar.common.entity.mob.EntityBender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAITarget; import net.minecraft.entity.monster.EntityCreeper; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonBreeding.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonBreeding.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonBreeding.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonBreeding.java index 2607a08e3a..b4d5222bcd 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonBreeding.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonBreeding.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.data.AnimalCondition; -import com.crowsofwar.avatar.entity.data.BisonSpawnData; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.data.AnimalCondition; +import com.crowsofwar.avatar.common.entity.data.BisonSpawnData; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.item.EntityXPOrb; @@ -29,7 +29,7 @@ import java.util.List; import java.util.Random; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonDefendOwner.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonDefendOwner.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonDefendOwner.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonDefendOwner.java index 73837652d5..ce2a513dcb 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonDefendOwner.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonDefendOwner.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAITarget; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonEatGrass.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonEatGrass.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonEatGrass.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonEatGrass.java index 69739b19af..799ce8b586 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonEatGrass.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonEatGrass.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.block.Block; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityMoveHelper; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowAttacker.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowAttacker.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowAttacker.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowAttacker.java index fb6d22bc3a..fbcf36f223 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowAttacker.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowAttacker.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowOwner.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowOwner.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowOwner.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowOwner.java index f9661021d8..3943dd5628 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonFollowOwner.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonFollowOwner.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonHelpOwnerTarget.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonHelpOwnerTarget.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonHelpOwnerTarget.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonHelpOwnerTarget.java index 4b61b759d5..9d3d352054 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonHelpOwnerTarget.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonHelpOwnerTarget.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAITarget; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonLand.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonLand.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonLand.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonLand.java index 50682271b7..5cd703199a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonLand.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonLand.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.entity.ai.EntityAIBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonSit.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonSit.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonSit.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonSit.java index fc4533bd61..b00623aba7 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonSit.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonSit.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.util.EnumFacing; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonTempt.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonTempt.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonTempt.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonTempt.java index f9d8198f81..731d096245 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonTempt.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonTempt.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityMoveHelper.Action; import net.minecraft.entity.player.EntityPlayer; @@ -25,7 +25,7 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; import static net.minecraft.item.ItemStack.EMPTY; /** diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonWander.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonWander.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonWander.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonWander.java index 7ce02bba78..b6ffd9212b 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiBisonWander.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiBisonWander.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.ai.EntityAIBase; import net.minecraft.entity.ai.EntityMoveHelper; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiGiveScroll.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiGiveScroll.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiGiveScroll.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiGiveScroll.java index bef608cc48..fb5bb74265 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiGiveScroll.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiGiveScroll.java @@ -14,12 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiKeepDistance.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiKeepDistance.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiKeepDistance.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiKeepDistance.java index c1565ea9c5..f657fee047 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiKeepDistance.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiKeepDistance.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiUseStaff.java b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiUseStaff.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiUseStaff.java rename to src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiUseStaff.java index de3e2bdf43..adfb257a31 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/ai/EntityAiUseStaff.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/ai/EntityAiUseStaff.java @@ -1,8 +1,12 @@ -package com.crowsofwar.avatar.entity.ai; +package com.crowsofwar.avatar.common.entity.ai; -import com.crowsofwar.avatar.entity.mob.EntityHumanBender; +import com.crowsofwar.avatar.common.entity.mob.EntityHumanBender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.util.math.AxisAlignedBB; + +import java.util.List; public class EntityAiUseStaff extends EntityAIBase { diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/AnimalCondition.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/AnimalCondition.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/data/AnimalCondition.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/AnimalCondition.java index 48461997b4..11691b6fb0 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/AnimalCondition.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/AnimalCondition.java @@ -14,13 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; import net.minecraft.entity.EntityCreature; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataParameter; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/Behavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/Behavior.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/data/Behavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/Behavior.java index 9669ebf85d..1aa2cab610 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/Behavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/Behavior.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; import com.crowsofwar.avatar.AvatarLog; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/BisonSpawnData.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/BisonSpawnData.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/data/BisonSpawnData.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/BisonSpawnData.java index 772f6c4b01..ea9692c0de 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/BisonSpawnData.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/BisonSpawnData.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; import net.minecraft.entity.IEntityLivingData; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/CloudburstBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/CloudburstBehavior.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/entity/data/CloudburstBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/CloudburstBehavior.java index 953fc89f0b..7630553be3 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/CloudburstBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/CloudburstBehavior.java @@ -1,10 +1,10 @@ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.bending.bending.air.AbilityCloudBurst; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.EntityCloudBall; +import com.crowsofwar.avatar.common.bending.air.AbilityCloudBurst; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.EntityCloudBall; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/EarthspikesBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/EarthspikesBehavior.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/data/EarthspikesBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/EarthspikesBehavior.java index 7e045137c9..b84e4f84ce 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/EarthspikesBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/EarthspikesBehavior.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.entity.EntityEarthspike; -import com.crowsofwar.avatar.entity.EntityEarthspikeSpawner; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.entity.EntityEarthspike; +import com.crowsofwar.avatar.common.entity.EntityEarthspikeSpawner; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; @@ -43,7 +43,7 @@ import java.util.Objects; import java.util.UUID; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/EntityBenderData.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/EntityBenderData.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/entity/data/EntityBenderData.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/EntityBenderData.java index bf8ca99f65..4663a28dd0 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/EntityBenderData.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/EntityBenderData.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.DataCategory; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.DataCategory; import net.minecraft.entity.EntityLivingBase; /** diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/FireballBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/FireballBehavior.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/data/FireballBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/FireballBehavior.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/FloatingBlockBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/FloatingBlockBehavior.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/data/FloatingBlockBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/FloatingBlockBehavior.java index 58eb2838b2..03b41e6d40 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/FloatingBlockBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/FloatingBlockBehavior.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.entity.EntityFloatingBlock; -import com.crowsofwar.avatar.entity.EntityOffensive; +import com.crowsofwar.avatar.common.entity.EntityFloatingBlock; +import com.crowsofwar.avatar.common.entity.EntityOffensive; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.block.SoundType; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/LightCylinderBehaviour.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightCylinderBehaviour.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/entity/data/LightCylinderBehaviour.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/LightCylinderBehaviour.java index a57aca30b8..c2bdc6a7d8 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/LightCylinderBehaviour.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightCylinderBehaviour.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.bending.bending.water.tickhandlers.WaterChargeHandler; -import com.crowsofwar.avatar.entity.EntityLightCylinder; +import com.crowsofwar.avatar.common.bending.water.tickhandlers.WaterChargeHandler; +import com.crowsofwar.avatar.common.entity.EntityLightCylinder; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.network.datasync.DataSerializer; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/LightOrbBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightOrbBehavior.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/data/LightOrbBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/LightOrbBehavior.java index 16a4480923..8264439790 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/LightOrbBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightOrbBehavior.java @@ -15,14 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; - -import com.crowsofwar.avatar.bending.bending.fire.AbilityFlameStrike; -import com.crowsofwar.avatar.bending.bending.fire.AbilityImmolate; -import com.crowsofwar.avatar.bending.bending.fire.tickhandlers.FlamethrowerUpdateTick; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightOrb; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity.data; + +import com.crowsofwar.avatar.common.bending.fire.AbilityFireball; +import com.crowsofwar.avatar.common.bending.fire.AbilityFlameStrike; +import com.crowsofwar.avatar.common.bending.fire.AbilityImmolate; +import com.crowsofwar.avatar.common.bending.fire.tickhandlers.FlamethrowerUpdateTick; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightOrb; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/LightningFloodFill.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightningFloodFill.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/data/LightningFloodFill.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/LightningFloodFill.java index f55146a0cd..034aedc58a 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/LightningFloodFill.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightningFloodFill.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/LightningSpearBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightningSpearBehavior.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/data/LightningSpearBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/LightningSpearBehavior.java index ca005fb777..ef4c106dd0 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/LightningSpearBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/LightningSpearBehavior.java @@ -15,14 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; - -import com.crowsofwar.avatar.bending.bending.lightning.AbilityLightningSpear; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.EntityLightningSpear; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.entity.data; + +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.bending.lightning.AbilityLightningSpear; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.EntityLightningSpear; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -35,7 +36,7 @@ import java.util.List; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_LIGHTNINGSPEAR; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_LIGHTNINGSPEAR; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/OffensiveBehaviour.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/OffensiveBehaviour.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/entity/data/OffensiveBehaviour.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/OffensiveBehaviour.java diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/ShockwaveBehaviour.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/ShockwaveBehaviour.java similarity index 77% rename from src/main/java/com/crowsofwar/avatar/entity/data/ShockwaveBehaviour.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/ShockwaveBehaviour.java index a339066554..143661b16f 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/ShockwaveBehaviour.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/ShockwaveBehaviour.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.AirBurstHandler; -import com.crowsofwar.avatar.bending.bending.air.tickhandlers.SmashGroundHandler; -import com.crowsofwar.avatar.bending.bending.fire.AbilityFireShot; -import com.crowsofwar.avatar.entity.EntityShockwave; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.AirBurstHandler; +import com.crowsofwar.avatar.common.bending.air.tickhandlers.SmashGroundHandler; +import com.crowsofwar.avatar.common.bending.fire.AbilityFireShot; +import com.crowsofwar.avatar.common.entity.EntityShockwave; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.network.datasync.DataSerializer; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/SyncedEntity.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/SyncedEntity.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/data/SyncedEntity.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/SyncedEntity.java index 2032b9e6aa..30750bcc57 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/SyncedEntity.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/SyncedEntity.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; -import com.crowsofwar.avatar.util.data.CachedEntity; +import com.crowsofwar.avatar.common.data.CachedEntity; import com.google.common.base.Optional; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/WallBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/WallBehavior.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/data/WallBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/WallBehavior.java index 82006a08c5..3f5b6795db 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/WallBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/WallBehavior.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.EntityWallSegment; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.EntityWallSegment; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; @@ -30,8 +30,8 @@ import java.util.List; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; -import static com.crowsofwar.avatar.util.data.StatusControlController.PULL_WALL; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.data.StatusControlController.PULL_WALL; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/WaterArcBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/WaterArcBehavior.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/entity/data/WaterArcBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/WaterArcBehavior.java index b63df193b3..1a71208c19 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/WaterArcBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/WaterArcBehavior.java @@ -15,20 +15,24 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; - -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.EntityOffensive; -import com.crowsofwar.avatar.entity.EntityWaterArc; -import com.crowsofwar.avatar.util.Raytrace; +package com.crowsofwar.avatar.common.entity.data; + +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.EntityOffensive; +import com.crowsofwar.avatar.common.entity.EntityWaterArc; +import com.crowsofwar.avatar.common.particle.ParticleBuilder; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.network.datasync.DataSerializer; import net.minecraft.network.datasync.DataSerializers; +import net.minecraft.util.math.Vec3d; -import static com.crowsofwar.avatar.util.data.StatusControlController.THROW_WATER; +import static com.crowsofwar.avatar.common.data.StatusControlController.THROW_WATER; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/data/WaterBubbleBehavior.java b/src/main/java/com/crowsofwar/avatar/common/entity/data/WaterBubbleBehavior.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/data/WaterBubbleBehavior.java rename to src/main/java/com/crowsofwar/avatar/common/entity/data/WaterBubbleBehavior.java index 668d77173a..d0170dc718 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/data/WaterBubbleBehavior.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/data/WaterBubbleBehavior.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.data; +package com.crowsofwar.avatar.common.entity.data; -import com.crowsofwar.avatar.util.data.AvatarWorldData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.EntityWaterBubble; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.data.AvatarWorldData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.EntityWaterBubble; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/BisonSummonHandler.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/BisonSummonHandler.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/entity/mob/BisonSummonHandler.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/BisonSummonHandler.java index 5cd0d0497b..ad08266b38 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/BisonSummonHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/BisonSummonHandler.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; import net.minecraft.entity.EntityLivingBase; -import com.crowsofwar.avatar.util.data.TickHandler; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.TickHandler; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import java.util.*; diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityAirbender.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAirbender.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityAirbender.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAirbender.java index f121328dbf..f8754ae8e7 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityAirbender.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAirbender.java @@ -14,27 +14,38 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; - -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.item.scroll.Scrolls; +package com.crowsofwar.avatar.common.entity.mob; + +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.item.scroll.ItemScrollAir; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.format.FormattedMessage; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackMelee; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; import net.minecraft.world.World; import net.minecraft.world.storage.loot.LootTableList; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.Objects; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_NEED_AIR_TRADE_ITEM; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_NEED_AIR_TRADE_ITEM; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityBender.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityBender.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityBender.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityBender.java index 9856ccd9e7..6fbd236a74 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityBender.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityBender.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; - -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BenderEntityComponent; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity.mob; + +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BenderEntityComponent; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.util.AvatarUtils; import io.netty.buffer.ByteBuf; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.IEntityLivingData; @@ -36,7 +36,7 @@ import javax.annotation.Nullable; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityFirebender.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFirebender.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityFirebender.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFirebender.java index 927c1b3b02..4418236ab6 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityFirebender.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFirebender.java @@ -14,14 +14,14 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; - -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.util.AvatarUtils; +package com.crowsofwar.avatar.common.entity.mob; + +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.util.AvatarUtils; import com.crowsofwar.gorecore.format.FormattedMessage; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; @@ -42,7 +42,7 @@ import javax.annotation.Nullable; import java.util.Objects; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_NEED_FIRE_TRADE_ITEM; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_NEED_FIRE_TRADE_ITEM; /** * @author CrowsOfWar diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityHumanBender.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityHumanBender.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityHumanBender.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityHumanBender.java index 194734a14c..eb64e4832b 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityHumanBender.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityHumanBender.java @@ -14,15 +14,15 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.util.AvatarUtils; -import com.crowsofwar.avatar.util.WildCardTradeList; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.util.AvatarUtils; +import com.crowsofwar.avatar.common.util.WildCardTradeList; import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.util.GoreCoreNBTUtil; import com.google.common.base.Predicate; @@ -59,8 +59,8 @@ import java.util.Collections; import java.util.Random; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_NEED_TRADE_ITEM; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_NEED_TRADE_ITEM; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; /** * @author CrowsOfWar, FavouriteDraogn diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityOstrichHorse.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOstrichHorse.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityOstrichHorse.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOstrichHorse.java index 01a6a0c577..d7ec1f783c 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityOstrichHorse.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOstrichHorse.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; -import com.crowsofwar.avatar.client.gui.InventoryOstrichChest; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.item.ItemOstrichEquipment; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.gui.InventoryOstrichChest; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.ItemOstrichEquipment; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityOtterPenguin.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOtterPenguin.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityOtterPenguin.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOtterPenguin.java index acd79b9f6f..f87d1af1fb 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityOtterPenguin.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityOtterPenguin.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; import com.google.common.collect.Sets; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntitySkyBison.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntitySkyBison.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntitySkyBison.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntitySkyBison.java index 3a24253f86..5cce63f103 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntitySkyBison.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntitySkyBison.java @@ -14,32 +14,32 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.AvatarWorldData; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BenderEntityComponent; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.ai.*; -import com.crowsofwar.avatar.entity.data.AnimalCondition; -import com.crowsofwar.avatar.entity.data.BisonSpawnData; -import com.crowsofwar.avatar.entity.data.SyncedEntity; -import com.crowsofwar.avatar.client.gui.AvatarGuiHandler; -import com.crowsofwar.avatar.client.gui.InventoryBisonChest; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.item.ItemBisonArmor.ArmorTier; -import com.crowsofwar.avatar.item.ItemBisonSaddle.SaddleTier; -import com.crowsofwar.avatar.item.ItemBisonWhistle; -import com.crowsofwar.avatar.util.AvatarDataSerializers; -import com.crowsofwar.avatar.util.PlayerViewRegistry; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.AvatarWorldData; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BenderEntityComponent; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.ai.*; +import com.crowsofwar.avatar.common.entity.data.AnimalCondition; +import com.crowsofwar.avatar.common.entity.data.BisonSpawnData; +import com.crowsofwar.avatar.common.entity.data.SyncedEntity; +import com.crowsofwar.avatar.common.gui.AvatarGuiHandler; +import com.crowsofwar.avatar.common.gui.InventoryBisonChest; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.ItemBisonArmor.ArmorTier; +import com.crowsofwar.avatar.common.item.ItemBisonSaddle.SaddleTier; +import com.crowsofwar.avatar.common.item.ItemBisonWhistle; +import com.crowsofwar.avatar.common.util.AvatarDataSerializers; +import com.crowsofwar.avatar.common.util.PlayerViewRegistry; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.AccountUUIDs; import com.crowsofwar.gorecore.util.Vector; import com.google.common.base.Optional; @@ -83,9 +83,9 @@ import java.util.Set; import java.util.UUID; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; -import static com.crowsofwar.avatar.config.ConfigMobs.MOBS_CONFIG; -import static com.crowsofwar.avatar.util.AvatarUtils.*; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.config.ConfigMobs.MOBS_CONFIG; +import static com.crowsofwar.avatar.common.util.AvatarUtils.*; import static com.crowsofwar.gorecore.util.Vector.getEntityPos; import static com.crowsofwar.gorecore.util.Vector.toRectangular; import static java.lang.Math.*; diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityWaterbender.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityWaterbender.java similarity index 76% rename from src/main/java/com/crowsofwar/avatar/entity/mob/EntityWaterbender.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityWaterbender.java index 665a6ea41f..5f2f810a81 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/EntityWaterbender.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityWaterbender.java @@ -14,17 +14,27 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BenderEntityComponent; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BenderEntityComponent; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import net.minecraft.entity.ai.EntityAIAttackMelee; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; import net.minecraft.world.World; import net.minecraft.world.storage.loot.LootTableList; +import javax.annotation.Nullable; + /** * @author CrowsOfWar */ diff --git a/src/main/java/com/crowsofwar/avatar/entity/mob/SkyBisonMoveHelper.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/SkyBisonMoveHelper.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/entity/mob/SkyBisonMoveHelper.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/SkyBisonMoveHelper.java index ae3c88c8a2..4a0109e7cd 100644 --- a/src/main/java/com/crowsofwar/avatar/entity/mob/SkyBisonMoveHelper.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/SkyBisonMoveHelper.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.entity.mob; +package com.crowsofwar.avatar.common.entity.mob; import net.minecraft.entity.ai.EntityMoveHelper; import net.minecraft.util.math.AxisAlignedBB; diff --git a/src/main/java/com/crowsofwar/avatar/util/event/AbilityLevelEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/AbilityLevelEvent.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/util/event/AbilityLevelEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/AbilityLevelEvent.java index 845e335342..a849ae8032 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/AbilityLevelEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/AbilityLevelEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; import net.minecraft.entity.EntityLivingBase; public class AbilityLevelEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/AbilityUnlockEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/AbilityUnlockEvent.java similarity index 75% rename from src/main/java/com/crowsofwar/avatar/util/event/AbilityUnlockEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/AbilityUnlockEvent.java index afea451d86..ddb9464ec6 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/AbilityUnlockEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/AbilityUnlockEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.Ability; +import com.crowsofwar.avatar.common.bending.Ability; import net.minecraft.entity.EntityLivingBase; public class AbilityUnlockEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/AbilityUseEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/AbilityUseEvent.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/util/event/AbilityUseEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/AbilityUseEvent.java index d027ed0abf..d10d9638c3 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/AbilityUseEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/AbilityUseEvent.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.util.data.AbilityData; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.data.AbilityData; import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.fml.common.eventhandler.Cancelable; diff --git a/src/main/java/com/crowsofwar/avatar/util/event/AvatarEventHandler.java b/src/main/java/com/crowsofwar/avatar/common/event/AvatarEventHandler.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/util/event/AvatarEventHandler.java rename to src/main/java/com/crowsofwar/avatar/common/event/AvatarEventHandler.java index c91eb11b48..10ba2e5d2a 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/AvatarEventHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/AvatarEventHandler.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.util.damageutils.AvatarDamageSource; -import com.crowsofwar.avatar.entity.AvatarEntity; +import com.crowsofwar.avatar.common.damageutils.AvatarDamageSource; +import com.crowsofwar.avatar.common.entity.AvatarEntity; import net.minecraft.util.DamageSource; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/com/crowsofwar/avatar/util/event/BendingCycleEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/BendingCycleEvent.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/util/event/BendingCycleEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/BendingCycleEvent.java index 5707c9b032..5a149dffd0 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/BendingCycleEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/BendingCycleEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyle; import net.minecraft.entity.EntityLivingBase; public class BendingCycleEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/BendingEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/BendingEvent.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/util/event/BendingEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/BendingEvent.java index 9291d42f76..40723cbeb1 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/BendingEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/BendingEvent.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; import net.minecraft.entity.EntityLivingBase; import net.minecraftforge.event.entity.living.LivingEvent; diff --git a/src/main/java/com/crowsofwar/avatar/util/event/BendingUseEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/BendingUseEvent.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/util/event/BendingUseEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/BendingUseEvent.java index d747195689..acf44e95e0 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/BendingUseEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/BendingUseEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyle; import net.minecraft.entity.EntityLivingBase; public class BendingUseEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/ElementRemoveEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/ElementRemoveEvent.java similarity index 76% rename from src/main/java/com/crowsofwar/avatar/util/event/ElementRemoveEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/ElementRemoveEvent.java index 6bdedfe83c..3f99e75613 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/ElementRemoveEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/ElementRemoveEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyle; import net.minecraft.entity.EntityLivingBase; public class ElementRemoveEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/ElementUnlockEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/ElementUnlockEvent.java similarity index 75% rename from src/main/java/com/crowsofwar/avatar/util/event/ElementUnlockEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/ElementUnlockEvent.java index 295db7b31b..d260f20440 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/ElementUnlockEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/ElementUnlockEvent.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyle; import net.minecraft.entity.EntityLivingBase; public class ElementUnlockEvent extends BendingEvent { diff --git a/src/main/java/com/crowsofwar/avatar/util/event/ParticleCollideEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/ParticleCollideEvent.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/util/event/ParticleCollideEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/ParticleCollideEvent.java index 01f98846ca..6ee7bc22c6 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/ParticleCollideEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/ParticleCollideEvent.java @@ -1,7 +1,8 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.air.Airbending; +import com.crowsofwar.avatar.client.particles.newparticles.ParticleAvatar; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.air.Airbending; import net.minecraft.entity.Entity; import net.minecraft.util.math.Vec3d; import net.minecraftforge.event.entity.EntityEvent; diff --git a/src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java b/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/util/event/ServerEventHandler.java rename to src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java diff --git a/src/main/java/com/crowsofwar/avatar/util/event/StaffUseEvent.java b/src/main/java/com/crowsofwar/avatar/common/event/StaffUseEvent.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/util/event/StaffUseEvent.java rename to src/main/java/com/crowsofwar/avatar/common/event/StaffUseEvent.java index ed7092b729..f304ee7768 100644 --- a/src/main/java/com/crowsofwar/avatar/util/event/StaffUseEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/StaffUseEvent.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.event; +package com.crowsofwar.avatar.common.event; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/crowsofwar/avatar/common/explosions/AvatarCombustionExplosion.java b/src/main/java/com/crowsofwar/avatar/common/explosions/AvatarCombustionExplosion.java new file mode 100644 index 0000000000..15e246ee35 --- /dev/null +++ b/src/main/java/com/crowsofwar/avatar/common/explosions/AvatarCombustionExplosion.java @@ -0,0 +1,4 @@ +package com.crowsofwar.avatar.common.explosions; + +public class AvatarCombustionExplosion { +} diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarGui.java b/src/main/java/com/crowsofwar/avatar/common/gui/AvatarGui.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/client/gui/AvatarGui.java rename to src/main/java/com/crowsofwar/avatar/common/gui/AvatarGui.java index 44101a2df6..dba860623f 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarGui.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/AvatarGui.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; public interface AvatarGui { diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarGuiHandler.java b/src/main/java/com/crowsofwar/avatar/common/gui/AvatarGuiHandler.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/client/gui/AvatarGuiHandler.java rename to src/main/java/com/crowsofwar/avatar/common/gui/AvatarGuiHandler.java index 593b3bec89..b599eb0578 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/AvatarGuiHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/AvatarGuiHandler.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/BendingMenuInfo.java b/src/main/java/com/crowsofwar/avatar/common/gui/BendingMenuInfo.java similarity index 91% rename from src/main/java/com/crowsofwar/avatar/client/gui/BendingMenuInfo.java rename to src/main/java/com/crowsofwar/avatar/common/gui/BendingMenuInfo.java index 1e4ca9bfda..cac7c693a7 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/BendingMenuInfo.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/BendingMenuInfo.java @@ -15,11 +15,12 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerBisonChest.java b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerBisonChest.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/client/gui/ContainerBisonChest.java rename to src/main/java/com/crowsofwar/avatar/common/gui/ContainerBisonChest.java index 8dc5c65272..540ea13331 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerBisonChest.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerBisonChest.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.item.AvatarItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerGetBending.java b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerGetBending.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/client/gui/ContainerGetBending.java rename to src/main/java/com/crowsofwar/avatar/common/gui/ContainerGetBending.java index 536aad689c..c251ca3da7 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerGetBending.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerGetBending.java @@ -14,12 +14,13 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.item.scroll.ItemScroll; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerSkillsGui.java b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerSkillsGui.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/client/gui/ContainerSkillsGui.java rename to src/main/java/com/crowsofwar/avatar/common/gui/ContainerSkillsGui.java index 6dad79274b..e94c9f1b54 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/ContainerSkillsGui.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/ContainerSkillsGui.java @@ -14,11 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; -import com.crowsofwar.avatar.item.scroll.ItemScroll; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/GetBendingInventory.java b/src/main/java/com/crowsofwar/avatar/common/gui/GetBendingInventory.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/client/gui/GetBendingInventory.java rename to src/main/java/com/crowsofwar/avatar/common/gui/GetBendingInventory.java index a4d5771305..c24c8bb854 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/GetBendingInventory.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/GetBendingInventory.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import net.minecraft.inventory.InventoryBasic; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/InventoryBisonChest.java b/src/main/java/com/crowsofwar/avatar/common/gui/InventoryBisonChest.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/client/gui/InventoryBisonChest.java rename to src/main/java/com/crowsofwar/avatar/common/gui/InventoryBisonChest.java index 8fa5ede563..4d3efaec4d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/InventoryBisonChest.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/InventoryBisonChest.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import net.minecraft.inventory.InventoryBasic; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/InventoryOstrichChest.java b/src/main/java/com/crowsofwar/avatar/common/gui/InventoryOstrichChest.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/client/gui/InventoryOstrichChest.java rename to src/main/java/com/crowsofwar/avatar/common/gui/InventoryOstrichChest.java index 82b4a3b1eb..da23ef6de7 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/InventoryOstrichChest.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/InventoryOstrichChest.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import net.minecraft.inventory.InventoryBasic; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/MenuTheme.java b/src/main/java/com/crowsofwar/avatar/common/gui/MenuTheme.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/client/gui/MenuTheme.java rename to src/main/java/com/crowsofwar/avatar/common/gui/MenuTheme.java index c8d0262d04..6813ea5e28 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/MenuTheme.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/MenuTheme.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import java.awt.*; diff --git a/src/main/java/com/crowsofwar/avatar/client/gui/SkillsGuiInventory.java b/src/main/java/com/crowsofwar/avatar/common/gui/SkillsGuiInventory.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/client/gui/SkillsGuiInventory.java rename to src/main/java/com/crowsofwar/avatar/common/gui/SkillsGuiInventory.java index 5992b21185..37504b2167 100644 --- a/src/main/java/com/crowsofwar/avatar/client/gui/SkillsGuiInventory.java +++ b/src/main/java/com/crowsofwar/avatar/common/gui/SkillsGuiInventory.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.gui; +package com.crowsofwar.avatar.common.gui; import net.minecraft.inventory.InventoryBasic; diff --git a/src/main/java/com/crowsofwar/avatar/util/helper/GliderPlayerHelper.java b/src/main/java/com/crowsofwar/avatar/common/helper/GliderPlayerHelper.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/util/helper/GliderPlayerHelper.java rename to src/main/java/com/crowsofwar/avatar/common/helper/GliderPlayerHelper.java index 08ace28286..a9a40edf9c 100644 --- a/src/main/java/com/crowsofwar/avatar/util/helper/GliderPlayerHelper.java +++ b/src/main/java/com/crowsofwar/avatar/common/helper/GliderPlayerHelper.java @@ -1,9 +1,10 @@ -package com.crowsofwar.avatar.util.helper; +package com.crowsofwar.avatar.common.helper; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.item.IGlider; -import com.crowsofwar.avatar.util.windhelper.WindHelper; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.api.item.IGlider; +import com.crowsofwar.avatar.common.wind.WindHelper; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -14,8 +15,10 @@ import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; -import static com.crowsofwar.avatar.util.helper.MathHelper.*; +import java.util.Arrays; + +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.helper.MathHelper.*; public class GliderPlayerHelper { diff --git a/src/main/java/com/crowsofwar/avatar/util/helper/MathHelper.java b/src/main/java/com/crowsofwar/avatar/common/helper/MathHelper.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/util/helper/MathHelper.java rename to src/main/java/com/crowsofwar/avatar/common/helper/MathHelper.java index abbe64f97a..e3006cde2c 100644 --- a/src/main/java/com/crowsofwar/avatar/util/helper/MathHelper.java +++ b/src/main/java/com/crowsofwar/avatar/common/helper/MathHelper.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.helper; +package com.crowsofwar.avatar.common.helper; public class MathHelper { diff --git a/src/main/java/com/crowsofwar/avatar/item/AvatarDungeonLoot.java b/src/main/java/com/crowsofwar/avatar/common/item/AvatarDungeonLoot.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/item/AvatarDungeonLoot.java rename to src/main/java/com/crowsofwar/avatar/common/item/AvatarDungeonLoot.java index bf30aac4ad..256fcd4377 100644 --- a/src/main/java/com/crowsofwar/avatar/item/AvatarDungeonLoot.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/AvatarDungeonLoot.java @@ -14,12 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.util.AvatarUtils; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.util.AvatarUtils; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; @@ -33,7 +32,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import static com.crowsofwar.avatar.config.ConfigStats.STATS_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigStats.STATS_CONFIG; import static net.minecraft.world.storage.loot.LootTableList.*; /** diff --git a/src/main/java/com/crowsofwar/avatar/registry/AvatarItem.java b/src/main/java/com/crowsofwar/avatar/common/item/AvatarItem.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/registry/AvatarItem.java rename to src/main/java/com/crowsofwar/avatar/common/item/AvatarItem.java index b867bb5cc5..2554446b58 100644 --- a/src/main/java/com/crowsofwar/avatar/registry/AvatarItem.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/AvatarItem.java @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.registry; +package com.crowsofwar.avatar.common.item; import net.minecraft.item.Item; diff --git a/src/main/java/com/crowsofwar/avatar/registry/AvatarItems.java b/src/main/java/com/crowsofwar/avatar/common/item/AvatarItems.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/registry/AvatarItems.java rename to src/main/java/com/crowsofwar/avatar/common/item/AvatarItems.java index bb62c41840..a9f8bfe096 100644 --- a/src/main/java/com/crowsofwar/avatar/registry/AvatarItems.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/AvatarItems.java @@ -14,21 +14,21 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.registry; +package com.crowsofwar.avatar.common.item; import com.crowsofwar.avatar.AvatarInfo; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.blocks.AvatarBlocks; -import com.crowsofwar.avatar.item.*; -import com.crowsofwar.avatar.item.scroll.*; +import com.crowsofwar.avatar.common.blocks.AvatarBlocks; +import com.crowsofwar.avatar.common.item.scroll.*; -import com.crowsofwar.avatar.util.GliderInfo; +import com.crowsofwar.avatar.common.GliderInfo; import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraftforge.client.event.ColorHandlerEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.MinecraftForge; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemBisonArmor.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonArmor.java similarity index 95% rename from src/main/java/com/crowsofwar/avatar/item/ItemBisonArmor.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemBisonArmor.java index b4d579b059..54fc6bcbf8 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemBisonArmor.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonArmor.java @@ -14,10 +14,8 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemBisonSaddle.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonSaddle.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/item/ItemBisonSaddle.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemBisonSaddle.java index e8933cb3d2..c1d86bb2fe 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemBisonSaddle.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonSaddle.java @@ -14,10 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.AvatarMod; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; +import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemBisonWhistle.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonWhistle.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/item/ItemBisonWhistle.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemBisonWhistle.java index 313c61d1f2..6e3c76ae62 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemBisonWhistle.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemBisonWhistle.java @@ -14,13 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.util.TransferConfirmHandler; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.TransferConfirmHandler; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; import com.crowsofwar.gorecore.util.AccountUUIDs; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; @@ -37,8 +35,8 @@ import java.util.List; import java.util.UUID; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; -import static com.crowsofwar.avatar.util.data.TickHandlerController.BISON_SUMMONER; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.data.TickHandlerController.BISON_SUMMONER; import static com.crowsofwar.gorecore.util.GoreCoreNBTUtil.stackCompound; import static net.minecraft.util.EnumActionResult.PASS; import static net.minecraft.util.EnumActionResult.SUCCESS; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderAdvanced.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderAdvanced.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/item/ItemHangGliderAdvanced.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderAdvanced.java index 847568de3f..c75597cb1d 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderAdvanced.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderAdvanced.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.util.GliderInfo; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.api.item.ItemHangGliderBase; +import com.crowsofwar.avatar.client.model.ModelGlider; +import com.crowsofwar.avatar.common.GliderInfo; import net.minecraft.item.Item; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; public class ItemHangGliderAdvanced extends ItemHangGliderBase implements AvatarItem { diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBasic.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderBasic.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBasic.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderBasic.java index 61e94322f9..f7f0dd3544 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderBasic.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderBasic.java @@ -1,10 +1,11 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.util.GliderInfo; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.api.item.ItemHangGliderBase; +import com.crowsofwar.avatar.client.model.ModelGlider; +import com.crowsofwar.avatar.common.GliderInfo; import net.minecraft.item.Item; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; public class ItemHangGliderBasic extends ItemHangGliderBase { diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderPart.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderPart.java similarity index 84% rename from src/main/java/com/crowsofwar/avatar/item/ItemHangGliderPart.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderPart.java index 36de2b6179..f81152ab62 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemHangGliderPart.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemHangGliderPart.java @@ -1,13 +1,15 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.util.GliderInfo; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.AvatarMod; +import com.crowsofwar.avatar.common.GliderInfo; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import static com.crowsofwar.avatar.AvatarInfo.MOD_ID; + public class ItemHangGliderPart extends Item implements AvatarItem { private static ItemHangGliderPart instance = null; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemOstrichEquipment.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemOstrichEquipment.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/item/ItemOstrichEquipment.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemOstrichEquipment.java index 86e4dca933..c6af1f6f1d 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemOstrichEquipment.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemOstrichEquipment.java @@ -1,7 +1,5 @@ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/item/ItemWaterPouch.java b/src/main/java/com/crowsofwar/avatar/common/item/ItemWaterPouch.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/item/ItemWaterPouch.java rename to src/main/java/com/crowsofwar/avatar/common/item/ItemWaterPouch.java index c362cb9349..a524bb411c 100644 --- a/src/main/java/com/crowsofwar/avatar/item/ItemWaterPouch.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/ItemWaterPouch.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.item; +package com.crowsofwar.avatar.common.item; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.AvatarMod; +import com.zeitheron.hammercore.internal.blocks.IWitherProofBlock; import net.minecraft.block.BlockCauldron; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScroll.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScroll.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScroll.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScroll.java index ca9be58cb8..0c4d5bb4f8 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScroll.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScroll.java @@ -1,15 +1,15 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.network.AvatarChatMessages; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.client.gui.AvatarGuiHandler; -import com.crowsofwar.avatar.registry.AvatarItem; -import com.crowsofwar.avatar.registry.AvatarItems; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.AvatarChatMessages; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.gui.AvatarGuiHandler; +import com.crowsofwar.avatar.common.item.AvatarItem; +import com.crowsofwar.avatar.common.item.AvatarItems; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; import com.crowsofwar.gorecore.format.FormattedMessageProcessor; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; @@ -30,7 +30,7 @@ import java.util.List; import java.util.UUID; -import static com.crowsofwar.avatar.network.AvatarChatMessages.MSG_SPECIALTY_SCROLL_TOOLTIP; +import static com.crowsofwar.avatar.common.AvatarChatMessages.MSG_SPECIALTY_SCROLL_TOOLTIP; /** * Base class for scrolls diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAir.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAir.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAir.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAir.java index 33855a29a7..4dc8ed837a 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAir.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAir.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAll.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAll.java similarity index 73% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAll.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAll.java index b0ba9fbd50..092975f4cb 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollAll.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollAll.java @@ -1,6 +1,7 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.AvatarMod; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollCombustion.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollCombustion.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollCombustion.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollCombustion.java index 9b55fb3991..b2a26a9ae3 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollCombustion.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollCombustion.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollEarth.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollEarth.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollEarth.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollEarth.java index b6b909e0ed..4a81f770c8 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollEarth.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollEarth.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollFire.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollFire.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollFire.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollFire.java index c1f40c454e..84b53f507f 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollFire.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollFire.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.entity.AvatarEntityItem; +import com.crowsofwar.avatar.common.entity.AvatarEntityItem; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollIce.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollIce.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollIce.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollIce.java index 1183a1a3c4..dcd3377a2d 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollIce.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollIce.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollLightning.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollLightning.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollLightning.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollLightning.java index 464edc5a16..86d89fc621 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollLightning.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollLightning.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollSand.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollSand.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollSand.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollSand.java index 9574002af4..b1f64cad35 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollSand.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollSand.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollWater.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollWater.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollWater.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollWater.java index 1e7dad8b15..e850a75aff 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/ItemScrollWater.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/ItemScrollWater.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; -import com.crowsofwar.avatar.registry.AvatarItems; +import com.crowsofwar.avatar.common.item.AvatarItems; /** * @author Aang23 diff --git a/src/main/java/com/crowsofwar/avatar/item/scroll/Scrolls.java b/src/main/java/com/crowsofwar/avatar/common/item/scroll/Scrolls.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/item/scroll/Scrolls.java rename to src/main/java/com/crowsofwar/avatar/common/item/scroll/Scrolls.java index e9279baffd..d84475216c 100644 --- a/src/main/java/com/crowsofwar/avatar/item/scroll/Scrolls.java +++ b/src/main/java/com/crowsofwar/avatar/common/item/scroll/Scrolls.java @@ -1,19 +1,19 @@ -package com.crowsofwar.avatar.item.scroll; +package com.crowsofwar.avatar.common.item.scroll; import java.util.UUID; import javax.annotation.Nullable; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.combustion.Combustionbending; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.bending.bending.ice.Icebending; -import com.crowsofwar.avatar.bending.bending.lightning.Lightningbending; -import com.crowsofwar.avatar.bending.bending.sand.Sandbending; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.combustion.Combustionbending; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.bending.ice.Icebending; +import com.crowsofwar.avatar.common.bending.lightning.Lightningbending; +import com.crowsofwar.avatar.common.bending.sand.Sandbending; +import com.crowsofwar.avatar.common.bending.water.Waterbending; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/network/DataTransmitter.java b/src/main/java/com/crowsofwar/avatar/common/network/DataTransmitter.java similarity index 90% rename from src/main/java/com/crowsofwar/avatar/network/DataTransmitter.java rename to src/main/java/com/crowsofwar/avatar/common/network/DataTransmitter.java index 238a12098e..6633b55494 100644 --- a/src/main/java/com/crowsofwar/avatar/network/DataTransmitter.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/DataTransmitter.java @@ -15,9 +15,9 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common.network; -import com.crowsofwar.avatar.util.data.BendingData; +import com.crowsofwar.avatar.common.data.BendingData; import io.netty.buffer.ByteBuf; /** diff --git a/src/main/java/com/crowsofwar/avatar/network/DataTransmitters.java b/src/main/java/com/crowsofwar/avatar/common/network/DataTransmitters.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/network/DataTransmitters.java rename to src/main/java/com/crowsofwar/avatar/common/network/DataTransmitters.java index a6d0873539..86ad893d88 100644 --- a/src/main/java/com/crowsofwar/avatar/network/DataTransmitters.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/DataTransmitters.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common.network; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; -import com.crowsofwar.avatar.bending.bending.BattlePerformanceScore; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.*; +import com.crowsofwar.avatar.common.bending.BattlePerformanceScore; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.*; import io.netty.buffer.ByteBuf; import java.util.*; diff --git a/src/main/java/com/crowsofwar/avatar/network/IPacketHandler.java b/src/main/java/com/crowsofwar/avatar/common/network/IPacketHandler.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/network/IPacketHandler.java rename to src/main/java/com/crowsofwar/avatar/common/network/IPacketHandler.java index d6ab6d621c..02c5f46dc6 100644 --- a/src/main/java/com/crowsofwar/avatar/network/IPacketHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/IPacketHandler.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common.network; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; diff --git a/src/main/java/com/crowsofwar/avatar/network/PacketHandlerServer.java b/src/main/java/com/crowsofwar/avatar/common/network/PacketHandlerServer.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/network/PacketHandlerServer.java rename to src/main/java/com/crowsofwar/avatar/common/network/PacketHandlerServer.java index afb22d1749..7a4b7ae302 100644 --- a/src/main/java/com/crowsofwar/avatar/network/PacketHandlerServer.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/PacketHandlerServer.java @@ -15,42 +15,42 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common.network; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.util.helper.GliderHelper; -import com.crowsofwar.avatar.util.TransferConfirmHandler; -import com.crowsofwar.avatar.util.analytics.AnalyticEvent; -import com.crowsofwar.avatar.util.analytics.AnalyticEvents; -import com.crowsofwar.avatar.util.analytics.AvatarAnalytics; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyle; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.AbilityData; -import com.crowsofwar.avatar.util.data.AbilityData.AbilityTreePath; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.WallJumpManager; -import com.crowsofwar.avatar.util.data.ctx.AbilityContext; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.entity.mob.EntitySkyBison; -import com.crowsofwar.avatar.util.event.AbilityLevelEvent; -import com.crowsofwar.avatar.util.event.AbilityUnlockEvent; -import com.crowsofwar.avatar.util.event.ElementUnlockEvent; -import com.crowsofwar.avatar.util.event.ParticleCollideEvent; -import com.crowsofwar.avatar.client.gui.AvatarGuiHandler; -import com.crowsofwar.avatar.client.gui.ContainerGetBending; -import com.crowsofwar.avatar.client.gui.ContainerSkillsGui; -import com.crowsofwar.avatar.item.scroll.ItemScroll; -import com.crowsofwar.avatar.item.scroll.Scrolls; -import com.crowsofwar.avatar.item.scroll.Scrolls.ScrollType; -import com.crowsofwar.avatar.network.packets.*; -import com.crowsofwar.avatar.network.packets.glider.PacketSServerGliding; -import com.crowsofwar.avatar.util.AvatarEntityUtils; -import com.crowsofwar.avatar.util.PlayerViewRegistry; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.api.helper.GliderHelper; +import com.crowsofwar.avatar.common.TransferConfirmHandler; +import com.crowsofwar.avatar.common.analytics.AnalyticEvent; +import com.crowsofwar.avatar.common.analytics.AnalyticEvents; +import com.crowsofwar.avatar.common.analytics.AvatarAnalytics; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyle; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.AbilityData; +import com.crowsofwar.avatar.common.data.AbilityData.AbilityTreePath; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.WallJumpManager; +import com.crowsofwar.avatar.common.data.ctx.AbilityContext; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.entity.mob.EntitySkyBison; +import com.crowsofwar.avatar.common.event.AbilityLevelEvent; +import com.crowsofwar.avatar.common.event.AbilityUnlockEvent; +import com.crowsofwar.avatar.common.event.ElementUnlockEvent; +import com.crowsofwar.avatar.common.event.ParticleCollideEvent; +import com.crowsofwar.avatar.common.gui.AvatarGuiHandler; +import com.crowsofwar.avatar.common.gui.ContainerGetBending; +import com.crowsofwar.avatar.common.gui.ContainerSkillsGui; +import com.crowsofwar.avatar.common.item.scroll.ItemScroll; +import com.crowsofwar.avatar.common.item.scroll.Scrolls; +import com.crowsofwar.avatar.common.item.scroll.Scrolls.ScrollType; +import com.crowsofwar.avatar.common.network.packets.*; +import com.crowsofwar.avatar.common.network.packets.glider.PacketSServerGliding; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; +import com.crowsofwar.avatar.common.util.PlayerViewRegistry; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.AccountUUIDs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -67,9 +67,9 @@ import java.util.Objects; import java.util.UUID; -import static com.crowsofwar.avatar.network.AvatarChatMessages.*; -import static com.crowsofwar.avatar.util.analytics.AnalyticEvents.getAbilityExecutionEvent; -import static com.crowsofwar.avatar.network.packets.glider.PacketSServerGliding.IS_GLIDING; +import static com.crowsofwar.avatar.common.AvatarChatMessages.*; +import static com.crowsofwar.avatar.common.analytics.AnalyticEvents.getAbilityExecutionEvent; +import static com.crowsofwar.avatar.common.network.packets.glider.PacketSServerGliding.IS_GLIDING; /** * Implements IPacketHandler. Acts as a packet handler for integrated and diff --git a/src/main/java/com/crowsofwar/avatar/network/PacketRedirector.java b/src/main/java/com/crowsofwar/avatar/common/network/PacketRedirector.java similarity index 97% rename from src/main/java/com/crowsofwar/avatar/network/PacketRedirector.java rename to src/main/java/com/crowsofwar/avatar/common/network/PacketRedirector.java index e002aed6a2..c8983c28fd 100644 --- a/src/main/java/com/crowsofwar/avatar/network/PacketRedirector.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/PacketRedirector.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.common.network; import com.crowsofwar.avatar.AvatarMod; import net.minecraftforge.fml.common.FMLCommonHandler; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/AvatarPacket.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/AvatarPacket.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/network/packets/AvatarPacket.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/AvatarPacket.java index 0d2a9c0ef8..cfe42bfb7a 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/AvatarPacket.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/AvatarPacket.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCErrorMessage.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCErrorMessage.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCErrorMessage.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCErrorMessage.java index 7ce1603a68..d319058bf7 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCErrorMessage.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCErrorMessage.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.relauncher.Side; @@ -51,7 +51,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCOpenSkillCard.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCOpenSkillCard.java similarity index 78% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCOpenSkillCard.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCOpenSkillCard.java index f5f1729669..68445467dd 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCOpenSkillCard.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCOpenSkillCard.java @@ -1,8 +1,8 @@ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCParticles.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCParticles.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCParticles.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCParticles.java index b7a3a42718..9a064a9dd4 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCParticles.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCParticles.java @@ -15,9 +15,9 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraft.util.EnumParticleTypes; import net.minecraftforge.fml.relauncher.Side; @@ -95,7 +95,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCPlayerData.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPlayerData.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCPlayerData.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPlayerData.java index f725ba953c..3a4798a148 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCPlayerData.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPlayerData.java @@ -15,14 +15,14 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.util.data.AvatarPlayerData; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.DataCategory; +import com.crowsofwar.avatar.common.data.AvatarPlayerData; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.DataCategory; import com.crowsofwar.gorecore.GoreCore; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; @@ -148,7 +148,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { // Do nothing! // In the avatarFromBytes method, already saved the data into the diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCPowerRating.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPowerRating.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCPowerRating.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPowerRating.java index 81030a9f49..5b02fc9f7c 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCPowerRating.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCPowerRating.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCRemoveStatusControl.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCRemoveStatusControl.java similarity index 79% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCRemoveStatusControl.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCRemoveStatusControl.java index 0afad02660..113f89ace5 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCRemoveStatusControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCRemoveStatusControl.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -53,7 +53,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCStatusControl.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCStatusControl.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCStatusControl.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCStatusControl.java index 2c7bfc462b..72990e0eb1 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCStatusControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCStatusControl.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCSyncAbilityProperties.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCSyncAbilityProperties.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketCSyncAbilityProperties.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCSyncAbilityProperties.java index 17da632808..8089a7e3b2 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketCSyncAbilityProperties.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketCSyncAbilityProperties.java @@ -1,9 +1,9 @@ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; import com.crowsofwar.avatar.AvatarLog; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.config.AbilityProperties; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.config.AbilityProperties; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSBisonInventory.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSBisonInventory.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSBisonInventory.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSBisonInventory.java index b3f27aa062..aea3ca9526 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSBisonInventory.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSBisonInventory.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -39,7 +39,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSConfirmTransfer.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSConfirmTransfer.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSConfirmTransfer.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSConfirmTransfer.java index ed61849790..aea30cb276 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSConfirmTransfer.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSConfirmTransfer.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -39,7 +39,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSCycleBending.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSCycleBending.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSCycleBending.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSCycleBending.java index fa9dae8d7a..2ebd3623aa 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSCycleBending.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSCycleBending.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -50,7 +50,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSOpenUnlockGui.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSOpenUnlockGui.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSOpenUnlockGui.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSOpenUnlockGui.java index 27bb9692ef..075db1cc9e 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSOpenUnlockGui.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSOpenUnlockGui.java @@ -14,9 +14,9 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -39,7 +39,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSParticleCollideEvent.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSParticleCollideEvent.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSParticleCollideEvent.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSParticleCollideEvent.java index 3c018ac252..1d3c181787 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSParticleCollideEvent.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSParticleCollideEvent.java @@ -1,10 +1,11 @@ -package com.crowsofwar.avatar.network.packets; - -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.util.AvatarEntityUtils; +package com.crowsofwar.avatar.common.network.packets; + +import com.crowsofwar.avatar.client.particles.newparticles.ParticleAvatar; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.util.AvatarEntityUtils; import io.netty.buffer.ByteBuf; import net.minecraft.entity.Entity; import net.minecraft.network.PacketBuffer; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSRequestData.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSRequestData.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSRequestData.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSRequestData.java index ee4869f73b..41963ac767 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSRequestData.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSRequestData.java @@ -15,9 +15,9 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import com.crowsofwar.gorecore.util.AccountUUIDs; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSSendViewStatus.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSendViewStatus.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSSendViewStatus.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSendViewStatus.java index a470b9336f..b556de953c 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSSendViewStatus.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSendViewStatus.java @@ -15,9 +15,9 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSSkillsMenu.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSkillsMenu.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSSkillsMenu.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSkillsMenu.java index 293e82886e..c66cd1ee1b 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSSkillsMenu.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSSkillsMenu.java @@ -14,12 +14,12 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -68,7 +68,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUnlockBending.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUnlockBending.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSUnlockBending.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUnlockBending.java index e4b4f1b08e..d3b8c3a550 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUnlockBending.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUnlockBending.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.bending.bending.BendingStyles; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.bending.BendingStyles; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -53,7 +53,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseAbility.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseAbility.java similarity index 86% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseAbility.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseAbility.java index 3c5fe6ab51..56a8ec1dc7 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseAbility.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseAbility.java @@ -15,13 +15,13 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.util.Raytrace; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseScroll.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseScroll.java similarity index 81% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseScroll.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseScroll.java index 8723d9b2ab..50d49294d3 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseScroll.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseScroll.java @@ -14,11 +14,11 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.bending.bending.Abilities; -import com.crowsofwar.avatar.bending.bending.Ability; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.bending.Abilities; +import com.crowsofwar.avatar.common.bending.Ability; +import com.crowsofwar.avatar.common.network.PacketRedirector; import com.crowsofwar.gorecore.util.GoreCoreByteBufUtil; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; @@ -54,7 +54,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseStatusControl.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseStatusControl.java similarity index 87% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseStatusControl.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseStatusControl.java index 27a31ff482..6982f4b552 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSUseStatusControl.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSUseStatusControl.java @@ -15,14 +15,14 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; import com.crowsofwar.avatar.AvatarLog; import com.crowsofwar.avatar.AvatarLog.WarningType; -import com.crowsofwar.avatar.util.data.StatusControl; -import com.crowsofwar.avatar.util.data.StatusControlController; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.common.data.StatusControl; +import com.crowsofwar.avatar.common.data.StatusControlController; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.util.Raytrace; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSWallJump.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSWallJump.java similarity index 76% rename from src/main/java/com/crowsofwar/avatar/network/packets/PacketSWallJump.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSWallJump.java index bbd351b354..fa89304b41 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/PacketSWallJump.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/PacketSWallJump.java @@ -14,11 +14,18 @@ You should have received a copy of the GNU General Public License along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network.packets; +package com.crowsofwar.avatar.common.network.packets; -import com.crowsofwar.avatar.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.PacketRedirector; import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.EnumFaceDirection; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.EnumFacing; import net.minecraftforge.fml.relauncher.Side; +import org.lwjgl.input.Keyboard; /** * @author CrowsOfWar @@ -52,7 +59,7 @@ protected Side getReceivedSide() { } @Override - protected com.crowsofwar.avatar.network.packets.AvatarPacket.Handler getPacketHandler() { + protected com.crowsofwar.avatar.common.network.packets.AvatarPacket.Handler getPacketHandler() { return PacketRedirector::redirectMessage; } diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCClientGliding.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCClientGliding.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCClientGliding.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCClientGliding.java index 648ed9888e..4c8b7e171b 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCClientGliding.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCClientGliding.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.network.packets.glider; +package com.crowsofwar.avatar.common.network.packets.glider; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.network.packets.AvatarPacket; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.packets.AvatarPacket; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCSyncGliderDataToClient.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCSyncGliderDataToClient.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCSyncGliderDataToClient.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCSyncGliderDataToClient.java index 5c559184a7..f2e89afa5a 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCSyncGliderDataToClient.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCSyncGliderDataToClient.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.network.packets.glider; +package com.crowsofwar.avatar.common.network.packets.glider; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.network.packets.AvatarPacket; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.packets.AvatarPacket; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.fml.common.network.ByteBufUtils; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCUpdateClientTarget.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCUpdateClientTarget.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCUpdateClientTarget.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCUpdateClientTarget.java index beec397f71..823feb7cb4 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketCUpdateClientTarget.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketCUpdateClientTarget.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.network.packets.glider; +package com.crowsofwar.avatar.common.network.packets.glider; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.network.packets.AvatarPacket; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.packets.AvatarPacket; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketSServerGliding.java b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketSServerGliding.java similarity index 85% rename from src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketSServerGliding.java rename to src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketSServerGliding.java index 2788319989..92b309a496 100644 --- a/src/main/java/com/crowsofwar/avatar/network/packets/glider/PacketSServerGliding.java +++ b/src/main/java/com/crowsofwar/avatar/common/network/packets/glider/PacketSServerGliding.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.network.packets.glider; +package com.crowsofwar.avatar.common.network.packets.glider; -import com.crowsofwar.avatar.network.PacketRedirector; -import com.crowsofwar.avatar.network.packets.AvatarPacket; +import com.crowsofwar.avatar.common.network.PacketRedirector; +import com.crowsofwar.avatar.common.network.packets.AvatarPacket; import io.netty.buffer.ByteBuf; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.relauncher.Side; diff --git a/src/main/java/com/crowsofwar/avatar/client/particle/ClientParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/particle/ClientParticleSpawner.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/client/particle/ClientParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/particle/ClientParticleSpawner.java index e13da0d8c1..1582db10d0 100644 --- a/src/main/java/com/crowsofwar/avatar/client/particle/ClientParticleSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/particle/ClientParticleSpawner.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.particle; +package com.crowsofwar.avatar.common.particle; import com.crowsofwar.avatar.AvatarMod; import net.minecraft.util.EnumParticleTypes; diff --git a/src/main/java/com/crowsofwar/avatar/client/particle/NetworkParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/particle/NetworkParticleSpawner.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/client/particle/NetworkParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/particle/NetworkParticleSpawner.java index 437be6a366..36e171ac1b 100644 --- a/src/main/java/com/crowsofwar/avatar/client/particle/NetworkParticleSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/particle/NetworkParticleSpawner.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.particle; +package com.crowsofwar.avatar.common.particle; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.network.packets.PacketCParticles; +import com.crowsofwar.avatar.common.network.packets.PacketCParticles; import net.minecraft.util.EnumParticleTypes; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/crowsofwar/avatar/client/particle/ParticleBuilder.java b/src/main/java/com/crowsofwar/avatar/common/particle/ParticleBuilder.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/client/particle/ParticleBuilder.java rename to src/main/java/com/crowsofwar/avatar/common/particle/ParticleBuilder.java diff --git a/src/main/java/com/crowsofwar/avatar/client/particle/ParticleSpawner.java b/src/main/java/com/crowsofwar/avatar/common/particle/ParticleSpawner.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/client/particle/ParticleSpawner.java rename to src/main/java/com/crowsofwar/avatar/common/particle/ParticleSpawner.java index ab8e7bc703..79782cdaa6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/particle/ParticleSpawner.java +++ b/src/main/java/com/crowsofwar/avatar/common/particle/ParticleSpawner.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.client.particle; +package com.crowsofwar.avatar.common.particle; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.util.EnumParticleTypes; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/FirebendingSunModifier.java b/src/main/java/com/crowsofwar/avatar/common/powerrating/FirebendingSunModifier.java similarity index 80% rename from src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/FirebendingSunModifier.java rename to src/main/java/com/crowsofwar/avatar/common/powerrating/FirebendingSunModifier.java index 53453b261b..6886ee5628 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/FirebendingSunModifier.java +++ b/src/main/java/com/crowsofwar/avatar/common/powerrating/FirebendingSunModifier.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bendingmultipliers; +package com.crowsofwar.avatar.common.powerrating; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/PrModifierHandler.java b/src/main/java/com/crowsofwar/avatar/common/powerrating/PrModifierHandler.java similarity index 67% rename from src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/PrModifierHandler.java rename to src/main/java/com/crowsofwar/avatar/common/powerrating/PrModifierHandler.java index e4cc1627b7..1eddc3b56d 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/PrModifierHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/powerrating/PrModifierHandler.java @@ -1,17 +1,17 @@ -package com.crowsofwar.avatar.bending.bendingmultipliers; +package com.crowsofwar.avatar.common.powerrating; -import com.crowsofwar.avatar.item.ItemHangGliderBase; -import com.crowsofwar.avatar.bending.bending.air.Airbending; -import com.crowsofwar.avatar.bending.bending.air.powermods.StaffPowerModifier; -import com.crowsofwar.avatar.bending.bending.earth.Earthbending; -import com.crowsofwar.avatar.bending.bending.earth.EarthbendingJingModifier; -import com.crowsofwar.avatar.bending.bending.fire.Firebending; -import com.crowsofwar.avatar.bending.bending.water.Waterbending; -import com.crowsofwar.avatar.util.data.Bender; -import com.crowsofwar.avatar.util.data.BendingData; -import com.crowsofwar.avatar.util.data.PowerRatingManager; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; -import com.crowsofwar.avatar.util.Raytrace; +import com.crowsofwar.avatar.api.item.ItemHangGliderBase; +import com.crowsofwar.avatar.common.bending.air.Airbending; +import com.crowsofwar.avatar.common.bending.air.powermods.StaffPowerModifier; +import com.crowsofwar.avatar.common.bending.earth.Earthbending; +import com.crowsofwar.avatar.common.bending.earth.EarthbendingJingModifier; +import com.crowsofwar.avatar.common.bending.fire.Firebending; +import com.crowsofwar.avatar.common.bending.water.Waterbending; +import com.crowsofwar.avatar.common.data.Bender; +import com.crowsofwar.avatar.common.data.BendingData; +import com.crowsofwar.avatar.common.data.PowerRatingManager; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.util.Raytrace; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/WaterbendingMoonBonus.java b/src/main/java/com/crowsofwar/avatar/common/powerrating/WaterbendingMoonBonus.java similarity index 83% rename from src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/WaterbendingMoonBonus.java rename to src/main/java/com/crowsofwar/avatar/common/powerrating/WaterbendingMoonBonus.java index 92d151d96e..336af82e8f 100644 --- a/src/main/java/com/crowsofwar/avatar/bending/bendingmultipliers/WaterbendingMoonBonus.java +++ b/src/main/java/com/crowsofwar/avatar/common/powerrating/WaterbendingMoonBonus.java @@ -1,7 +1,7 @@ -package com.crowsofwar.avatar.bending.bendingmultipliers; +package com.crowsofwar.avatar.common.powerrating; -import com.crowsofwar.avatar.util.data.PowerRatingModifier; -import com.crowsofwar.avatar.util.data.ctx.BendingContext; +import com.crowsofwar.avatar.common.data.PowerRatingModifier; +import com.crowsofwar.avatar.common.data.ctx.BendingContext; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; diff --git a/src/main/java/com/crowsofwar/avatar/registry/CapabilityRegistry.java b/src/main/java/com/crowsofwar/avatar/common/registry/CapabilityRegistry.java similarity index 52% rename from src/main/java/com/crowsofwar/avatar/registry/CapabilityRegistry.java rename to src/main/java/com/crowsofwar/avatar/common/registry/CapabilityRegistry.java index 42cbbf8646..b754d8d463 100644 --- a/src/main/java/com/crowsofwar/avatar/registry/CapabilityRegistry.java +++ b/src/main/java/com/crowsofwar/avatar/common/registry/CapabilityRegistry.java @@ -1,6 +1,6 @@ -package com.crowsofwar.avatar.registry; +package com.crowsofwar.avatar.common.registry; -import com.crowsofwar.avatar.capabilities.GliderCapabilityImplementation; +import com.crowsofwar.avatar.common.capabilities.GliderCapabilityImplementation; public class CapabilityRegistry { diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarByteBufUtils.java b/src/main/java/com/crowsofwar/avatar/common/util/AvatarByteBufUtils.java similarity index 96% rename from src/main/java/com/crowsofwar/avatar/util/AvatarByteBufUtils.java rename to src/main/java/com/crowsofwar/avatar/common/util/AvatarByteBufUtils.java index dc280abc88..71a059b557 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarByteBufUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/AvatarByteBufUtils.java @@ -15,7 +15,7 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarDataSerializers.java b/src/main/java/com/crowsofwar/avatar/common/util/AvatarDataSerializers.java similarity index 94% rename from src/main/java/com/crowsofwar/avatar/util/AvatarDataSerializers.java rename to src/main/java/com/crowsofwar/avatar/common/util/AvatarDataSerializers.java index 87f160e679..8bbea3505d 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarDataSerializers.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/AvatarDataSerializers.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; -import com.crowsofwar.avatar.util.data.BenderInfo; -import com.crowsofwar.avatar.item.ItemBisonArmor.ArmorTier; -import com.crowsofwar.avatar.item.ItemBisonSaddle.SaddleTier; +import com.crowsofwar.avatar.common.data.BenderInfo; +import com.crowsofwar.avatar.common.item.ItemBisonArmor.ArmorTier; +import com.crowsofwar.avatar.common.item.ItemBisonSaddle.SaddleTier; import com.crowsofwar.gorecore.util.Vector; import net.minecraft.block.Block; import net.minecraft.network.PacketBuffer; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarEntityUtils.java b/src/main/java/com/crowsofwar/avatar/common/util/AvatarEntityUtils.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/AvatarEntityUtils.java rename to src/main/java/com/crowsofwar/avatar/common/util/AvatarEntityUtils.java index e9c91490b2..eb07898739 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarEntityUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/AvatarEntityUtils.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarParticleUtils.java b/src/main/java/com/crowsofwar/avatar/common/util/AvatarParticleUtils.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/AvatarParticleUtils.java rename to src/main/java/com/crowsofwar/avatar/common/util/AvatarParticleUtils.java index 6f9253a0f7..6886012d5e 100644 --- a/src/main/java/com/crowsofwar/avatar/util/AvatarParticleUtils.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/AvatarParticleUtils.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -6,6 +6,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World; +import org.apache.commons.lang3.Validate; import static java.lang.Math.cos; import static java.lang.Math.sin; diff --git a/src/main/java/com/crowsofwar/avatar/util/AvatarUtils.java b/src/main/java/com/crowsofwar/avatar/common/util/AvatarUtils.java similarity index 100% rename from src/main/java/com/crowsofwar/avatar/util/AvatarUtils.java rename to src/main/java/com/crowsofwar/avatar/common/util/AvatarUtils.java diff --git a/src/main/java/com/crowsofwar/avatar/util/GliderHelper.java b/src/main/java/com/crowsofwar/avatar/common/util/GliderHelper.java similarity index 89% rename from src/main/java/com/crowsofwar/avatar/util/GliderHelper.java rename to src/main/java/com/crowsofwar/avatar/common/util/GliderHelper.java index 7221335f43..1a52c4ecd5 100644 --- a/src/main/java/com/crowsofwar/avatar/util/GliderHelper.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/GliderHelper.java @@ -1,5 +1,7 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; +import com.crowsofwar.avatar.AvatarInfo; +import com.crowsofwar.avatar.common.GliderInfo; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; diff --git a/src/main/java/com/crowsofwar/avatar/util/PlayerViewRegistry.java b/src/main/java/com/crowsofwar/avatar/common/util/PlayerViewRegistry.java similarity index 93% rename from src/main/java/com/crowsofwar/avatar/util/PlayerViewRegistry.java rename to src/main/java/com/crowsofwar/avatar/common/util/PlayerViewRegistry.java index 6b21b14d75..d111a27e60 100644 --- a/src/main/java/com/crowsofwar/avatar/util/PlayerViewRegistry.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/PlayerViewRegistry.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/com/crowsofwar/avatar/util/Raytrace.java b/src/main/java/com/crowsofwar/avatar/common/util/Raytrace.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/Raytrace.java rename to src/main/java/com/crowsofwar/avatar/common/util/Raytrace.java index 53e653d340..eb74aecfa2 100644 --- a/src/main/java/com/crowsofwar/avatar/util/Raytrace.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/Raytrace.java @@ -15,11 +15,11 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import com.crowsofwar.avatar.AvatarMod; -import com.crowsofwar.avatar.entity.AvatarEntity; -import com.crowsofwar.avatar.entity.ICustomHitbox; +import com.crowsofwar.avatar.common.entity.AvatarEntity; +import com.crowsofwar.avatar.common.entity.ICustomHitbox; import com.crowsofwar.gorecore.util.Vector; import com.crowsofwar.gorecore.util.VectorI; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/crowsofwar/avatar/util/SemanticVersion.java b/src/main/java/com/crowsofwar/avatar/common/util/SemanticVersion.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/SemanticVersion.java rename to src/main/java/com/crowsofwar/avatar/common/util/SemanticVersion.java index 0bc53fcab3..15dd240665 100644 --- a/src/main/java/com/crowsofwar/avatar/util/SemanticVersion.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/SemanticVersion.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import java.util.Objects; import java.util.regex.Pattern; diff --git a/src/main/java/com/crowsofwar/avatar/util/WildCardTradeList.java b/src/main/java/com/crowsofwar/avatar/common/util/WildCardTradeList.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/util/WildCardTradeList.java rename to src/main/java/com/crowsofwar/avatar/common/util/WildCardTradeList.java index 32524d0bb7..c0f7995360 100644 --- a/src/main/java/com/crowsofwar/avatar/util/WildCardTradeList.java +++ b/src/main/java/com/crowsofwar/avatar/common/util/WildCardTradeList.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util; +package com.crowsofwar.avatar.common.util; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/crowsofwar/avatar/util/windhelper/WindHelper.java b/src/main/java/com/crowsofwar/avatar/common/wind/WindHelper.java similarity index 92% rename from src/main/java/com/crowsofwar/avatar/util/windhelper/WindHelper.java rename to src/main/java/com/crowsofwar/avatar/common/wind/WindHelper.java index 14c24eb3d9..6c37a0a80a 100644 --- a/src/main/java/com/crowsofwar/avatar/util/windhelper/WindHelper.java +++ b/src/main/java/com/crowsofwar/avatar/common/wind/WindHelper.java @@ -1,11 +1,11 @@ -package com.crowsofwar.avatar.util.windhelper; +package com.crowsofwar.avatar.common.wind; -import com.crowsofwar.avatar.item.IGlider; -import com.crowsofwar.avatar.util.windhelper.generator.OpenSimplexNoise; +import com.crowsofwar.avatar.api.item.IGlider; +import com.crowsofwar.avatar.common.wind.generator.OpenSimplexNoise; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import static com.crowsofwar.avatar.config.ConfigGlider.GLIDER_CONFIG; +import static com.crowsofwar.avatar.common.config.ConfigGlider.GLIDER_CONFIG; /** diff --git a/src/main/java/com/crowsofwar/avatar/util/windhelper/generator/OpenSimplexNoise.java b/src/main/java/com/crowsofwar/avatar/common/wind/generator/OpenSimplexNoise.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/util/windhelper/generator/OpenSimplexNoise.java rename to src/main/java/com/crowsofwar/avatar/common/wind/generator/OpenSimplexNoise.java index 056d045ad0..883fe3e861 100644 --- a/src/main/java/com/crowsofwar/avatar/util/windhelper/generator/OpenSimplexNoise.java +++ b/src/main/java/com/crowsofwar/avatar/common/wind/generator/OpenSimplexNoise.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.util.windhelper.generator; +package com.crowsofwar.avatar.common.wind.generator; /* * OpenSimplex Noise in Java. diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarKeybindingServer.java b/src/main/java/com/crowsofwar/avatar/server/AvatarKeybindingServer.java similarity index 88% rename from src/main/java/com/crowsofwar/avatar/network/AvatarKeybindingServer.java rename to src/main/java/com/crowsofwar/avatar/server/AvatarKeybindingServer.java index 6d7cf62fd5..bf704d3e77 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarKeybindingServer.java +++ b/src/main/java/com/crowsofwar/avatar/server/AvatarKeybindingServer.java @@ -15,10 +15,10 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; +package com.crowsofwar.avatar.server; -import com.crowsofwar.avatar.client.controls.AvatarControl; -import com.crowsofwar.avatar.client.controls.IControlsHandler; +import com.crowsofwar.avatar.common.controls.AvatarControl; +import com.crowsofwar.avatar.common.controls.IControlsHandler; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/crowsofwar/avatar/network/AvatarServerProxy.java b/src/main/java/com/crowsofwar/avatar/server/AvatarServerProxy.java similarity index 82% rename from src/main/java/com/crowsofwar/avatar/network/AvatarServerProxy.java rename to src/main/java/com/crowsofwar/avatar/server/AvatarServerProxy.java index a3de2dd2e3..e6a8fa0a22 100644 --- a/src/main/java/com/crowsofwar/avatar/network/AvatarServerProxy.java +++ b/src/main/java/com/crowsofwar/avatar/server/AvatarServerProxy.java @@ -15,13 +15,15 @@ along with AvatarMod. If not, see . */ -package com.crowsofwar.avatar.network; - -import com.crowsofwar.avatar.client.controls.IControlsHandler; -import com.crowsofwar.avatar.client.controls.KeybindingWrapper; -import com.crowsofwar.avatar.util.data.AvatarPlayerData; -import com.crowsofwar.avatar.client.gui.AvatarGui; -import com.crowsofwar.avatar.capabilities.IAdvancedGliderCapabilityHandler; +package com.crowsofwar.avatar.server; + +import com.crowsofwar.avatar.common.AvatarCommonProxy; +import com.crowsofwar.avatar.common.controls.IControlsHandler; +import com.crowsofwar.avatar.common.controls.KeybindingWrapper; +import com.crowsofwar.avatar.common.data.AvatarPlayerData; +import com.crowsofwar.avatar.common.gui.AvatarGui; +import com.crowsofwar.avatar.common.network.IPacketHandler; +import com.crowsofwar.avatar.api.capabilities.IAdvancedGliderCapabilityHandler; import com.crowsofwar.gorecore.data.PlayerDataFetcher; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.IThreadListener; diff --git a/src/main/java/com/crowsofwar/avatar/world/explosions/AvatarCombustionExplosion.java b/src/main/java/com/crowsofwar/avatar/world/explosions/AvatarCombustionExplosion.java deleted file mode 100644 index 45f9cd5bed..0000000000 --- a/src/main/java/com/crowsofwar/avatar/world/explosions/AvatarCombustionExplosion.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.crowsofwar.avatar.world.explosions; - -public class AvatarCombustionExplosion { -} diff --git a/src/main/java/com/crowsofwar/gorecore/GoreCore.java b/src/main/java/com/crowsofwar/gorecore/GoreCore.java index 667f251424..ba17680686 100644 --- a/src/main/java/com/crowsofwar/gorecore/GoreCore.java +++ b/src/main/java/com/crowsofwar/gorecore/GoreCore.java @@ -27,6 +27,7 @@ import com.crowsofwar.gorecore.tree.test.GoreCoreChatMessages; import com.crowsofwar.gorecore.tree.test.GoreCoreCommand; import com.crowsofwar.gorecore.tree.test.TreeTest; +import com.crowsofwar.gorecore.util.AccountUUIDs; import net.minecraft.entity.Entity; import net.minecraftforge.fml.common.Loader; diff --git a/src/main/java/com/crowsofwar/gorecore/tree/test/GoreCoreCommand.java b/src/main/java/com/crowsofwar/gorecore/tree/test/GoreCoreCommand.java index f783072b3b..d80244ada2 100644 --- a/src/main/java/com/crowsofwar/gorecore/tree/test/GoreCoreCommand.java +++ b/src/main/java/com/crowsofwar/gorecore/tree/test/GoreCoreCommand.java @@ -16,7 +16,11 @@ */ package com.crowsofwar.gorecore.tree.test; +import com.crowsofwar.gorecore.format.FormattedMessage; import com.crowsofwar.gorecore.tree.*; +import com.crowsofwar.gorecore.util.AccountUUIDs; + +import static com.crowsofwar.gorecore.tree.test.GoreCoreChatMessages.*; /** * From f5da232d99fc7721418d50b25a44561e4dab69c6 Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Sun, 12 Jul 2020 15:52:20 +0300 Subject: [PATCH 3/9] Lemur Update Variants Added variants of lemurs --- .../avatar/client/render/ModelLemur.java | 1156 ++++++++--------- .../client/render/ModelLlibraryLemur.java | 1148 ++++++++-------- .../client/render/RenderAscendedLemur.java | 6 +- .../render/RenderAscendedLlibraryLemur.java | 8 +- .../avatar/client/render/RenderLemur.java | 7 +- .../client/render/RenderLlibraryLemur.java | 6 +- .../entity/EntityAscendedFlyingLemur.java | 32 +- .../common/entity/EntityFlyingLemur.java | 37 +- .../avatarmod/textures/entity/lemur.png | Bin 61789 -> 0 bytes .../assets/avatarmod/textures/mob/lemur.png | Bin 0 -> 62217 bytes .../assets/avatarmod/textures/mob/lemur2.png | Bin 0 -> 42423 bytes 11 files changed, 1219 insertions(+), 1181 deletions(-) delete mode 100644 src/main/resources/assets/avatarmod/textures/entity/lemur.png create mode 100644 src/main/resources/assets/avatarmod/textures/mob/lemur.png create mode 100644 src/main/resources/assets/avatarmod/textures/mob/lemur2.png diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java index 01b28a23a1..e020027e46 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java @@ -157,673 +157,673 @@ public class ModelLemur extends ModelBase { public ModelLemur() { this.textureWidth = 160; this.textureHeight = 64; - this.LegRightFootDetail2 = new ModelRenderer(this, 37, 11); - this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); - this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); - this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); - this.ArmLeftDetail11 = new ModelRenderer(this, 12, 28); - this.ArmLeftDetail11.mirror = true; - this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); - this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); - this.theHeadDetail2e768 = new ModelRenderer(this, 66, 24); - this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); - this.EarM1 = new ModelRenderer(this, 10, 50); - this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); - this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); - this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); - this.ArmRightLowerDetail1 = new ModelRenderer(this, 40, 29); - this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); - this.FF1 = new ModelRenderer(this, 83, 59); - this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); - this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); - this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLowerBack = new ModelRenderer(this, 24, 0); + this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); + this.BodyDetailFront = new ModelRenderer(this, 8, 9); + this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); + this.Right_Wing = new ModelRenderer(this, 92, 0); + this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); + this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); + this.BodyLDetail = new ModelRenderer(this, 35, 11); + this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); + this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.EarRB2Detail = new ModelRenderer(this, 30, 37); + this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.Body = new ModelRenderer(this, 0, 0); + this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); + this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); + this.neckDetail = new ModelRenderer(this, 18, 3); + this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); + this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); + this.neckDetail3 = new ModelRenderer(this, 18, 6); + this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); + this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); + this.ArmRight = new ModelRenderer(this, 0, 27); + this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); + this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); + this.headtop = new ModelRenderer(this, 66, 0); + this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); + this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); + this.EarL2 = new ModelRenderer(this, 118, 10); + this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); + this.ArmLeftFingerback = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.theHeadDetailh = new ModelRenderer(this, 54, 12); + this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); + this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.headfrontdetaila4_1 = new ModelRenderer(this, 66, 44); + this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); + this.ArmRightFingerfront = new ModelRenderer(this, 43, 13); + this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.EarLB3 = new ModelRenderer(this, 114, 46); + this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); + this.EarR3 = new ModelRenderer(this, 6, 36); + this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); this.headBack2 = new ModelRenderer(this, 66, 8); this.headBack2.setRotationPoint(0.0F, 0.0F, 2.6F); this.headBack2.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(headBack2, 0.7312929565856241F, 0.0F, 0.0F); - this.EarRB2 = new ModelRenderer(this, 16, 36); - this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); - this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); - this.EarRight = new ModelRenderer(this, 0, 39); - this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); - this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); - this.theHeadDetaile = new ModelRenderer(this, 78, 8); - this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); - this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); - this.headBack11 = new ModelRenderer(this, 66, 16); - this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); - this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); - this.EarRB3 = new ModelRenderer(this, 22, 36); - this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); - this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); - this.theHead = new ModelRenderer(this, 78, 0); - this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); - this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); - this.headfrontdetaila5 = new ModelRenderer(this, 79, 46); - this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); - this.EarL5 = new ModelRenderer(this, 116, 27); - this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); - this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); - this.Tail_end = new ModelRenderer(this, 56, 59); - this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.Neck = new ModelRenderer(this, 8, 12); + this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); + this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); + this.theHeadDetail1e = new ModelRenderer(this, 78, 20); + this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); + this.LegRightLowerDetail1 = new ModelRenderer(this, 34, 10); + this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); this.EarRB2Detaildetail = new ModelRenderer(this, 30, 45); this.EarRB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); this.EarRB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); this.setRotateAngle(EarRB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); - this.LegRightLowerDetail = new ModelRenderer(this, 34, 9); - this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); - this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); - this.EarR2 = new ModelRenderer(this, 0, 49); - this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.EarLB2Detaildetail = new ModelRenderer(this, 112, 61); + this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.LegLeftLowerDetail = new ModelRenderer(this, 37, 9); + this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); this.BodyDetailSideLeft = new ModelRenderer(this, 15, 15); this.BodyDetailSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); this.BodyDetailSideLeft.addBox(-1.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); this.setRotateAngle(BodyDetailSideLeft, 0.0F, 0.0F, -0.5235987755982988F); - this.EarLeft = new ModelRenderer(this, 118, 0); - this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); - this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); - this.Tail_mid4 = new ModelRenderer(this, 60, 59); - this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); - this.ArmLeftHand = new ModelRenderer(this, 0, 2); - this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); - this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); - this.theHeadDetail2 = new ModelRenderer(this, 78, 28); - this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); - this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); - this.LegRightFootDetail = new ModelRenderer(this, 34, 11); - this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); - this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); - this.FF4 = new ModelRenderer(this, 90, 62); - this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); - this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); - this.neckDetail4 = new ModelRenderer(this, 18, 3); - this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); - this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.EarM2 = new ModelRenderer(this, 8, 41); + this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); + this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.EarL1 = new ModelRenderer(this, 116, 5); + this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); + this.headBack1 = new ModelRenderer(this, 54, 16); + this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); this.Tail_start = new ModelRenderer(this, 60, 59); this.Tail_start.setRotationPoint(0.0F, 5.5F, 1.0F); this.Tail_start.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); this.setRotateAngle(Tail_start, 0.22183134792847928F, 0.0F, 0.0F); + this.FF3 = new ModelRenderer(this, 71, 60); + this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); + this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); + this.BodyLDetail4 = new ModelRenderer(this, 43, 0); + this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); + this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.BodyLowerSideRight = new ModelRenderer(this, 37, 0); + this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); + this.headfrontdetaila1_1 = new ModelRenderer(this, 54, 28); + this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); + this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.ArmRightDetail1 = new ModelRenderer(this, 32, 28); + this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); + this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); this.LegLeftLower = new ModelRenderer(this, 52, 62); this.LegLeftLower.setRotationPoint(0.5F, 5.2F, 0.0F); this.LegLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(LegLeftLower, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyDetailBack = new ModelRenderer(this, 8, 9); + this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); + this.LegRightLower = new ModelRenderer(this, 52, 62); + this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); + this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); + this.LegRightLowerDetail = new ModelRenderer(this, 34, 9); + this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarLB1 = new ModelRenderer(this, 116, 34); + this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); + this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarRB2 = new ModelRenderer(this, 16, 36); + this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); + this.EarRight = new ModelRenderer(this, 0, 39); + this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); + this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); this.theHeadDetail1 = new ModelRenderer(this, 78, 16); this.theHeadDetail1.setRotationPoint(-1.5F, 0.0F, -1.5F); this.theHeadDetail1.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(theHeadDetail1, 0.0F, 0.0F, 0.7853981633974483F); - this.EarML3 = new ModelRenderer(this, 116, 53); - this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); - this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.LegLeftFootDetail = new ModelRenderer(this, 22, 22); - this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); - this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); - this.EarR1 = new ModelRenderer(this, 0, 44); - this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); - this.Tail_mid2 = new ModelRenderer(this, 60, 59); - this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); - this.Tail_mid1 = new ModelRenderer(this, 60, 59); - this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); - this.Body = new ModelRenderer(this, 0, 0); - this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); - this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); - this.BodyLowerBack = new ModelRenderer(this, 24, -1); - this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); - this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); - this.ArmRightFingerback = new ModelRenderer(this, 43, 13); - this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); - this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); - this.ArmRightFingersBig = new ModelRenderer(this, 0, 2); - this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); - this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); - this.theHeadDetail2e = new ModelRenderer(this, 78, 32); - this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); - this.ArmLeftLowerDetail = new ModelRenderer(this, 35, 21); - this.ArmLeftLowerDetail.mirror = true; - this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); - this.ArmLeftFingerback = new ModelRenderer(this, 43, 13); - this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); - this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); - this.LegRightLowerDetail1 = new ModelRenderer(this, 34, 10); - this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); - this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); - this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); - this.headBack = new ModelRenderer(this, 54, 24); - this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); - this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); - this.UpperBody = new ModelRenderer(this, 14, 0); - this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); - this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); - this.BodyLowerSideRight = new ModelRenderer(this, 37, 0); - this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); - this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); - this.Neck = new ModelRenderer(this, 8, 12); - this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); - this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); - this.Tail_mid3 = new ModelRenderer(this, 60, 59); - this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); - this.EarL3 = new ModelRenderer(this, 118, 15); - this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); - this.Left_Wing_Overlay = new ModelRenderer(this, 136, 0); - this.Left_Wing_Overlay.mirror = true; - this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.ArmLeftDetail = new ModelRenderer(this, 8, 23); - this.ArmLeftDetail.mirror = true; - this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); - this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); - this.Right_Wing = new ModelRenderer(this, 92, 0); - this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); - this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); this.headfrontdetaila4 = new ModelRenderer(this, 66, 36); this.headfrontdetaila4.setRotationPoint(0.0F, 0.0F, 2.6F); this.headfrontdetaila4.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(headfrontdetaila4, 0.7312929565856241F, 0.0F, 0.0F); - this.BodyDetailSideRight = new ModelRenderer(this, 9, 15); - this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); - this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); - this.chek = new ModelRenderer(this, 65, 60); - this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); - this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); - this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); - this.LegRightFoot = new ModelRenderer(this, 34, 8); - this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); - this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); - this.ArmLeft = new ModelRenderer(this, 0, 27); - this.ArmLeft.mirror = true; - this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); - this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); - this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); - this.ArmRightDetail = new ModelRenderer(this, 8, 23); - this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); - this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); - this.ArmRightDetail1 = new ModelRenderer(this, 32, 28); - this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); - this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); - this.headfrontdetaila1 = new ModelRenderer(this, 54, 20); - this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); - this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); - this.EarM2 = new ModelRenderer(this, 8, 41); - this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); - this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); - this.LegDetailRight1 = new ModelRenderer(this, 16, 32); - this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); - this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); - this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); - this.LegLeftFootDetail2 = new ModelRenderer(this, 37, 11); - this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); - this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); - this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); - this.LegDetailRight = new ModelRenderer(this, 19, 20); - this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); - this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); - this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); - this.neckDetail3 = new ModelRenderer(this, 18, 3); - this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); - this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); - this.BodyLDetail = new ModelRenderer(this, 35, 11); - this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); - this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); - this.EarLB2Detaildetail = new ModelRenderer(this, 112, 61); - this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); - this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); - this.EarR3 = new ModelRenderer(this, 6, 36); - this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); - this.BodyLowerSideLeft = new ModelRenderer(this, 37, 0); - this.BodyLowerSideLeft.mirror = true; - this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); - this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); - this.LegDetailLeft = new ModelRenderer(this, 25, 20); - this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); - this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); - this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); - this.BodyDetailFront = new ModelRenderer(this, 8, 9); - this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); - this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); - this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); - this.EarM3 = new ModelRenderer(this, 36, 36); - this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); - this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.EarLB2 = new ModelRenderer(this, 116, 40); - this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); - this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); - this.BodyLDetail4 = new ModelRenderer(this, 36, 8); - this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); - this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); - this.theHeadDetail = new ModelRenderer(this, 78, 4); - this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); - this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); - this.BodyDetailBack = new ModelRenderer(this, 8, 9); - this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); - this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); - this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); - this.LegRightLower = new ModelRenderer(this, 52, 62); - this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); - this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); - this.BodyLDetail2 = new ModelRenderer(this, 36, 8); - this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); - this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); - this.EarLB3 = new ModelRenderer(this, 114, 46); - this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); - this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); - this.BodyLowerFront = new ModelRenderer(this, 33, 8); - this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); - this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); - this.theHeadDetailh = new ModelRenderer(this, 54, 12); - this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); - this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.ArmLeftFingerMid = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.ArmLeftLower = new ModelRenderer(this, 52, 62); + this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); + this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); this.theHeadDetail2h789 = new ModelRenderer(this, 54, 0); this.theHeadDetail2h789.setRotationPoint(0.0F, 0.0F, 3.0F); this.theHeadDetail2h789.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(theHeadDetail2h789, 0.6981317007977318F, 0.0F, 0.0F); - this.EarL1 = new ModelRenderer(this, 116, 5); - this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); - this.neckDetail = new ModelRenderer(this, 18, 3); - this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); - this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); - this.ArmLeftLowerDetail1 = new ModelRenderer(this, 40, 29); - this.ArmLeftLowerDetail1.mirror = true; - this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); - this.headBack1 = new ModelRenderer(this, 54, 16); - this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); - this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); - this.EarLB1 = new ModelRenderer(this, 116, 34); - this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); - this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarRB1 = new ModelRenderer(this, 21, 46); + this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); + this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); + this.theHeadDetail2e = new ModelRenderer(this, 78, 32); + this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); + this.EarL2_1 = new ModelRenderer(this, 118, 20); + this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); + this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.headBack11 = new ModelRenderer(this, 66, 16); + this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); + this.theHeadDetaile = new ModelRenderer(this, 78, 8); + this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); + this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); + this.EarL5 = new ModelRenderer(this, 116, 27); + this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); + this.ArmRightFingerMid = new ModelRenderer(this, 43, 13); + this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.Left_Wing_Overlay = new ModelRenderer(this, 136, 0); + this.Left_Wing_Overlay.mirror = true; + this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.headBack111 = new ModelRenderer(this, 79, 43); + this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); + this.LegRightFootDetail = new ModelRenderer(this, 34, 11); + this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.BodyLDetail1 = new ModelRenderer(this, 35, 11); + this.BodyLDetail1.mirror = true; + this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); + this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.ArmLeftFingersBig = new ModelRenderer(this, 0, 2); + this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); + this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); this.ArmRightHand = new ModelRenderer(this, 0, 2); this.ArmRightHand.mirror = true; this.ArmRightHand.setRotationPoint(0.0F, 6.0F, 0.0F); this.ArmRightHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(ArmRightHand, -0.296705972839036F, 1.5707963267948966F, 0.0F); - this.headfrontdetaila1_1 = new ModelRenderer(this, 54, 28); - this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); - this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.theHead = new ModelRenderer(this, 78, 0); + this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); + this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); this.LegLeft = new ModelRenderer(this, 22, 27); this.LegLeft.setRotationPoint(1.5F, 5.9F, 0.0F); this.LegLeft.addBox(0.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); this.setRotateAngle(LegLeft, -0.2617993877991494F, -0.2617993877991494F, -0.08726646259971647F); - this.EarRB1 = new ModelRenderer(this, 21, 46); - this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); - this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); - this.EarM5 = new ModelRenderer(this, 13, 43); - this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); - this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); - this.ArmLeftFingerfront = new ModelRenderer(this, 43, 13); - this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); - this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.LegDetailRight1 = new ModelRenderer(this, 16, 32); + this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); + this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); + this.LegDetailLeft = new ModelRenderer(this, 25, 20); + this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); + this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); + this.Tail_mid4 = new ModelRenderer(this, 60, 59); + this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); + this.LegLeftLowerDetail1 = new ModelRenderer(this, 25, 11); + this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.ArmLeftDetail11 = new ModelRenderer(this, 12, 28); + this.ArmLeftDetail11.mirror = true; + this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); + this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); + this.EarR2 = new ModelRenderer(this, 0, 49); + this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.EarlM1 = new ModelRenderer(this, 102, 58); + this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); + this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); + this.theHeadDetail2 = new ModelRenderer(this, 78, 28); + this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); + this.neckDetail2 = new ModelRenderer(this, 18, 3); + this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); + this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); + this.FF1 = new ModelRenderer(this, 83, 59); + this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); + this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); + this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLowerSideLeft = new ModelRenderer(this, 37, 0); + this.BodyLowerSideLeft.mirror = true; + this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); + this.LegLeftFootDetail = new ModelRenderer(this, 34, 9); + this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); this.Left_Wing = new ModelRenderer(this, 92, 0); this.Left_Wing.mirror = true; this.Left_Wing.setRotationPoint(-1.0F, -3.5F, 0.0F); this.Left_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); this.setRotateAngle(Left_Wing, -0.2792526803190927F, 0.0F, -0.02617993877991494F); - this.headfrontdetaila4_1 = new ModelRenderer(this, 66, 44); - this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); - this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); - this.ArmRight = new ModelRenderer(this, 0, 27); - this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); - this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); - this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); - this.LegDetaiLeft1 = new ModelRenderer(this, 22, 32); - this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); - this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); - this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); - this.BodyLDetail1 = new ModelRenderer(this, 35, 11); - this.BodyLDetail1.mirror = true; - this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); - this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); - this.theHeadDetail7999 = new ModelRenderer(this, 66, 20); - this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); - this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); - this.ArmRightFingerfront = new ModelRenderer(this, 43, 13); - this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); - this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); - this.LegLeftLowerDetail = new ModelRenderer(this, 37, 9); - this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); - this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); - this.EarlM1 = new ModelRenderer(this, 102, 58); - this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); - this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); - this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); - this.LegRight = new ModelRenderer(this, 16, 27); - this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); - this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); - this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); - this.theHeadDetail1e = new ModelRenderer(this, 78, 20); - this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); - this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); - this.theHeadDetail2h = new ModelRenderer(this, 54, 8); - this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); - this.LegLeftLowerDetail1 = new ModelRenderer(this, 25, 1); - this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); - this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); - this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.EarR1 = new ModelRenderer(this, 0, 44); + this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); + this.ArmRightFingersBig = new ModelRenderer(this, 0, 2); + this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); + this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); + this.FF2 = new ModelRenderer(this, 77, 60); + this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); + this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.LegLeftFoot = new ModelRenderer(this, 26, 11); + this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFoot, 0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.theHeadDetail1h = new ModelRenderer(this, 54, 4); + this.theHeadDetail1h.mirror = true; + this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); + this.FF4 = new ModelRenderer(this, 90, 62); + this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); + this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); + this.EarL3 = new ModelRenderer(this, 118, 15); + this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); + this.UpperBody = new ModelRenderer(this, 14, 0); + this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); + this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); + this.BodyDetailSideRight = new ModelRenderer(this, 9, 15); + this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); + this.headBack113 = new ModelRenderer(this, 79, 40); + this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); + this.headfrontdetaila5_1 = new ModelRenderer(this, 79, 49); + this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); + this.ArmRightLowerDetail1 = new ModelRenderer(this, 40, 29); + this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeft = new ModelRenderer(this, 0, 27); + this.ArmLeft.mirror = true; + this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); + this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); + this.LegDetailRight = new ModelRenderer(this, 19, 20); + this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); + this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); + this.ArmLeftLowerDetail1 = new ModelRenderer(this, 40, 29); + this.ArmLeftLowerDetail1.mirror = true; + this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.headfrontdetaila5 = new ModelRenderer(this, 79, 46); + this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); + this.EarM1 = new ModelRenderer(this, 10, 50); + this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); + this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); + this.Tail_end = new ModelRenderer(this, 56, 59); + this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.chek = new ModelRenderer(this, 65, 60); + this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); + this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); + this.ArmRightDetail12 = new ModelRenderer(this, 0, 18); + this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.LegRightFootDetail1 = new ModelRenderer(this, 34, 11); + this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); this.BodyLower = new ModelRenderer(this, 52, 62); this.BodyLower.setRotationPoint(0.0F, 0.0F, 0.0F); this.BodyLower.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.headBack111 = new ModelRenderer(this, 79, 43); - this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); - this.LegLeftFootDetail1 = new ModelRenderer(this, 24, 3); - this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); - this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.ArmLeftLowerDetail = new ModelRenderer(this, 35, 21); + this.ArmLeftLowerDetail.mirror = true; + this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmRightDetail11 = new ModelRenderer(this, 12, 28); + this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); + this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); + this.headBack = new ModelRenderer(this, 54, 24); + this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); + this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); + this.Tail_mid3 = new ModelRenderer(this, 60, 59); + this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); this.chek1 = new ModelRenderer(this, 65, 56); this.chek1.setRotationPoint(-0.5F, 0.0F, -1.0F); this.chek1.addBox(-2.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); this.setRotateAngle(chek1, 0.0F, 1.186823891356144F, 0.0F); - this.EarRB2Detail = new ModelRenderer(this, 30, 37); - this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); - this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); - this.headtop = new ModelRenderer(this, 66, 0); - this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); - this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); - this.headBack113 = new ModelRenderer(this, 79, 40); - this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); this.ArmLeftDetail12 = new ModelRenderer(this, 0, 18); this.ArmLeftDetail12.mirror = true; this.ArmLeftDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); this.ArmLeftDetail12.addBox(-1.0F, 0.0F, -1.02F, 1, 7, 1, 0.0F); this.setRotateAngle(ArmLeftDetail12, -0.14486232791552936F, 0.0F, 0.0F); - this.Right_Wing_Overlay = new ModelRenderer(this, 136, 0); - this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.EarL2 = new ModelRenderer(this, 118, 10); - this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); - this.ArmLeftFingerMid = new ModelRenderer(this, 43, 13); - this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); - this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); - this.ArmRightDetail11 = new ModelRenderer(this, 12, 28); - this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); - this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); - this.headfrontdetaila5_1 = new ModelRenderer(this, 79, 49); - this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); - this.EarLB2Detail = new ModelRenderer(this, 120, 61); - this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); - this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); - this.theHeadDetail1h = new ModelRenderer(this, 54, 4); - this.theHeadDetail1h.mirror = true; - this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); - this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); - this.neckDetail2 = new ModelRenderer(this, 18, 3); - this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); - this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); - this.LegLeftFoot = new ModelRenderer(this, 20, 22); - this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); - this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFoot, -0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.EarM3 = new ModelRenderer(this, 36, 36); + this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.EarML3 = new ModelRenderer(this, 116, 53); + this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); + this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.Tail_mid1 = new ModelRenderer(this, 60, 59); + this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); + this.LegRightFoot = new ModelRenderer(this, 34, 8); + this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); + this.ArmLeftFingerfront = new ModelRenderer(this, 43, 13); + this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.ArmRightDetail = new ModelRenderer(this, 8, 23); + this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); + this.headfrontdetaila1 = new ModelRenderer(this, 54, 20); + this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); + this.ArmRightFingerback = new ModelRenderer(this, 43, 13); + this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.Tail_mid2 = new ModelRenderer(this, 60, 59); + this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); this.ArmRightLower = new ModelRenderer(this, 52, 62); this.ArmRightLower.setRotationPoint(0.5F, 8.0F, -0.5F); this.ArmRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(ArmRightLower, -0.5235987755982988F, 0.0F, 0.0F); - this.EarL2_1 = new ModelRenderer(this, 118, 20); - this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); - this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); - this.ArmLeftFingersBig = new ModelRenderer(this, 0, 2); - this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); - this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); - this.ArmRightFingerMid = new ModelRenderer(this, 43, 13); - this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); - this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); - this.FF2 = new ModelRenderer(this, 77, 60); - this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); - this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.EarRB3 = new ModelRenderer(this, 22, 36); + this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); + this.theHeadDetail7999 = new ModelRenderer(this, 66, 20); + this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); + this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); + this.LegLeftFootDetail2 = new ModelRenderer(this, 37, 11); + this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); + this.theHeadDetail2h = new ModelRenderer(this, 54, 8); + this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); + this.EarLB2Detail = new ModelRenderer(this, 120, 61); + this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); this.ArmRightLowerDetail = new ModelRenderer(this, 35, 21); this.ArmRightLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); this.ArmRightLowerDetail.addBox(-0.5F, 0.0F, -0.77F, 1, 6, 1, 0.0F); this.setRotateAngle(ArmRightLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.Right_Wing_Overlay = new ModelRenderer(this, 136, 0); + this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.EarM5 = new ModelRenderer(this, 13, 43); + this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); this.ArmLeftDetail1 = new ModelRenderer(this, 32, 28); this.ArmLeftDetail1.mirror = true; this.ArmLeftDetail1.setRotationPoint(-1.75F, 1.0F, 0.0F); this.ArmLeftDetail1.addBox(0.0F, 0.0F, -0.98F, 1, 7, 1, 0.0F); this.setRotateAngle(ArmLeftDetail1, 0.0F, 0.0F, -0.1117010721276371F); - this.ArmLeftLower = new ModelRenderer(this, 52, 62); - this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); - this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); - this.FF3 = new ModelRenderer(this, 71, 60); - this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); - this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); - this.LegRightFootDetail1 = new ModelRenderer(this, 34, 11); - this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); - this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); - this.ArmRightDetail12 = new ModelRenderer(this, 0, 18); - this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); - this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); - this.LegRightFoot.addChild(this.LegRightFootDetail2); - this.ArmLeft.addChild(this.ArmLeftDetail11); - this.theHeadDetail7999.addChild(this.theHeadDetail2e768); - this.EarRB1.addChild(this.EarM1); - this.ArmRightLower.addChild(this.ArmRightLowerDetail1); - this.theHead.addChild(this.FF1); + this.BodyLDetail2 = new ModelRenderer(this, 43, 0); + this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); + this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.theHeadDetail = new ModelRenderer(this, 78, 4); + this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); + this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); + this.BodyLowerFront = new ModelRenderer(this, 33, 8); + this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); + this.theHeadDetail2e768 = new ModelRenderer(this, 66, 24); + this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); + this.ArmLeftDetail = new ModelRenderer(this, 8, 23); + this.ArmLeftDetail.mirror = true; + this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); + this.LegDetaiLeft1 = new ModelRenderer(this, 22, 32); + this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); + this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); + this.ArmLeftHand = new ModelRenderer(this, 0, 2); + this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); + this.LegRight = new ModelRenderer(this, 16, 27); + this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); + this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); + this.EarLB2 = new ModelRenderer(this, 116, 40); + this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); + this.neckDetail4 = new ModelRenderer(this, 18, 6); + this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); + this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.LegRightFootDetail2 = new ModelRenderer(this, 37, 11); + this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); + this.LegLeftFootDetail1 = new ModelRenderer(this, 34, 10); + this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.EarLeft = new ModelRenderer(this, 118, 0); + this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); + this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); + this.BodyLower.addChild(this.BodyLowerBack); + this.UpperBody.addChild(this.BodyDetailFront); + this.ArmRight.addChild(this.Right_Wing); + this.BodyLower.addChild(this.BodyLDetail); + this.EarRB2.addChild(this.EarRB2Detail); + this.UpperBody.addChild(this.neckDetail); + this.UpperBody.addChild(this.neckDetail3); + this.Body.addChild(this.ArmRight); + this.theHead.addChild(this.headtop); + this.EarL1.addChild(this.EarL2); + this.ArmLeftHand.addChild(this.ArmLeftFingerback); + this.theHeadDetaile.addChild(this.theHeadDetailh); + this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); + this.ArmRightHand.addChild(this.ArmRightFingerfront); + this.EarLB2.addChild(this.EarLB3); + this.EarR2.addChild(this.EarR3); this.headBack.addChild(this.headBack2); + this.Body.addChild(this.Neck); + this.theHeadDetail1.addChild(this.theHeadDetail1e); + this.LegRightLower.addChild(this.LegRightLowerDetail1); + this.EarRB2Detail.addChild(this.EarRB2Detaildetail); + this.EarLB2Detail.addChild(this.EarLB2Detaildetail); + this.LegLeftLower.addChild(this.LegLeftLowerDetail); + this.UpperBody.addChild(this.BodyDetailSideLeft); + this.EarR1.addChild(this.EarM2); + this.EarLeft.addChild(this.EarL1); + this.theHead.addChild(this.headBack1); + this.BodyLower.addChild(this.Tail_start); + this.FF1.addChild(this.FF3); + this.BodyLower.addChild(this.BodyLDetail4); + this.BodyLower.addChild(this.BodyLowerSideRight); + this.theHead.addChild(this.headfrontdetaila1_1); + this.ArmRight.addChild(this.ArmRightDetail1); + this.LegLeft.addChild(this.LegLeftLower); + this.UpperBody.addChild(this.BodyDetailBack); + this.LegRight.addChild(this.LegRightLower); + this.LegRightLower.addChild(this.LegRightLowerDetail); + this.EarLeft.addChild(this.EarLB1); this.EarRB1.addChild(this.EarRB2); this.theHead.addChild(this.EarRight); - this.theHeadDetail.addChild(this.theHeadDetaile); + this.theHead.addChild(this.theHeadDetail1); + this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.ArmLeftHand.addChild(this.ArmLeftFingerMid); + this.ArmLeft.addChild(this.ArmLeftLower); + this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); + this.EarRight.addChild(this.EarRB1); + this.theHeadDetail2.addChild(this.theHeadDetail2e); + this.EarL1.addChild(this.EarL2_1); this.headBack1.addChild(this.headBack11); - this.EarRB2.addChild(this.EarRB3); - this.Neck.addChild(this.theHead); - this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.theHeadDetail.addChild(this.theHeadDetaile); this.EarL2_1.addChild(this.EarL5); - this.Tail_mid4.addChild(this.Tail_end); - this.EarRB2Detail.addChild(this.EarRB2Detaildetail); - this.LegRightLower.addChild(this.LegRightLowerDetail); - this.EarR1.addChild(this.EarR2); - this.UpperBody.addChild(this.BodyDetailSideLeft); - this.theHead.addChild(this.EarLeft); + this.ArmRightHand.addChild(this.ArmRightFingerMid); + this.Left_Wing.addChild(this.Left_Wing_Overlay); + this.headBack11.addChild(this.headBack111); + this.LegRightFoot.addChild(this.LegRightFootDetail); + this.BodyLower.addChild(this.BodyLDetail1); + this.ArmLeftHand.addChild(this.ArmLeftFingersBig); + this.ArmRightLower.addChild(this.ArmRightHand); + this.Neck.addChild(this.theHead); + this.BodyLower.addChild(this.LegLeft); + this.LegRight.addChild(this.LegDetailRight1); + this.LegLeft.addChild(this.LegDetailLeft); this.Tail_mid3.addChild(this.Tail_mid4); - this.ArmLeftLower.addChild(this.ArmLeftHand); + this.LegLeftLower.addChild(this.LegLeftLowerDetail1); + this.ArmLeft.addChild(this.ArmLeftDetail11); + this.EarR1.addChild(this.EarR2); + this.EarLB1.addChild(this.EarlM1); this.theHead.addChild(this.theHeadDetail2); - this.LegRightFoot.addChild(this.LegRightFootDetail); - this.FF1.addChild(this.FF4); - this.UpperBody.addChild(this.neckDetail4); - this.BodyLower.addChild(this.Tail_start); - this.LegLeft.addChild(this.LegLeftLower); - this.theHead.addChild(this.theHeadDetail1); - this.EarLB3.addChild(this.EarML3); + this.UpperBody.addChild(this.neckDetail2); + this.theHead.addChild(this.FF1); + this.BodyLower.addChild(this.BodyLowerSideLeft); this.LegLeftFoot.addChild(this.LegLeftFootDetail); + this.ArmLeft.addChild(this.Left_Wing); this.EarRight.addChild(this.EarR1); - this.Tail_mid1.addChild(this.Tail_mid2); - this.Tail_start.addChild(this.Tail_mid1); - this.BodyLower.addChild(this.BodyLowerBack); - this.ArmRightHand.addChild(this.ArmRightFingerback); this.ArmRightHand.addChild(this.ArmRightFingersBig); - this.theHeadDetail2.addChild(this.theHeadDetail2e); - this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); - this.ArmLeftHand.addChild(this.ArmLeftFingerback); - this.LegRightLower.addChild(this.LegRightLowerDetail1); - this.theHead.addChild(this.headBack); - this.Body.addChild(this.UpperBody); - this.BodyLower.addChild(this.BodyLowerSideRight); - this.Body.addChild(this.Neck); - this.Tail_mid2.addChild(this.Tail_mid3); + this.FF1.addChild(this.FF2); + this.LegLeftLower.addChild(this.LegLeftFoot); + this.theHeadDetail1e.addChild(this.theHeadDetail1h); + this.FF1.addChild(this.FF4); this.EarL2.addChild(this.EarL3); - this.Left_Wing.addChild(this.Left_Wing_Overlay); - this.ArmLeft.addChild(this.ArmLeftDetail); - this.ArmRight.addChild(this.Right_Wing); - this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.Body.addChild(this.UpperBody); this.UpperBody.addChild(this.BodyDetailSideRight); + this.headBack2.addChild(this.headBack113); + this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); + this.ArmRightLower.addChild(this.ArmRightLowerDetail1); + this.Body.addChild(this.ArmLeft); + this.LegRight.addChild(this.LegDetailRight); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); + this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.EarRB1.addChild(this.EarM1); + this.Tail_mid4.addChild(this.Tail_end); this.FF1.addChild(this.chek); + this.ArmRight.addChild(this.ArmRightDetail12); + this.LegRightFoot.addChild(this.LegRightFootDetail1); + this.Body.addChild(this.BodyLower); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); + this.ArmRight.addChild(this.ArmRightDetail11); + this.theHead.addChild(this.headBack); + this.Tail_mid2.addChild(this.Tail_mid3); + this.FF1.addChild(this.chek1); + this.ArmLeft.addChild(this.ArmLeftDetail12); + this.EarRB3.addChild(this.EarM3); + this.EarLB3.addChild(this.EarML3); + this.Tail_start.addChild(this.Tail_mid1); this.LegRightLower.addChild(this.LegRightFoot); - this.Body.addChild(this.ArmLeft); + this.ArmLeftHand.addChild(this.ArmLeftFingerfront); this.ArmRight.addChild(this.ArmRightDetail); - this.ArmRight.addChild(this.ArmRightDetail1); this.theHead.addChild(this.headfrontdetaila1); - this.EarR1.addChild(this.EarM2); - this.LegRight.addChild(this.LegDetailRight1); + this.ArmRightHand.addChild(this.ArmRightFingerback); + this.Tail_mid1.addChild(this.Tail_mid2); + this.ArmRight.addChild(this.ArmRightLower); + this.EarRB2.addChild(this.EarRB3); + this.theHead.addChild(this.theHeadDetail7999); this.LegLeftFoot.addChild(this.LegLeftFootDetail2); - this.LegRight.addChild(this.LegDetailRight); - this.UpperBody.addChild(this.neckDetail3); - this.BodyLower.addChild(this.BodyLDetail); - this.EarLB2Detail.addChild(this.EarLB2Detaildetail); - this.EarR2.addChild(this.EarR3); - this.BodyLower.addChild(this.BodyLowerSideLeft); - this.LegLeft.addChild(this.LegDetailLeft); - this.UpperBody.addChild(this.BodyDetailFront); - this.EarRB3.addChild(this.EarM3); - this.EarLB1.addChild(this.EarLB2); - this.BodyLower.addChild(this.BodyLDetail4); - this.theHead.addChild(this.theHeadDetail); - this.UpperBody.addChild(this.BodyDetailBack); - this.LegRight.addChild(this.LegRightLower); + this.theHeadDetail2e.addChild(this.theHeadDetail2h); + this.EarLB2.addChild(this.EarLB2Detail); + this.ArmRightLower.addChild(this.ArmRightLowerDetail); + this.Right_Wing.addChild(this.Right_Wing_Overlay); + this.EarM2.addChild(this.EarM5); + this.ArmLeft.addChild(this.ArmLeftDetail1); this.BodyLower.addChild(this.BodyLDetail2); - this.EarLB2.addChild(this.EarLB3); + this.theHead.addChild(this.theHeadDetail); this.BodyLower.addChild(this.BodyLowerFront); - this.theHeadDetaile.addChild(this.theHeadDetailh); - this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); - this.EarLeft.addChild(this.EarL1); - this.UpperBody.addChild(this.neckDetail); - this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); - this.theHead.addChild(this.headBack1); - this.EarLeft.addChild(this.EarLB1); - this.ArmRightLower.addChild(this.ArmRightHand); - this.theHead.addChild(this.headfrontdetaila1_1); - this.BodyLower.addChild(this.LegLeft); - this.EarRight.addChild(this.EarRB1); - this.EarM2.addChild(this.EarM5); - this.ArmLeftHand.addChild(this.ArmLeftFingerfront); - this.ArmLeft.addChild(this.Left_Wing); - this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); - this.Body.addChild(this.ArmRight); + this.theHeadDetail7999.addChild(this.theHeadDetail2e768); + this.ArmLeft.addChild(this.ArmLeftDetail); this.LegLeft.addChild(this.LegDetaiLeft1); - this.BodyLower.addChild(this.BodyLDetail1); - this.theHead.addChild(this.theHeadDetail7999); - this.ArmRightHand.addChild(this.ArmRightFingerfront); - this.LegLeftLower.addChild(this.LegLeftLowerDetail); - this.EarLB1.addChild(this.EarlM1); + this.ArmLeftLower.addChild(this.ArmLeftHand); this.BodyLower.addChild(this.LegRight); - this.theHeadDetail1.addChild(this.theHeadDetail1e); - this.theHeadDetail2e.addChild(this.theHeadDetail2h); - this.LegLeftLower.addChild(this.LegLeftLowerDetail1); - this.Body.addChild(this.BodyLower); - this.headBack11.addChild(this.headBack111); + this.EarLB1.addChild(this.EarLB2); + this.UpperBody.addChild(this.neckDetail4); + this.LegRightFoot.addChild(this.LegRightFootDetail2); this.LegLeftFoot.addChild(this.LegLeftFootDetail1); - this.FF1.addChild(this.chek1); - this.EarRB2.addChild(this.EarRB2Detail); - this.theHead.addChild(this.headtop); - this.headBack2.addChild(this.headBack113); - this.ArmLeft.addChild(this.ArmLeftDetail12); - this.Right_Wing.addChild(this.Right_Wing_Overlay); - this.EarL1.addChild(this.EarL2); - this.ArmLeftHand.addChild(this.ArmLeftFingerMid); - this.ArmRight.addChild(this.ArmRightDetail11); - this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); - this.EarLB2.addChild(this.EarLB2Detail); - this.theHeadDetail1e.addChild(this.theHeadDetail1h); - this.UpperBody.addChild(this.neckDetail2); - this.LegLeftLower.addChild(this.LegLeftFoot); - this.ArmRight.addChild(this.ArmRightLower); - this.EarL1.addChild(this.EarL2_1); - this.ArmLeftHand.addChild(this.ArmLeftFingersBig); - this.ArmRightHand.addChild(this.ArmRightFingerMid); - this.FF1.addChild(this.FF2); - this.ArmRightLower.addChild(this.ArmRightLowerDetail); - this.ArmLeft.addChild(this.ArmLeftDetail1); - this.ArmLeft.addChild(this.ArmLeftLower); - this.FF1.addChild(this.FF3); - this.LegRightFoot.addChild(this.LegRightFootDetail1); - this.ArmRight.addChild(this.ArmRightDetail12); + this.theHead.addChild(this.EarLeft); } @Override @@ -848,10 +848,10 @@ public void render(Entity entityIn, float limbSwing, float limbSwingAmount, floa } } - public void setRotateAngle(ModelRenderer AdvancedModelRenderer, float x, float y, float z) { - AdvancedModelRenderer.rotateAngleX = x; - AdvancedModelRenderer.rotateAngleY = y; - AdvancedModelRenderer.rotateAngleZ = z; + public void setRotateAngle(ModelRenderer ModelRenderer, float x, float y, float z) { + ModelRenderer.rotateAngleX = x; + ModelRenderer.rotateAngleY = y; + ModelRenderer.rotateAngleZ = z; } public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java index 413e37d19a..d377ec1c16 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java @@ -159,673 +159,673 @@ public class ModelLlibraryLemur extends AdvancedModelBase { public ModelLlibraryLemur() { this.textureWidth = 160; this.textureHeight = 64; - this.LegRightFootDetail2 = new AdvancedModelRenderer(this, 37, 11); - this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); - this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); - this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); - this.ArmLeftDetail11 = new AdvancedModelRenderer(this, 12, 28); - this.ArmLeftDetail11.mirror = true; - this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); - this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); - this.theHeadDetail2e768 = new AdvancedModelRenderer(this, 66, 24); - this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); - this.EarM1 = new AdvancedModelRenderer(this, 10, 50); - this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); - this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); - this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); - this.ArmRightLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); - this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); - this.FF1 = new AdvancedModelRenderer(this, 83, 59); - this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); - this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); - this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLowerBack = new AdvancedModelRenderer(this, 24, 0); + this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); + this.BodyDetailFront = new AdvancedModelRenderer(this, 8, 9); + this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); + this.Right_Wing = new AdvancedModelRenderer(this, 92, 0); + this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); + this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); + this.BodyLDetail = new AdvancedModelRenderer(this, 35, 11); + this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); + this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.EarRB2Detail = new AdvancedModelRenderer(this, 30, 37); + this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); + this.Body = new AdvancedModelRenderer(this, 0, 0); + this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); + this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); + this.neckDetail = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); + this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); + this.neckDetail3 = new AdvancedModelRenderer(this, 18, 6); + this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); + this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); + this.ArmRight = new AdvancedModelRenderer(this, 0, 27); + this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); + this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); + this.headtop = new AdvancedModelRenderer(this, 66, 0); + this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); + this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); + this.EarL2 = new AdvancedModelRenderer(this, 118, 10); + this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); + this.ArmLeftFingerback = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.theHeadDetailh = new AdvancedModelRenderer(this, 54, 12); + this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); + this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.headfrontdetaila4_1 = new AdvancedModelRenderer(this, 66, 44); + this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); + this.ArmRightFingerfront = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); + this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); + this.EarLB3 = new AdvancedModelRenderer(this, 114, 46); + this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); + this.EarR3 = new AdvancedModelRenderer(this, 6, 36); + this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); this.headBack2 = new AdvancedModelRenderer(this, 66, 8); this.headBack2.setRotationPoint(0.0F, 0.0F, 2.6F); this.headBack2.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(headBack2, 0.7312929565856241F, 0.0F, 0.0F); - this.EarRB2 = new AdvancedModelRenderer(this, 16, 36); - this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); - this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); - this.EarRight = new AdvancedModelRenderer(this, 0, 39); - this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); - this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); - this.theHeadDetaile = new AdvancedModelRenderer(this, 78, 8); - this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); - this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); - this.headBack11 = new AdvancedModelRenderer(this, 66, 16); - this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); - this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); - this.EarRB3 = new AdvancedModelRenderer(this, 22, 36); - this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); - this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); - this.theHead = new AdvancedModelRenderer(this, 78, 0); - this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); - this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); - this.headfrontdetaila5 = new AdvancedModelRenderer(this, 79, 46); - this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); - this.EarL5 = new AdvancedModelRenderer(this, 116, 27); - this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); - this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); - this.Tail_end = new AdvancedModelRenderer(this, 56, 59); - this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.Neck = new AdvancedModelRenderer(this, 8, 12); + this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); + this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); + this.theHeadDetail1e = new AdvancedModelRenderer(this, 78, 20); + this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); + this.LegRightLowerDetail1 = new AdvancedModelRenderer(this, 34, 10); + this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); this.EarRB2Detaildetail = new AdvancedModelRenderer(this, 30, 45); this.EarRB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); this.EarRB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); this.setRotateAngle(EarRB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); - this.LegRightLowerDetail = new AdvancedModelRenderer(this, 34, 9); - this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); - this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); - this.EarR2 = new AdvancedModelRenderer(this, 0, 49); - this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.EarLB2Detaildetail = new AdvancedModelRenderer(this, 112, 61); + this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); + this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); + this.LegLeftLowerDetail = new AdvancedModelRenderer(this, 37, 9); + this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); this.BodyDetailSideLeft = new AdvancedModelRenderer(this, 15, 15); this.BodyDetailSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); this.BodyDetailSideLeft.addBox(-1.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); this.setRotateAngle(BodyDetailSideLeft, 0.0F, 0.0F, -0.5235987755982988F); - this.EarLeft = new AdvancedModelRenderer(this, 118, 0); - this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); - this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); - this.Tail_mid4 = new AdvancedModelRenderer(this, 60, 59); - this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); - this.ArmLeftHand = new AdvancedModelRenderer(this, 0, 2); - this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); - this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); - this.theHeadDetail2 = new AdvancedModelRenderer(this, 78, 28); - this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); - this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); - this.LegRightFootDetail = new AdvancedModelRenderer(this, 34, 11); - this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); - this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); - this.FF4 = new AdvancedModelRenderer(this, 90, 62); - this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); - this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); - this.neckDetail4 = new AdvancedModelRenderer(this, 18, 3); - this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); - this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.EarM2 = new AdvancedModelRenderer(this, 8, 41); + this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); + this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.EarL1 = new AdvancedModelRenderer(this, 116, 5); + this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); + this.headBack1 = new AdvancedModelRenderer(this, 54, 16); + this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); this.Tail_start = new AdvancedModelRenderer(this, 60, 59); this.Tail_start.setRotationPoint(0.0F, 5.5F, 1.0F); this.Tail_start.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); this.setRotateAngle(Tail_start, 0.22183134792847928F, 0.0F, 0.0F); + this.FF3 = new AdvancedModelRenderer(this, 71, 60); + this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); + this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); + this.BodyLDetail4 = new AdvancedModelRenderer(this, 43, 0); + this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); + this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); + this.BodyLowerSideRight = new AdvancedModelRenderer(this, 37, 0); + this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); + this.headfrontdetaila1_1 = new AdvancedModelRenderer(this, 54, 28); + this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); + this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.ArmRightDetail1 = new AdvancedModelRenderer(this, 32, 28); + this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); + this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); this.LegLeftLower = new AdvancedModelRenderer(this, 52, 62); this.LegLeftLower.setRotationPoint(0.5F, 5.2F, 0.0F); this.LegLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(LegLeftLower, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyDetailBack = new AdvancedModelRenderer(this, 8, 9); + this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); + this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); + this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); + this.LegRightLower = new AdvancedModelRenderer(this, 52, 62); + this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); + this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); + this.LegRightLowerDetail = new AdvancedModelRenderer(this, 34, 9); + this.LegRightLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); + this.LegRightLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); + this.EarLB1 = new AdvancedModelRenderer(this, 116, 34); + this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); + this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarRB2 = new AdvancedModelRenderer(this, 16, 36); + this.EarRB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarRB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB2, -0.4363323129985824F, 0.3490658503988659F, 0.0F); + this.EarRight = new AdvancedModelRenderer(this, 0, 39); + this.EarRight.setRotationPoint(-1.0F, -6.0F, 1.0F); + this.EarRight.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarRight, -0.2617993877991494F, -0.6108652381980153F, 0.0F); this.theHeadDetail1 = new AdvancedModelRenderer(this, 78, 16); this.theHeadDetail1.setRotationPoint(-1.5F, 0.0F, -1.5F); this.theHeadDetail1.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(theHeadDetail1, 0.0F, 0.0F, 0.7853981633974483F); - this.EarML3 = new AdvancedModelRenderer(this, 116, 53); - this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); - this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.LegLeftFootDetail = new AdvancedModelRenderer(this, 22, 22); - this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); - this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); - this.EarR1 = new AdvancedModelRenderer(this, 0, 44); - this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); - this.Tail_mid2 = new AdvancedModelRenderer(this, 60, 59); - this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); - this.Tail_mid1 = new AdvancedModelRenderer(this, 60, 59); - this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); - this.Body = new AdvancedModelRenderer(this, 0, 0); - this.Body.setRotationPoint(0.0F, 7.5F, 0.0F); - this.Body.addBox(-2.5F, -5.0F, -2.0F, 5, 5, 4, 0.0F); - this.BodyLowerBack = new AdvancedModelRenderer(this, 24, -1); - this.BodyLowerBack.setRotationPoint(0.0F, 0.0F, 2.0F); - this.BodyLowerBack.addBox(-1.5F, 0.0F, -2.0F, 3, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerBack, -0.12217304763960307F, 0.0F, 0.0F); - this.ArmRightFingerback = new AdvancedModelRenderer(this, 43, 13); - this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); - this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); - this.ArmRightFingersBig = new AdvancedModelRenderer(this, 0, 2); - this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); - this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); - this.theHeadDetail2e = new AdvancedModelRenderer(this, 78, 32); - this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); - this.ArmLeftLowerDetail = new AdvancedModelRenderer(this, 35, 21); - this.ArmLeftLowerDetail.mirror = true; - this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); - this.ArmLeftFingerback = new AdvancedModelRenderer(this, 43, 13); - this.ArmLeftFingerback.setRotationPoint(0.5F, 0.5F, 0.5F); - this.ArmLeftFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerback, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); - this.LegRightLowerDetail1 = new AdvancedModelRenderer(this, 34, 10); - this.LegRightLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); - this.LegRightLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); - this.setRotateAngle(LegRightLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); - this.headBack = new AdvancedModelRenderer(this, 54, 24); - this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); - this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); - this.UpperBody = new AdvancedModelRenderer(this, 14, 0); - this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); - this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); - this.BodyLowerSideRight = new AdvancedModelRenderer(this, 37, 0); - this.BodyLowerSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); - this.BodyLowerSideRight.addBox(0.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerSideRight, 0.0F, 0.0F, -0.13962634015954636F); - this.Neck = new AdvancedModelRenderer(this, 8, 12); - this.Neck.setRotationPoint(0.0F, -5.75F, 0.0F); - this.Neck.addBox(-1.5F, -2.0F, -1.0F, 3, 1, 2, 0.0F); - this.Tail_mid3 = new AdvancedModelRenderer(this, 60, 59); - this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); - this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); - this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); - this.EarL3 = new AdvancedModelRenderer(this, 118, 15); - this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); - this.Left_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); - this.Left_Wing_Overlay.mirror = true; - this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.ArmLeftDetail = new AdvancedModelRenderer(this, 8, 23); - this.ArmLeftDetail.mirror = true; - this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); - this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); - this.Right_Wing = new AdvancedModelRenderer(this, 92, 0); - this.Right_Wing.setRotationPoint(0.0F, -3.5F, 0.0F); - this.Right_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.setRotateAngle(Right_Wing, -0.2792526803190927F, 0.0F, 0.02617993877991494F); this.headfrontdetaila4 = new AdvancedModelRenderer(this, 66, 36); this.headfrontdetaila4.setRotationPoint(0.0F, 0.0F, 2.6F); this.headfrontdetaila4.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(headfrontdetaila4, 0.7312929565856241F, 0.0F, 0.0F); - this.BodyDetailSideRight = new AdvancedModelRenderer(this, 9, 15); - this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); - this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); - this.chek = new AdvancedModelRenderer(this, 65, 60); - this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); - this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); - this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); - this.LegRightFoot = new AdvancedModelRenderer(this, 34, 8); - this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); - this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); - this.ArmLeft = new AdvancedModelRenderer(this, 0, 27); - this.ArmLeft.mirror = true; - this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); - this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); - this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); - this.ArmRightDetail = new AdvancedModelRenderer(this, 8, 23); - this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); - this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); - this.ArmRightDetail1 = new AdvancedModelRenderer(this, 32, 28); - this.ArmRightDetail1.setRotationPoint(1.75F, 1.0F, 0.0F); - this.ArmRightDetail1.addBox(-1.0F, 0.0F, -1.0F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail1, 0.0F, 0.0F, 0.1117010721276371F); - this.headfrontdetaila1 = new AdvancedModelRenderer(this, 54, 20); - this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); - this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); - this.EarM2 = new AdvancedModelRenderer(this, 8, 41); - this.EarM2.setRotationPoint(1.0F, -1.0F, 0.0F); - this.EarM2.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); - this.LegDetailRight1 = new AdvancedModelRenderer(this, 16, 32); - this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); - this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); - this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); - this.LegLeftFootDetail2 = new AdvancedModelRenderer(this, 37, 11); - this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); - this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); - this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); - this.LegDetailRight = new AdvancedModelRenderer(this, 19, 20); - this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); - this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); - this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); - this.neckDetail3 = new AdvancedModelRenderer(this, 18, 3); - this.neckDetail3.setRotationPoint(2.0F, 0.0F, 1.5F); - this.neckDetail3.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail3, -0.3839724354387525F, -2.356194490192345F, 0.0F); - this.BodyLDetail = new AdvancedModelRenderer(this, 35, 11); - this.BodyLDetail.setRotationPoint(-2.5F, 0.0F, -2.0F); - this.BodyLDetail.addBox(0.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail, 0.12217304763960307F, 0.0F, -0.13788101090755206F); - this.EarLB2Detaildetail = new AdvancedModelRenderer(this, 112, 61); - this.EarLB2Detaildetail.setRotationPoint(0.0F, -1.0F, 2.5F); - this.EarLB2Detaildetail.addBox(0.0F, 0.0F, -2.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarLB2Detaildetail, -0.4557054676957194F, 0.0F, 0.0F); - this.EarR3 = new AdvancedModelRenderer(this, 6, 36); - this.EarR3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarR3.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarR3, 0.4363323129985824F, 0.0F, 0.0F); - this.BodyLowerSideLeft = new AdvancedModelRenderer(this, 37, 0); - this.BodyLowerSideLeft.mirror = true; - this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); - this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); - this.LegDetailLeft = new AdvancedModelRenderer(this, 25, 20); - this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); - this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); - this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); - this.BodyDetailFront = new AdvancedModelRenderer(this, 8, 9); - this.BodyDetailFront.setRotationPoint(0.0F, 0.0F, -2.0F); - this.BodyDetailFront.addBox(-1.5F, -2.0F, 0.0F, 3, 2, 1, 0.0F); - this.setRotateAngle(BodyDetailFront, -0.5235987755982988F, 0.0F, 0.0F); - this.EarM3 = new AdvancedModelRenderer(this, 36, 36); - this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); - this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.EarLB2 = new AdvancedModelRenderer(this, 116, 40); - this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); - this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); - this.BodyLDetail4 = new AdvancedModelRenderer(this, 36, 8); - this.BodyLDetail4.setRotationPoint(-2.5F, 0.0F, 2.0F); - this.BodyLDetail4.addBox(0.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail4, -0.12217304763960307F, 0.0F, -0.13788101090755206F); - this.theHeadDetail = new AdvancedModelRenderer(this, 78, 4); - this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); - this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); - this.BodyDetailBack = new AdvancedModelRenderer(this, 8, 9); - this.BodyDetailBack.setRotationPoint(0.0F, 0.0F, 2.0F); - this.BodyDetailBack.addBox(-1.5F, -2.0F, -1.0F, 3, 2, 1, 0.0F); - this.setRotateAngle(BodyDetailBack, 0.5235987755982988F, 0.0F, 0.0F); - this.LegRightLower = new AdvancedModelRenderer(this, 52, 62); - this.LegRightLower.setRotationPoint(-0.5F, 5.2F, 0.0F); - this.LegRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(LegRightLower, 0.3490658503988659F, 0.0F, 0.0F); - this.BodyLDetail2 = new AdvancedModelRenderer(this, 36, 8); - this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); - this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); - this.EarLB3 = new AdvancedModelRenderer(this, 114, 46); - this.EarLB3.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarLB3.addBox(0.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); - this.setRotateAngle(EarLB3, -0.1223475805648025F, 0.3490658503988659F, 0.0F); - this.BodyLowerFront = new AdvancedModelRenderer(this, 33, 8); - this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); - this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); - this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); - this.theHeadDetailh = new AdvancedModelRenderer(this, 54, 12); - this.theHeadDetailh.setRotationPoint(3.0F, 0.0F, 0.0F); - this.theHeadDetailh.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetailh, 0.0F, 0.0F, -0.6981317007977318F); + this.ArmLeftFingerMid = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.ArmLeftLower = new AdvancedModelRenderer(this, 52, 62); + this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); + this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); this.theHeadDetail2h789 = new AdvancedModelRenderer(this, 54, 0); this.theHeadDetail2h789.setRotationPoint(0.0F, 0.0F, 3.0F); this.theHeadDetail2h789.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); this.setRotateAngle(theHeadDetail2h789, 0.6981317007977318F, 0.0F, 0.0F); - this.EarL1 = new AdvancedModelRenderer(this, 116, 5); - this.EarL1.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); - this.setRotateAngle(EarL1, 0.6108652381980153F, 0.0F, 0.0F); - this.neckDetail = new AdvancedModelRenderer(this, 18, 3); - this.neckDetail.setRotationPoint(-2.0F, -0.0F, -1.5F); - this.neckDetail.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail, -0.3839724354387525F, 0.7853981633974483F, 0.0F); - this.ArmLeftLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); - this.ArmLeftLowerDetail1.mirror = true; - this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); - this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); - this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); - this.headBack1 = new AdvancedModelRenderer(this, 54, 16); - this.headBack1.setRotationPoint(-1.5F, 0.0F, 1.5F); - this.headBack1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headBack1, 0.9599310885968813F, -0.7853981633974483F, 0.0F); - this.EarLB1 = new AdvancedModelRenderer(this, 116, 34); - this.EarLB1.setRotationPoint(1.0F, -0.2F, -0.4F); - this.EarLB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarLB1, 1.2217304763960306F, 0.0F, 0.0F); + this.EarRB1 = new AdvancedModelRenderer(this, 21, 46); + this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); + this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); + this.theHeadDetail2e = new AdvancedModelRenderer(this, 78, 32); + this.theHeadDetail2e.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e, 0.9599310885968813F, 0.0F, 0.0F); + this.EarL2_1 = new AdvancedModelRenderer(this, 118, 20); + this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); + this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); + this.headBack11 = new AdvancedModelRenderer(this, 66, 16); + this.headBack11.setRotationPoint(0.0F, 0.0F, 2.6F); + this.headBack11.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack11, 0.7312929565856241F, 0.0F, 0.0F); + this.theHeadDetaile = new AdvancedModelRenderer(this, 78, 8); + this.theHeadDetaile.setRotationPoint(3.0F, 0.0F, -1.5F); + this.theHeadDetaile.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetaile, 0.0F, 0.0F, -0.9599310885968813F); + this.EarL5 = new AdvancedModelRenderer(this, 116, 27); + this.EarL5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarL5.addBox(-1.02F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarL5, 0.49497537586559187F, 0.0F, 0.0F); + this.ArmRightFingerMid = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); + this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); + this.Left_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); + this.Left_Wing_Overlay.mirror = true; + this.Left_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Left_Wing_Overlay.addBox(0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.headBack111 = new AdvancedModelRenderer(this, 79, 43); + this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); + this.LegRightFootDetail = new AdvancedModelRenderer(this, 34, 11); + this.LegRightFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegRightFootDetail.addBox(0.5F, 0.0F, -3.2F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); + this.BodyLDetail1 = new AdvancedModelRenderer(this, 35, 11); + this.BodyLDetail1.mirror = true; + this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); + this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.ArmLeftFingersBig = new AdvancedModelRenderer(this, 0, 2); + this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); + this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); this.ArmRightHand = new AdvancedModelRenderer(this, 0, 2); this.ArmRightHand.mirror = true; this.ArmRightHand.setRotationPoint(0.0F, 6.0F, 0.0F); this.ArmRightHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(ArmRightHand, -0.296705972839036F, 1.5707963267948966F, 0.0F); - this.headfrontdetaila1_1 = new AdvancedModelRenderer(this, 54, 28); - this.headfrontdetaila1_1.setRotationPoint(1.5F, 0.0F, -1.5F); - this.headfrontdetaila1_1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila1_1, 0.9599310885968813F, 2.356194490192345F, 0.0F); + this.theHead = new AdvancedModelRenderer(this, 78, 0); + this.theHead.setRotationPoint(0.0F, -2.0F, -0.15F); + this.theHead.addBox(-1.5F, -1.0F, -1.5F, 3, 1, 3, 0.0F); this.LegLeft = new AdvancedModelRenderer(this, 22, 27); this.LegLeft.setRotationPoint(1.5F, 5.9F, 0.0F); this.LegLeft.addBox(0.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); this.setRotateAngle(LegLeft, -0.2617993877991494F, -0.2617993877991494F, -0.08726646259971647F); - this.EarRB1 = new AdvancedModelRenderer(this, 21, 46); - this.EarRB1.setRotationPoint(-1.0F, -0.2F, -0.4F); - this.EarRB1.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); - this.setRotateAngle(EarRB1, 1.2217304763960306F, 0.0F, 0.0F); - this.EarM5 = new AdvancedModelRenderer(this, 13, 43); - this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); - this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); - this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); - this.ArmLeftFingerfront = new AdvancedModelRenderer(this, 43, 13); - this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); - this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.LegDetailRight1 = new AdvancedModelRenderer(this, 16, 32); + this.LegDetailRight1.setRotationPoint(-1.0F, 2.0F, 0.0F); + this.LegDetailRight1.addBox(0.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetailRight1, 0.0F, 0.0F, 0.3804817769347638F); + this.LegDetailLeft = new AdvancedModelRenderer(this, 25, 20); + this.LegDetailLeft.setRotationPoint(0.2F, -0.2F, 0.0F); + this.LegDetailLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailLeft, 0.0F, 0.0F, -0.15707963267948966F); + this.Tail_mid4 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid4.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid4.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid4, 0.5248205060746949F, 0.0F, -0.035430183815484885F); + this.LegLeftLowerDetail1 = new AdvancedModelRenderer(this, 25, 11); + this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); + this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); + this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.ArmLeftDetail11 = new AdvancedModelRenderer(this, 12, 28); + this.ArmLeftDetail11.mirror = true; + this.ArmLeftDetail11.setRotationPoint(-1.75F, 1.0F, 1.0F); + this.ArmLeftDetail11.addBox(0.01F, 0.0F, -1.0F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmLeftDetail11, -0.14486232791552936F, 0.0F, -0.1117010721276371F); + this.EarR2 = new AdvancedModelRenderer(this, 0, 49); + this.EarR2.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR2.addBox(-1.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarR2, 0.5235987755982988F, 0.0F, 0.0F); + this.EarlM1 = new AdvancedModelRenderer(this, 102, 58); + this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); + this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); + this.theHeadDetail2 = new AdvancedModelRenderer(this, 78, 28); + this.theHeadDetail2.setRotationPoint(-1.5F, 0.0F, 1.5F); + this.theHeadDetail2.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2, 0.7853981633974483F, 0.0F, 0.0F); + this.neckDetail2 = new AdvancedModelRenderer(this, 18, 3); + this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); + this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); + this.FF1 = new AdvancedModelRenderer(this, 83, 59); + this.FF1.setRotationPoint(0.0F, -3.3F, -4.0F); + this.FF1.addBox(-0.5F, 0.0F, -1.0F, 1, 3, 2, 0.0F); + this.setRotateAngle(FF1, 0.3490658503988659F, 0.0F, 0.0F); + this.BodyLowerSideLeft = new AdvancedModelRenderer(this, 37, 0); + this.BodyLowerSideLeft.mirror = true; + this.BodyLowerSideLeft.setRotationPoint(2.5F, 0.0F, 0.0F); + this.BodyLowerSideLeft.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerSideLeft, 0.0F, 0.0F, 0.13962634015954636F); + this.LegLeftFootDetail = new AdvancedModelRenderer(this, 34, 9); + this.LegLeftFootDetail.setRotationPoint(-0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail.addBox(0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail, 0.0F, -0.4363323129985824F, 0.17453292519943295F); this.Left_Wing = new AdvancedModelRenderer(this, 92, 0); this.Left_Wing.mirror = true; this.Left_Wing.setRotationPoint(-1.0F, -3.5F, 0.0F); this.Left_Wing.addBox(0.0F, 0.0F, 0.0F, 1, 30, 11, 0.0F); this.setRotateAngle(Left_Wing, -0.2792526803190927F, 0.0F, -0.02617993877991494F); - this.headfrontdetaila4_1 = new AdvancedModelRenderer(this, 66, 44); - this.headfrontdetaila4_1.setRotationPoint(0.0F, 0.0F, 2.6F); - this.headfrontdetaila4_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(headfrontdetaila4_1, 0.7365289443416071F, 0.0F, 0.0F); - this.ArmRight = new AdvancedModelRenderer(this, 0, 27); - this.ArmRight.setRotationPoint(2.5F, -5.0F, 0.0F); - this.ArmRight.addBox(0.0F, 0.0F, -1.01F, 1, 8, 1, 0.0F); - this.setRotateAngle(ArmRight, 0.0F, -0.17453292519943295F, -0.17453292519943295F); - this.LegDetaiLeft1 = new AdvancedModelRenderer(this, 22, 32); - this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); - this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); - this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); - this.BodyLDetail1 = new AdvancedModelRenderer(this, 35, 11); - this.BodyLDetail1.mirror = true; - this.BodyLDetail1.setRotationPoint(2.5F, 0.0F, -2.0F); - this.BodyLDetail1.addBox(-1.0F, 0.0F, 0.0F, 1, 6, 1, 0.0F); - this.setRotateAngle(BodyLDetail1, 0.12217304763960307F, 0.0F, 0.13788101090755206F); - this.theHeadDetail7999 = new AdvancedModelRenderer(this, 66, 20); - this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); - this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); - this.ArmRightFingerfront = new AdvancedModelRenderer(this, 43, 13); - this.ArmRightFingerfront.setRotationPoint(0.5F, 0.5F, 0.5F); - this.ArmRightFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerfront, 0.17453292519943295F, 0.5235987755982988F, -0.2617993877991494F); - this.LegLeftLowerDetail = new AdvancedModelRenderer(this, 37, 9); - this.LegLeftLowerDetail.setRotationPoint(0.0F, -0.53F, -0.88F); - this.LegLeftLowerDetail.addBox(-0.5F, 0.0F, 0.0F, 1, 5, 1, 0.0F); - this.EarlM1 = new AdvancedModelRenderer(this, 102, 58); - this.EarlM1.setRotationPoint(-1.0F, 1.0F, 0.8F); - this.EarlM1.addBox(0.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); - this.setRotateAngle(EarlM1, -1.1370820076743058F, -0.08970992355250852F, 0.17453292519943295F); - this.LegRight = new AdvancedModelRenderer(this, 16, 27); - this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); - this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); - this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); - this.theHeadDetail1e = new AdvancedModelRenderer(this, 78, 20); - this.theHeadDetail1e.setRotationPoint(-3.0F, 0.0F, 0.0F); - this.theHeadDetail1e.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail1e, 0.0F, 0.0F, 0.9599310885968813F); - this.theHeadDetail2h = new AdvancedModelRenderer(this, 54, 8); - this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); - this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); - this.LegLeftLowerDetail1 = new AdvancedModelRenderer(this, 25, 1); - this.LegLeftLowerDetail1.setRotationPoint(0.0F, -0.3F, 0.1F); - this.LegLeftLowerDetail1.addBox(-0.5F, 0.0F, 0.0F, 1, 4, 1, 0.0F); - this.setRotateAngle(LegLeftLowerDetail1, -0.2399827721492203F, 0.0F, 0.0F); + this.EarR1 = new AdvancedModelRenderer(this, 0, 44); + this.EarR1.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarR1.addBox(-1.0F, -1.0F, 0.0F, 2, 1, 4, 0.0F); + this.setRotateAngle(EarR1, 0.6108652381980153F, 0.0F, 0.0F); + this.ArmRightFingersBig = new AdvancedModelRenderer(this, 0, 2); + this.ArmRightFingersBig.setRotationPoint(0.5F, 0.5F, 0.0F); + this.ArmRightFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmRightFingersBig, -0.4363323129985824F, 0.0F, -0.3839724354387525F); + this.FF2 = new AdvancedModelRenderer(this, 77, 60); + this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); + this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.LegLeftFoot = new AdvancedModelRenderer(this, 26, 11); + this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFoot, 0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.theHeadDetail1h = new AdvancedModelRenderer(this, 54, 4); + this.theHeadDetail1h.mirror = true; + this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); + this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); + this.FF4 = new AdvancedModelRenderer(this, 90, 62); + this.FF4.setRotationPoint(-0.13F, 0.6F, -1.01F); + this.FF4.addBox(0.0F, 0.0F, 0.0F, 1, 1, 1, 0.0F); + this.EarL3 = new AdvancedModelRenderer(this, 118, 15); + this.EarL3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarL3.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarL3, 0.4363323129985824F, 0.0F, 0.0F); + this.UpperBody = new AdvancedModelRenderer(this, 14, 0); + this.UpperBody.setRotationPoint(0.0F, -5.0F, 0.0F); + this.UpperBody.addBox(-1.5F, -1.74F, -1.0F, 3, 1, 2, 0.0F); + this.BodyDetailSideRight = new AdvancedModelRenderer(this, 9, 15); + this.BodyDetailSideRight.setRotationPoint(-2.5F, 0.0F, 0.0F); + this.BodyDetailSideRight.addBox(0.0F, -2.0F, -1.0F, 1, 2, 2, 0.0F); + this.setRotateAngle(BodyDetailSideRight, 0.0F, 0.0F, 0.5235987755982988F); + this.headBack113 = new AdvancedModelRenderer(this, 79, 40); + this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); + this.headfrontdetaila5_1 = new AdvancedModelRenderer(this, 79, 49); + this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); + this.ArmRightLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); + this.ArmRightLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightLowerDetail1.addBox(-0.51F, 0.0F, -0.23F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmRightLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.ArmLeft = new AdvancedModelRenderer(this, 0, 27); + this.ArmLeft.mirror = true; + this.ArmLeft.setRotationPoint(-2.5F, -5.0F, 0.0F); + this.ArmLeft.addBox(-1.02F, 0.0F, -1.02F, 1, 8, 1, 0.0F); + this.setRotateAngle(ArmLeft, 0.0F, 0.17453292519943295F, 0.17453292519943295F); + this.LegDetailRight = new AdvancedModelRenderer(this, 19, 20); + this.LegDetailRight.setRotationPoint(-0.2F, -0.2F, 0.0F); + this.LegDetailRight.addBox(0.0F, 0.0F, -1.0F, 1, 5, 2, 0.0F); + this.setRotateAngle(LegDetailRight, 0.0F, 0.0F, 0.15707963267948966F); + this.ArmLeftLowerDetail1 = new AdvancedModelRenderer(this, 40, 29); + this.ArmLeftLowerDetail1.mirror = true; + this.ArmLeftLowerDetail1.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail1.addBox(-0.5F, 0.0F, -0.25F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail1, -0.04014257279586957F, 0.0F, 0.0F); + this.headfrontdetaila5 = new AdvancedModelRenderer(this, 79, 46); + this.headfrontdetaila5.setRotationPoint(0.0F, 0.0F, 3.0F); + this.headfrontdetaila5.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); + this.setRotateAngle(headfrontdetaila5, 0.5916666164260777F, 0.0F, 0.0F); + this.EarM1 = new AdvancedModelRenderer(this, 10, 50); + this.EarM1.setRotationPoint(1.0F, 1.0F, 0.8F); + this.EarM1.addBox(-1.0F, -2.0F, 0.0F, 1, 2, 4, 0.0F); + this.setRotateAngle(EarM1, -1.1370820076743058F, 0.08970992355250852F, -0.17453292519943295F); + this.Tail_end = new AdvancedModelRenderer(this, 56, 59); + this.Tail_end.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_end.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_end, -0.39025562074593206F, 0.0F, 0.01727875959474386F); + this.chek = new AdvancedModelRenderer(this, 65, 60); + this.chek.setRotationPoint(0.5F, 0.0F, -1.0F); + this.chek.addBox(0.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); + this.setRotateAngle(chek, 0.0F, -1.186823891356144F, 0.0F); + this.ArmRightDetail12 = new AdvancedModelRenderer(this, 0, 18); + this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); + this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); + this.LegRightFootDetail1 = new AdvancedModelRenderer(this, 34, 11); + this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); this.BodyLower = new AdvancedModelRenderer(this, 52, 62); this.BodyLower.setRotationPoint(0.0F, 0.0F, 0.0F); this.BodyLower.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.headBack111 = new AdvancedModelRenderer(this, 79, 43); - this.headBack111.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headBack111.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headBack111, 0.5916666164260777F, 0.0F, 0.0F); - this.LegLeftFootDetail1 = new AdvancedModelRenderer(this, 24, 3); - this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); - this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.ArmLeftLowerDetail = new AdvancedModelRenderer(this, 35, 21); + this.ArmLeftLowerDetail.mirror = true; + this.ArmLeftLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftLowerDetail.addBox(-0.52F, 0.0F, -0.75F, 1, 6, 1, 0.0F); + this.setRotateAngle(ArmLeftLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.ArmRightDetail11 = new AdvancedModelRenderer(this, 12, 28); + this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); + this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); + this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); + this.headBack = new AdvancedModelRenderer(this, 54, 24); + this.headBack.setRotationPoint(1.5F, 0.0F, 1.5F); + this.headBack.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headBack, 0.9599310885968813F, 0.7853981633974483F, 0.0F); + this.Tail_mid3 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid3.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid3.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid3, 0.942128730226539F, 0.0F, -0.015184364492350668F); this.chek1 = new AdvancedModelRenderer(this, 65, 56); this.chek1.setRotationPoint(-0.5F, 0.0F, -1.0F); this.chek1.addBox(-2.0F, 0.01F, 0.0F, 2, 3, 1, 0.0F); this.setRotateAngle(chek1, 0.0F, 1.186823891356144F, 0.0F); - this.EarRB2Detail = new AdvancedModelRenderer(this, 30, 37); - this.EarRB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); - this.EarRB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarRB2Detail, 0.389033890269536F, 0.0F, 0.0F); - this.headtop = new AdvancedModelRenderer(this, 66, 0); - this.headtop.setRotationPoint(0.0F, -6.42F, 0.0F); - this.headtop.addBox(-1.5F, 0.0F, -1.5F, 3, 1, 3, 0.0F); - this.headBack113 = new AdvancedModelRenderer(this, 79, 40); - this.headBack113.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headBack113.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headBack113, 0.5916666164260777F, 0.0F, 0.0F); this.ArmLeftDetail12 = new AdvancedModelRenderer(this, 0, 18); this.ArmLeftDetail12.mirror = true; this.ArmLeftDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); this.ArmLeftDetail12.addBox(-1.0F, 0.0F, -1.02F, 1, 7, 1, 0.0F); this.setRotateAngle(ArmLeftDetail12, -0.14486232791552936F, 0.0F, 0.0F); - this.Right_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); - this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); - this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); - this.EarL2 = new AdvancedModelRenderer(this, 118, 10); - this.EarL2.setRotationPoint(0.0F, 0.0F, 4.0F); - this.EarL2.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); - this.setRotateAngle(EarL2, 0.5235987755982988F, 0.0F, 0.0F); - this.ArmLeftFingerMid = new AdvancedModelRenderer(this, 43, 13); - this.ArmLeftFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); - this.ArmLeftFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmLeftFingerMid, 0.3490658503988659F, 0.0F, 0.0F); - this.ArmRightDetail11 = new AdvancedModelRenderer(this, 12, 28); - this.ArmRightDetail11.setRotationPoint(1.75F, 1.0F, 1.0F); - this.ArmRightDetail11.addBox(-0.99F, 0.0F, -0.99F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail11, -0.14486232791552936F, 0.0F, 0.1117010721276371F); - this.headfrontdetaila5_1 = new AdvancedModelRenderer(this, 79, 49); - this.headfrontdetaila5_1.setRotationPoint(0.0F, 0.0F, 3.0F); - this.headfrontdetaila5_1.addBox(-1.5F, -1.0F, 0.0F, 3, 1, 2, 0.0F); - this.setRotateAngle(headfrontdetaila5_1, 0.5916666164260777F, 0.0F, 0.0F); - this.EarLB2Detail = new AdvancedModelRenderer(this, 120, 61); - this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); - this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); - this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); - this.theHeadDetail1h = new AdvancedModelRenderer(this, 54, 4); - this.theHeadDetail1h.mirror = true; - this.theHeadDetail1h.setRotationPoint(-3.0F, 0.0F, 0.0F); - this.theHeadDetail1h.addBox(-3.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); - this.setRotateAngle(theHeadDetail1h, 0.0F, 0.0F, 0.6981317007977318F); - this.neckDetail2 = new AdvancedModelRenderer(this, 18, 3); - this.neckDetail2.setRotationPoint(2.0F, 0.0F, -1.5F); - this.neckDetail2.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); - this.setRotateAngle(neckDetail2, -0.3839724354387525F, -0.7853981633974483F, 0.0F); - this.LegLeftFoot = new AdvancedModelRenderer(this, 20, 22); - this.LegLeftFoot.setRotationPoint(0.0F, 4.5F, 0.0F); - this.LegLeftFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegLeftFoot, -0.0F, -0.17453292519943295F, 0.08726646259971647F); + this.EarM3 = new AdvancedModelRenderer(this, 36, 36); + this.EarM3.setRotationPoint(0.0F, 0.0F, 0.0F); + this.EarM3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.EarML3 = new AdvancedModelRenderer(this, 116, 53); + this.EarML3.setRotationPoint(-1.0F, 0.0F, 0.0F); + this.EarML3.addBox(0.0F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.Tail_mid1 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid1.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid1.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid1, 0.8609709200088027F, 0.0F, 0.04834562028024293F); + this.LegRightFoot = new AdvancedModelRenderer(this, 34, 8); + this.LegRightFoot.setRotationPoint(0.0F, 4.5F, 0.0F); + this.LegRightFoot.addBox(-0.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegRightFoot, -0.0F, 0.17453292519943295F, -0.08726646259971647F); + this.ArmLeftFingerfront = new AdvancedModelRenderer(this, 43, 13); + this.ArmLeftFingerfront.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmLeftFingerfront.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmLeftFingerfront, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.ArmRightDetail = new AdvancedModelRenderer(this, 8, 23); + this.ArmRightDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmRightDetail.addBox(0.0F, 0.0F, -1.02F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmRightDetail, 0.0F, 0.0F, 0.5235987755982988F); + this.headfrontdetaila1 = new AdvancedModelRenderer(this, 54, 20); + this.headfrontdetaila1.setRotationPoint(-1.5F, 0.0F, -1.5F); + this.headfrontdetaila1.addBox(-1.5F, -1.0F, -0.4F, 3, 1, 3, 0.0F); + this.setRotateAngle(headfrontdetaila1, 0.9599310885968813F, -2.356194490192345F, 0.0F); + this.ArmRightFingerback = new AdvancedModelRenderer(this, 43, 13); + this.ArmRightFingerback.setRotationPoint(-0.5F, 0.5F, 0.5F); + this.ArmRightFingerback.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); + this.setRotateAngle(ArmRightFingerback, 0.17453292519943295F, -0.5235987755982988F, 0.2617993877991494F); + this.Tail_mid2 = new AdvancedModelRenderer(this, 60, 59); + this.Tail_mid2.setRotationPoint(0.0F, 4.0F, 0.0F); + this.Tail_mid2.addBox(-0.5F, 0.0F, -0.5F, 1, 4, 1, 0.0F); + this.setRotateAngle(Tail_mid2, 0.7670722062515078F, 0.0F, 0.0F); this.ArmRightLower = new AdvancedModelRenderer(this, 52, 62); this.ArmRightLower.setRotationPoint(0.5F, 8.0F, -0.5F); this.ArmRightLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.setRotateAngle(ArmRightLower, -0.5235987755982988F, 0.0F, 0.0F); - this.EarL2_1 = new AdvancedModelRenderer(this, 118, 20); - this.EarL2_1.setRotationPoint(0.0F, -1.0F, 0.0F); - this.EarL2_1.addBox(-1.0F, -3.0F, 0.0F, 1, 3, 4, 0.0F); - this.ArmLeftFingersBig = new AdvancedModelRenderer(this, 0, 2); - this.ArmLeftFingersBig.setRotationPoint(-0.5F, 0.5F, 0.0F); - this.ArmLeftFingersBig.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftFingersBig, -0.4363323129985824F, 0.0F, 0.3839724354387525F); - this.ArmRightFingerMid = new AdvancedModelRenderer(this, 43, 13); - this.ArmRightFingerMid.setRotationPoint(0.0F, 0.5F, 0.5F); - this.ArmRightFingerMid.addBox(-0.5F, 0.0F, -1.0F, 1, 2, 1, 0.0F); - this.setRotateAngle(ArmRightFingerMid, 0.3490658503988659F, 0.0F, 0.0F); - this.FF2 = new AdvancedModelRenderer(this, 77, 60); - this.FF2.setRotationPoint(0.0F, 0.5F, -1.0F); - this.FF2.addBox(-0.5F, -2.0F, 0.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(FF2, -1.48352986419518F, 0.0F, 0.0F); + this.EarRB3 = new AdvancedModelRenderer(this, 22, 36); + this.EarRB3.setRotationPoint(0.0F, 0.0F, 4.0F); + this.EarRB3.addBox(-1.0F, 0.0F, 0.0F, 1, 1, 6, 0.0F); + this.setRotateAngle(EarRB3, -0.1223475805648025F, -0.3490658503988659F, 0.0F); + this.theHeadDetail7999 = new AdvancedModelRenderer(this, 66, 20); + this.theHeadDetail7999.setRotationPoint(1.5F, 0.0F, -1.5F); + this.theHeadDetail7999.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail7999, 0.7853981633974483F, 3.141592653589793F, 0.0F); + this.LegLeftFootDetail2 = new AdvancedModelRenderer(this, 37, 11); + this.LegLeftFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegLeftFootDetail2.addBox(-2.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegLeftFootDetail2, 0.13962634015954636F, -0.40142572795869574F, -0.5462880558742251F); + this.theHeadDetail2h = new AdvancedModelRenderer(this, 54, 8); + this.theHeadDetail2h.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2h.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2h, 0.6981317007977318F, 0.0F, 0.0F); + this.EarLB2Detail = new AdvancedModelRenderer(this, 120, 61); + this.EarLB2Detail.setRotationPoint(-1.0F, 2.0F, 4.0F); + this.EarLB2Detail.addBox(0.0F, -1.0F, 0.0F, 2, 1, 2, 0.0F); + this.setRotateAngle(EarLB2Detail, 0.389033890269536F, 0.0F, 0.0F); this.ArmRightLowerDetail = new AdvancedModelRenderer(this, 35, 21); this.ArmRightLowerDetail.setRotationPoint(0.0F, 0.0F, 0.0F); this.ArmRightLowerDetail.addBox(-0.5F, 0.0F, -0.77F, 1, 6, 1, 0.0F); this.setRotateAngle(ArmRightLowerDetail, 0.04014257279586957F, 0.0F, 0.0F); + this.Right_Wing_Overlay = new AdvancedModelRenderer(this, 136, 0); + this.Right_Wing_Overlay.setRotationPoint(0.0F, 0.0F, 0.0F); + this.Right_Wing_Overlay.addBox(-0.02F, 0.0F, 0.0F, 1, 30, 11, 0.0F); + this.EarM5 = new AdvancedModelRenderer(this, 13, 43); + this.EarM5.setRotationPoint(0.0F, -1.8F, 3.0F); + this.EarM5.addBox(-0.98F, 0.0F, 0.0F, 1, 2, 5, 0.0F); + this.setRotateAngle(EarM5, 0.49497537586559187F, 0.0F, 0.0F); this.ArmLeftDetail1 = new AdvancedModelRenderer(this, 32, 28); this.ArmLeftDetail1.mirror = true; this.ArmLeftDetail1.setRotationPoint(-1.75F, 1.0F, 0.0F); this.ArmLeftDetail1.addBox(0.0F, 0.0F, -0.98F, 1, 7, 1, 0.0F); this.setRotateAngle(ArmLeftDetail1, 0.0F, 0.0F, -0.1117010721276371F); - this.ArmLeftLower = new AdvancedModelRenderer(this, 52, 62); - this.ArmLeftLower.setRotationPoint(-0.5F, 8.0F, -0.5F); - this.ArmLeftLower.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); - this.setRotateAngle(ArmLeftLower, -0.5235987755982988F, 0.0F, 0.0F); - this.FF3 = new AdvancedModelRenderer(this, 71, 60); - this.FF3.setRotationPoint(0.0F, 3.0F, -1.0F); - this.FF3.addBox(-0.5F, 0.0F, 0.0F, 1, 2, 2, 0.0F); - this.setRotateAngle(FF3, 1.4486232791552935F, 0.0F, 0.0F); - this.LegRightFootDetail1 = new AdvancedModelRenderer(this, 34, 11); - this.LegRightFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); - this.LegRightFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); - this.setRotateAngle(LegRightFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); - this.ArmRightDetail12 = new AdvancedModelRenderer(this, 0, 18); - this.ArmRightDetail12.setRotationPoint(0.0F, 0.9F, 1.0F); - this.ArmRightDetail12.addBox(0.0F, 0.0F, -1.01F, 1, 7, 1, 0.0F); - this.setRotateAngle(ArmRightDetail12, -0.14486232791552936F, 0.0F, 0.0F); - this.LegRightFoot.addChild(this.LegRightFootDetail2); - this.ArmLeft.addChild(this.ArmLeftDetail11); - this.theHeadDetail7999.addChild(this.theHeadDetail2e768); - this.EarRB1.addChild(this.EarM1); - this.ArmRightLower.addChild(this.ArmRightLowerDetail1); - this.theHead.addChild(this.FF1); + this.BodyLDetail2 = new AdvancedModelRenderer(this, 43, 0); + this.BodyLDetail2.setRotationPoint(2.5F, 0.0F, 2.0F); + this.BodyLDetail2.addBox(-1.0F, 0.0F, -1.0F, 1, 6, 1, 0.0F); + this.setRotateAngle(BodyLDetail2, -0.12217304763960307F, 0.0F, 0.13788101090755206F); + this.theHeadDetail = new AdvancedModelRenderer(this, 78, 4); + this.theHeadDetail.setRotationPoint(1.5F, 0.0F, 0.0F); + this.theHeadDetail.addBox(0.0F, -1.0F, -1.5F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail, 0.0F, 0.0F, -0.7853981633974483F); + this.BodyLowerFront = new AdvancedModelRenderer(this, 33, 8); + this.BodyLowerFront.setRotationPoint(0.0F, 0.0F, -2.0F); + this.BodyLowerFront.addBox(-1.5F, 0.0F, 0.0F, 3, 6, 2, 0.0F); + this.setRotateAngle(BodyLowerFront, 0.12217304763960307F, 0.0F, 0.0F); + this.theHeadDetail2e768 = new AdvancedModelRenderer(this, 66, 24); + this.theHeadDetail2e768.setRotationPoint(0.0F, 0.0F, 3.0F); + this.theHeadDetail2e768.addBox(0.0F, -1.0F, 0.0F, 3, 1, 3, 0.0F); + this.setRotateAngle(theHeadDetail2e768, 0.9599310885968813F, 0.0F, 0.0F); + this.ArmLeftDetail = new AdvancedModelRenderer(this, 8, 23); + this.ArmLeftDetail.mirror = true; + this.ArmLeftDetail.setRotationPoint(0.0F, 0.0F, 0.0F); + this.ArmLeftDetail.addBox(-2.0F, 0.0F, -1.03F, 2, 1, 2, 0.0F); + this.setRotateAngle(ArmLeftDetail, 0.0F, 0.0F, -0.5235987755982988F); + this.LegDetaiLeft1 = new AdvancedModelRenderer(this, 22, 32); + this.LegDetaiLeft1.setRotationPoint(1.0F, 2.0F, 0.0F); + this.LegDetaiLeft1.addBox(-1.0F, -2.0F, -1.01F, 1, 2, 2, 0.0F); + this.setRotateAngle(LegDetaiLeft1, 0.0F, 0.0F, -0.3804817769347638F); + this.ArmLeftHand = new AdvancedModelRenderer(this, 0, 2); + this.ArmLeftHand.setRotationPoint(0.0F, 6.0F, 0.0F); + this.ArmLeftHand.addBox(-0.5F, 0.0F, -0.5F, 1, 1, 1, 0.0F); + this.setRotateAngle(ArmLeftHand, -0.296656372197416F, -1.5707963267948966F, 0.0F); + this.LegRight = new AdvancedModelRenderer(this, 16, 27); + this.LegRight.setRotationPoint(-1.5F, 5.9F, 0.0F); + this.LegRight.addBox(-1.02F, 2.0F, -1.02F, 1, 3, 2, 0.0F); + this.setRotateAngle(LegRight, -0.2617993877991494F, 0.2617993877991494F, 0.08726646259971647F); + this.EarLB2 = new AdvancedModelRenderer(this, 116, 40); + this.EarLB2.setRotationPoint(0.0F, 0.0F, 3.6F); + this.EarLB2.addBox(-1.0F, 0.0F, 0.0F, 2, 2, 4, 0.0F); + this.setRotateAngle(EarLB2, -0.4363323129985824F, -0.3490658503988659F, 0.0F); + this.neckDetail4 = new AdvancedModelRenderer(this, 18, 6); + this.neckDetail4.setRotationPoint(-2.0F, 0.0F, 1.5F); + this.neckDetail4.addBox(-0.9F, -2.0F, 0.0F, 2, 2, 1, 0.0F); + this.setRotateAngle(neckDetail4, -0.3839724354387525F, 2.356194490192345F, 0.0F); + this.LegRightFootDetail2 = new AdvancedModelRenderer(this, 37, 11); + this.LegRightFootDetail2.setRotationPoint(0.0F, 0.0F, -0.5F); + this.LegRightFootDetail2.addBox(0.0F, 0.0F, 0.0F, 2, 1, 1, 0.0F); + this.setRotateAngle(LegRightFootDetail2, -0.13962634015954636F, 0.40142572795869574F, 0.5462880558742251F); + this.LegLeftFootDetail1 = new AdvancedModelRenderer(this, 34, 10); + this.LegLeftFootDetail1.setRotationPoint(0.8F, 0.0F, 0.0F); + this.LegLeftFootDetail1.addBox(-1.5F, 0.0F, -3.0F, 1, 1, 3, 0.0F); + this.setRotateAngle(LegLeftFootDetail1, 0.0F, 0.4363323129985824F, -0.17453292519943295F); + this.EarLeft = new AdvancedModelRenderer(this, 118, 0); + this.EarLeft.setRotationPoint(1.0F, -6.0F, 1.0F); + this.EarLeft.addBox(0.0F, -1.0F, 0.0F, 1, 1, 4, 0.0F); + this.setRotateAngle(EarLeft, -0.2617993877991494F, 0.4363323129985824F, 0.0F); + this.BodyLower.addChild(this.BodyLowerBack); + this.UpperBody.addChild(this.BodyDetailFront); + this.ArmRight.addChild(this.Right_Wing); + this.BodyLower.addChild(this.BodyLDetail); + this.EarRB2.addChild(this.EarRB2Detail); + this.UpperBody.addChild(this.neckDetail); + this.UpperBody.addChild(this.neckDetail3); + this.Body.addChild(this.ArmRight); + this.theHead.addChild(this.headtop); + this.EarL1.addChild(this.EarL2); + this.ArmLeftHand.addChild(this.ArmLeftFingerback); + this.theHeadDetaile.addChild(this.theHeadDetailh); + this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); + this.ArmRightHand.addChild(this.ArmRightFingerfront); + this.EarLB2.addChild(this.EarLB3); + this.EarR2.addChild(this.EarR3); this.headBack.addChild(this.headBack2); + this.Body.addChild(this.Neck); + this.theHeadDetail1.addChild(this.theHeadDetail1e); + this.LegRightLower.addChild(this.LegRightLowerDetail1); + this.EarRB2Detail.addChild(this.EarRB2Detaildetail); + this.EarLB2Detail.addChild(this.EarLB2Detaildetail); + this.LegLeftLower.addChild(this.LegLeftLowerDetail); + this.UpperBody.addChild(this.BodyDetailSideLeft); + this.EarR1.addChild(this.EarM2); + this.EarLeft.addChild(this.EarL1); + this.theHead.addChild(this.headBack1); + this.BodyLower.addChild(this.Tail_start); + this.FF1.addChild(this.FF3); + this.BodyLower.addChild(this.BodyLDetail4); + this.BodyLower.addChild(this.BodyLowerSideRight); + this.theHead.addChild(this.headfrontdetaila1_1); + this.ArmRight.addChild(this.ArmRightDetail1); + this.LegLeft.addChild(this.LegLeftLower); + this.UpperBody.addChild(this.BodyDetailBack); + this.LegRight.addChild(this.LegRightLower); + this.LegRightLower.addChild(this.LegRightLowerDetail); + this.EarLeft.addChild(this.EarLB1); this.EarRB1.addChild(this.EarRB2); this.theHead.addChild(this.EarRight); - this.theHeadDetail.addChild(this.theHeadDetaile); + this.theHead.addChild(this.theHeadDetail1); + this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.ArmLeftHand.addChild(this.ArmLeftFingerMid); + this.ArmLeft.addChild(this.ArmLeftLower); + this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); + this.EarRight.addChild(this.EarRB1); + this.theHeadDetail2.addChild(this.theHeadDetail2e); + this.EarL1.addChild(this.EarL2_1); this.headBack1.addChild(this.headBack11); - this.EarRB2.addChild(this.EarRB3); - this.Neck.addChild(this.theHead); - this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.theHeadDetail.addChild(this.theHeadDetaile); this.EarL2_1.addChild(this.EarL5); - this.Tail_mid4.addChild(this.Tail_end); - this.EarRB2Detail.addChild(this.EarRB2Detaildetail); - this.LegRightLower.addChild(this.LegRightLowerDetail); - this.EarR1.addChild(this.EarR2); - this.UpperBody.addChild(this.BodyDetailSideLeft); - this.theHead.addChild(this.EarLeft); + this.ArmRightHand.addChild(this.ArmRightFingerMid); + this.Left_Wing.addChild(this.Left_Wing_Overlay); + this.headBack11.addChild(this.headBack111); + this.LegRightFoot.addChild(this.LegRightFootDetail); + this.BodyLower.addChild(this.BodyLDetail1); + this.ArmLeftHand.addChild(this.ArmLeftFingersBig); + this.ArmRightLower.addChild(this.ArmRightHand); + this.Neck.addChild(this.theHead); + this.BodyLower.addChild(this.LegLeft); + this.LegRight.addChild(this.LegDetailRight1); + this.LegLeft.addChild(this.LegDetailLeft); this.Tail_mid3.addChild(this.Tail_mid4); - this.ArmLeftLower.addChild(this.ArmLeftHand); + this.LegLeftLower.addChild(this.LegLeftLowerDetail1); + this.ArmLeft.addChild(this.ArmLeftDetail11); + this.EarR1.addChild(this.EarR2); + this.EarLB1.addChild(this.EarlM1); this.theHead.addChild(this.theHeadDetail2); - this.LegRightFoot.addChild(this.LegRightFootDetail); - this.FF1.addChild(this.FF4); - this.UpperBody.addChild(this.neckDetail4); - this.BodyLower.addChild(this.Tail_start); - this.LegLeft.addChild(this.LegLeftLower); - this.theHead.addChild(this.theHeadDetail1); - this.EarLB3.addChild(this.EarML3); + this.UpperBody.addChild(this.neckDetail2); + this.theHead.addChild(this.FF1); + this.BodyLower.addChild(this.BodyLowerSideLeft); this.LegLeftFoot.addChild(this.LegLeftFootDetail); + this.ArmLeft.addChild(this.Left_Wing); this.EarRight.addChild(this.EarR1); - this.Tail_mid1.addChild(this.Tail_mid2); - this.Tail_start.addChild(this.Tail_mid1); - this.BodyLower.addChild(this.BodyLowerBack); - this.ArmRightHand.addChild(this.ArmRightFingerback); this.ArmRightHand.addChild(this.ArmRightFingersBig); - this.theHeadDetail2.addChild(this.theHeadDetail2e); - this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); - this.ArmLeftHand.addChild(this.ArmLeftFingerback); - this.LegRightLower.addChild(this.LegRightLowerDetail1); - this.theHead.addChild(this.headBack); - this.Body.addChild(this.UpperBody); - this.BodyLower.addChild(this.BodyLowerSideRight); - this.Body.addChild(this.Neck); - this.Tail_mid2.addChild(this.Tail_mid3); + this.FF1.addChild(this.FF2); + this.LegLeftLower.addChild(this.LegLeftFoot); + this.theHeadDetail1e.addChild(this.theHeadDetail1h); + this.FF1.addChild(this.FF4); this.EarL2.addChild(this.EarL3); - this.Left_Wing.addChild(this.Left_Wing_Overlay); - this.ArmLeft.addChild(this.ArmLeftDetail); - this.ArmRight.addChild(this.Right_Wing); - this.headfrontdetaila1.addChild(this.headfrontdetaila4); + this.Body.addChild(this.UpperBody); this.UpperBody.addChild(this.BodyDetailSideRight); + this.headBack2.addChild(this.headBack113); + this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); + this.ArmRightLower.addChild(this.ArmRightLowerDetail1); + this.Body.addChild(this.ArmLeft); + this.LegRight.addChild(this.LegDetailRight); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); + this.headfrontdetaila4.addChild(this.headfrontdetaila5); + this.EarRB1.addChild(this.EarM1); + this.Tail_mid4.addChild(this.Tail_end); this.FF1.addChild(this.chek); + this.ArmRight.addChild(this.ArmRightDetail12); + this.LegRightFoot.addChild(this.LegRightFootDetail1); + this.Body.addChild(this.BodyLower); + this.ArmLeftLower.addChild(this.ArmLeftLowerDetail); + this.ArmRight.addChild(this.ArmRightDetail11); + this.theHead.addChild(this.headBack); + this.Tail_mid2.addChild(this.Tail_mid3); + this.FF1.addChild(this.chek1); + this.ArmLeft.addChild(this.ArmLeftDetail12); + this.EarRB3.addChild(this.EarM3); + this.EarLB3.addChild(this.EarML3); + this.Tail_start.addChild(this.Tail_mid1); this.LegRightLower.addChild(this.LegRightFoot); - this.Body.addChild(this.ArmLeft); + this.ArmLeftHand.addChild(this.ArmLeftFingerfront); this.ArmRight.addChild(this.ArmRightDetail); - this.ArmRight.addChild(this.ArmRightDetail1); this.theHead.addChild(this.headfrontdetaila1); - this.EarR1.addChild(this.EarM2); - this.LegRight.addChild(this.LegDetailRight1); + this.ArmRightHand.addChild(this.ArmRightFingerback); + this.Tail_mid1.addChild(this.Tail_mid2); + this.ArmRight.addChild(this.ArmRightLower); + this.EarRB2.addChild(this.EarRB3); + this.theHead.addChild(this.theHeadDetail7999); this.LegLeftFoot.addChild(this.LegLeftFootDetail2); - this.LegRight.addChild(this.LegDetailRight); - this.UpperBody.addChild(this.neckDetail3); - this.BodyLower.addChild(this.BodyLDetail); - this.EarLB2Detail.addChild(this.EarLB2Detaildetail); - this.EarR2.addChild(this.EarR3); - this.BodyLower.addChild(this.BodyLowerSideLeft); - this.LegLeft.addChild(this.LegDetailLeft); - this.UpperBody.addChild(this.BodyDetailFront); - this.EarRB3.addChild(this.EarM3); - this.EarLB1.addChild(this.EarLB2); - this.BodyLower.addChild(this.BodyLDetail4); - this.theHead.addChild(this.theHeadDetail); - this.UpperBody.addChild(this.BodyDetailBack); - this.LegRight.addChild(this.LegRightLower); + this.theHeadDetail2e.addChild(this.theHeadDetail2h); + this.EarLB2.addChild(this.EarLB2Detail); + this.ArmRightLower.addChild(this.ArmRightLowerDetail); + this.Right_Wing.addChild(this.Right_Wing_Overlay); + this.EarM2.addChild(this.EarM5); + this.ArmLeft.addChild(this.ArmLeftDetail1); this.BodyLower.addChild(this.BodyLDetail2); - this.EarLB2.addChild(this.EarLB3); + this.theHead.addChild(this.theHeadDetail); this.BodyLower.addChild(this.BodyLowerFront); - this.theHeadDetaile.addChild(this.theHeadDetailh); - this.theHeadDetail2e768.addChild(this.theHeadDetail2h789); - this.EarLeft.addChild(this.EarL1); - this.UpperBody.addChild(this.neckDetail); - this.ArmLeftLower.addChild(this.ArmLeftLowerDetail1); - this.theHead.addChild(this.headBack1); - this.EarLeft.addChild(this.EarLB1); - this.ArmRightLower.addChild(this.ArmRightHand); - this.theHead.addChild(this.headfrontdetaila1_1); - this.BodyLower.addChild(this.LegLeft); - this.EarRight.addChild(this.EarRB1); - this.EarM2.addChild(this.EarM5); - this.ArmLeftHand.addChild(this.ArmLeftFingerfront); - this.ArmLeft.addChild(this.Left_Wing); - this.headfrontdetaila1_1.addChild(this.headfrontdetaila4_1); - this.Body.addChild(this.ArmRight); + this.theHeadDetail7999.addChild(this.theHeadDetail2e768); + this.ArmLeft.addChild(this.ArmLeftDetail); this.LegLeft.addChild(this.LegDetaiLeft1); - this.BodyLower.addChild(this.BodyLDetail1); - this.theHead.addChild(this.theHeadDetail7999); - this.ArmRightHand.addChild(this.ArmRightFingerfront); - this.LegLeftLower.addChild(this.LegLeftLowerDetail); - this.EarLB1.addChild(this.EarlM1); + this.ArmLeftLower.addChild(this.ArmLeftHand); this.BodyLower.addChild(this.LegRight); - this.theHeadDetail1.addChild(this.theHeadDetail1e); - this.theHeadDetail2e.addChild(this.theHeadDetail2h); - this.LegLeftLower.addChild(this.LegLeftLowerDetail1); - this.Body.addChild(this.BodyLower); - this.headBack11.addChild(this.headBack111); + this.EarLB1.addChild(this.EarLB2); + this.UpperBody.addChild(this.neckDetail4); + this.LegRightFoot.addChild(this.LegRightFootDetail2); this.LegLeftFoot.addChild(this.LegLeftFootDetail1); - this.FF1.addChild(this.chek1); - this.EarRB2.addChild(this.EarRB2Detail); - this.theHead.addChild(this.headtop); - this.headBack2.addChild(this.headBack113); - this.ArmLeft.addChild(this.ArmLeftDetail12); - this.Right_Wing.addChild(this.Right_Wing_Overlay); - this.EarL1.addChild(this.EarL2); - this.ArmLeftHand.addChild(this.ArmLeftFingerMid); - this.ArmRight.addChild(this.ArmRightDetail11); - this.headfrontdetaila4_1.addChild(this.headfrontdetaila5_1); - this.EarLB2.addChild(this.EarLB2Detail); - this.theHeadDetail1e.addChild(this.theHeadDetail1h); - this.UpperBody.addChild(this.neckDetail2); - this.LegLeftLower.addChild(this.LegLeftFoot); - this.ArmRight.addChild(this.ArmRightLower); - this.EarL1.addChild(this.EarL2_1); - this.ArmLeftHand.addChild(this.ArmLeftFingersBig); - this.ArmRightHand.addChild(this.ArmRightFingerMid); - this.FF1.addChild(this.FF2); - this.ArmRightLower.addChild(this.ArmRightLowerDetail); - this.ArmLeft.addChild(this.ArmLeftDetail1); - this.ArmLeft.addChild(this.ArmLeftLower); - this.FF1.addChild(this.FF3); - this.LegRightFoot.addChild(this.LegRightFootDetail1); - this.ArmRight.addChild(this.ArmRightDetail12); + this.theHead.addChild(this.EarLeft); this.Left_Wing.setShouldScaleChildren(true); this.Right_Wing.setShouldScaleChildren(true); animator = ModelAnimator.create(); diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java index 401a0a3b5c..544ca74e49 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java @@ -16,7 +16,9 @@ @SideOnly(Side.CLIENT) public class RenderAscendedLemur extends RenderLiving{ -public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + + public static final ResourceLocation[] TEXTURES = new ResourceLocation[] { new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur.png"), new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur2.png") }; + public RenderAscendedLemur(RenderManager manager) { super(manager, new ModelLemur(), 0.20F); @@ -25,7 +27,7 @@ public RenderAscendedLemur(RenderManager manager) { @Override protected ResourceLocation getEntityTexture(EntityAscendedFlyingLemur entity) { - return TEXTURES; + return TEXTURES[entity.getVariant()]; } @Override diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java index 9a747789dd..cddf8b152b 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java @@ -16,8 +16,10 @@ @SideOnly(Side.CLIENT) public class RenderAscendedLlibraryLemur extends RenderLiving{ -public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); - + + public static final ResourceLocation[] TEXTURES = new ResourceLocation[] { new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur.png"), new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur2.png") }; + + public RenderAscendedLlibraryLemur(RenderManager manager) { super(manager, new ModelLlibraryLemur(), 0.20F); @@ -25,7 +27,7 @@ public RenderAscendedLlibraryLemur(RenderManager manager) { @Override protected ResourceLocation getEntityTexture(EntityAscendedFlyingLemur entity) { - return TEXTURES; + return TEXTURES[entity.getVariant()]; } @Override diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java index 319b81455c..b42a4f78e6 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java @@ -19,15 +19,16 @@ public class RenderLemur extends RenderLiving{ -public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); - + + public static final ResourceLocation[] TEXTURES = new ResourceLocation[] { new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur.png"), new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur2.png") }; + public RenderLemur(RenderManager manager) { super(manager, new ModelLemur(), 0.2F); } @Override protected ResourceLocation getEntityTexture(EntityFlyingLemur entity) { - return TEXTURES; + return TEXTURES[entity.getVariant()]; } @Override diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java index 1fa3c47be8..b1f1fc45ad 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java @@ -17,9 +17,7 @@ @SideOnly(Side.CLIENT) public class RenderLlibraryLemur extends RenderLiving{ - - -public static final ResourceLocation TEXTURES = new ResourceLocation(AvatarInfo.MOD_ID+":textures/entity/lemur.png"); + public static final ResourceLocation[] TEXTURES = new ResourceLocation[] { new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur.png"), new ResourceLocation(AvatarInfo.MOD_ID+":textures/mob/lemur2.png") }; public RenderLlibraryLemur(RenderManager manager) { super(manager, new ModelLlibraryLemur(), 0.2F); @@ -27,7 +25,7 @@ public RenderLlibraryLemur(RenderManager manager) { @Override protected ResourceLocation getEntityTexture(EntityFlyingLemur entity) { - return TEXTURES; + return TEXTURES[entity.getVariant()]; } @Override diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java index 582b751daf..57a3fac2c7 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java @@ -8,10 +8,7 @@ import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockLog; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.*; import net.minecraft.entity.ai.*; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityFlying; @@ -32,6 +29,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -45,15 +43,15 @@ */ public class EntityAscendedFlyingLemur extends EntityTameable implements EntityFlying -{ private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); -private static final Set TEMPTATION_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE); +{ +private static final DataParameter VARIANT = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.VARINT); +private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); public double speed; private boolean isActualyFlying; private boolean previusRidingPos; -private boolean islemurriding; private boolean partyLemur;//TODO private BlockPos jukeboxPosition; public EntityAscendedFlyingLemur(World worldIn) @@ -65,6 +63,15 @@ public EntityAscendedFlyingLemur(World worldIn) } + + @Nullable + public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) + { + this.setVariant(this.rand.nextInt(2)); + return super.onInitialSpawn(difficulty, livingdata); + } + + @Override protected void initEntityAI() { @@ -307,6 +314,7 @@ protected void entityInit() super.entityInit(); this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(VARIANT, Integer.valueOf(0)); } public boolean isFlying() @@ -586,7 +594,15 @@ public void setAngry(boolean angry) /* * Emotions - End */ - + public void setVariant(int variantIn) + { + this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); + } + public int getVariant() + { + return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); + } + /* * Mating - Start */ diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java index 35dc23ea25..4cc8b5c1a2 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java @@ -8,13 +8,11 @@ import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockLog; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.*; import net.minecraft.entity.ai.*; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityFlying; +import net.minecraft.entity.passive.EntityParrot; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -32,6 +30,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -46,18 +45,25 @@ public class EntityFlyingLemur extends EntityTameable implements EntityFlying { + private static final DataParameter VARIANT = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.VARINT); private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); - private static final Set TEMPTATION_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE); protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); public double speed; private boolean isActualyFlying; private boolean previusRidingPos; - private boolean islemurriding; private boolean partyLemur;//TODO private BlockPos jukeboxPosition; + + @Nullable + public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) + { + this.setVariant(this.rand.nextInt(2)); + return super.onInitialSpawn(difficulty, livingdata); + } + public EntityFlyingLemur(World worldIn) { super(worldIn); @@ -66,7 +72,8 @@ public EntityFlyingLemur(World worldIn) experienceValue = 200; } - + + @Override protected void initEntityAI() { @@ -330,6 +337,7 @@ protected void entityInit() super.entityInit(); this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(VARIANT, Integer.valueOf(0)); } public boolean isFlying() @@ -568,12 +576,14 @@ public void writeEntityToNBT(NBTTagCompound compound) { super.writeEntityToNBT(compound); compound.setBoolean("Angry", this.isAngry()); + compound.setInteger("Variant", this.getVariant()); } @Override public void readEntityFromNBT(NBTTagCompound compound) { super.readEntityFromNBT(compound); this.setAngry(compound.getBoolean("Angry")); + this.setVariant(compound.getInteger("Variant")); } public boolean isAngry() { @@ -595,8 +605,17 @@ public void setAngry(boolean angry) /* * Emotions - End */ - - /* + + public void setVariant(int variantIn) + { + this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); + } + public int getVariant() + { + return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); + } + + /* * Mating - Start */ public boolean isBreedingItem(ItemStack stack) diff --git a/src/main/resources/assets/avatarmod/textures/entity/lemur.png b/src/main/resources/assets/avatarmod/textures/entity/lemur.png deleted file mode 100644 index 1ac145bc225f5d27d62c1af764947bd08b51acf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61789 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

xI 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 T+aeNb4DbV2(p0RLw+Q=xXbjR{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/avatarmod/textures/mob/lemur2.png b/src/main/resources/assets/avatarmod/textures/mob/lemur2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba534ef5584160607d4b216f47d25fabe9d0f9c GIT binary patch literal 42423 zcmV)8K*qm`P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3;uvRpT8h5vIESpp|;SPsXk>>$g}ci1gilI>I_ z70Z^MTiv%W3E&JMt~>wrpV$2d|Fl-3%T`iYZ;+xJ4>zxZ*%q;J+e?C%|YFO=fv z_3-_F*FQJvNBLzr-~aB4T`$@E{MDcTpDUZOjq9c8;z=R-_j~+&Q~LZj_^DN07@n_`X zZ=o*n$4CFZe|NWg&u4Wb7sqy$@1lMz@%_Xb+0vZe#|pnH{~15m_p9@(`QaB)+bnfD zKlz^?B0GLV4m*r+!+C$Mu(-t>PpteI4fQYZTH6pQyT;k>U z^IpRH-mdTC%NpOj1MiH1ixJD;f4M(j_`m-8?Lzk|%|p;;mh$$B`-;jhZbOmN@4SnE zg!|o7d;1&Q=MVqqKMHIjg7&t#vB2Ty=MvMxU%8cDoRc@lTeJVvOQ`#M0k(+mHf|;) zBH&9%7E16n#u@_q*oe>I&ST1P5`kdO;^r=6PN@)_7WLhHriS<4Xz}wh@IoLg70RX& zph2*5wp^&UMhXpQ$+DRhtJbXBD5>OPrIcEPQ=_JutJP9#ZME0YQp?R+X|=W1+vu?; zV9Z=Ez4q37AA>I)d2p@4`v)(~IMdA2W|?)i+2>fK&&tbIS#`D5*Vu8V4FtGdcHM3F zJx(~J(#gk8IrX&D&$#5;O*db=<<{G7zvE}rzES->YJW!Ve~w!CMlHTT>3#LDsPS^G zKQ0jjC#IMYv6ur9uZn=cNip*+_KS*@x@3^_p$RcuSZhDdpLUu4uMzSeZ4J64s50e{GCSQQDm6 zK=o{P%5{#Jnu}!yma>QC9!^@fm$v5Q9jC98CegIcW%kTgW=a0^TGt^&qJ}$XTx-?l zU25fwGAGrr3t7|$yK=a-p7}l7$z!na)BEa!wdNbrGID{7*1$eNp}B&PdH2hr+2=5G zi?#cD`3Uf_;~aZUvcaDMHJ^TW9bBJ#+2r14Guc4$W2yQ>Ud19jLox6bx3lup4{rn8 zat8V{RlvPkfVW~h&07tdQ1y^+O(*tDel^#9X6K43s#6emuDD5&h8Q5%HY?x`R!Ap5B8bjqC^&TUeo5^%Z~4?wOzlWmb214fg8WM_iBC;<~-R@2MSR6FbI1%?g0iy zV#l_>sZF9omKy2M=gdSQQmUw$^-JJK^@o+7js$22@BkrWSbm)v^DXIIGGR=lL^E(? zYTG-Rxq#qVt%vJIyt}XubNLGZj(8ejPJHvI#O)l<@4Io0jf^3K{I0!luO#x>;CLA~ z)z#er_^6w`(Iks1JhP2MHl=!tCE$~lP+Ngi9hKB(M_AF#XA_+<*Q{|U$=x0x-CbO& z+`Kj^)pi;{-p%9^c~K%I%eIFOQZ`{4^){&evHJDxHc|u$1MnYwCDwh?FG=vwGj;$Gpj|-@LRpp_85Fgy43J10=A>GNIo#K zapxomKURwPUMqa)>{AD21dFgUhLCKV^2+^C&s530lPLHF9aK2VqOL>MWaG>F?p$X+~q*zIb)y`(MDaCyYcL@ z3Sd(!c?>MO!ghcgFrEpDX3n0kE?`dQ69gH$O576n!1{SP^bG2v4J>TvBPar_*Tsi2 z6=u1c*tZI2q$MpR36v#CNLU=jSqjglx?hIvL+K9jceDV*yO3B7Z$C4<7d>HNZ-}^2 zb8QgrfPa~VVpV1mxN>%fc*{8upFX=uP>gIv=X~PBr#~E zjfiv$O)-}@|NcpIKGh~+g%EO;s39DY1$Xbx`q~`*D6!Y2ZkI{PbYj(2D4lxRq+1tm z*;b9S6L4~Ipm6Jhoi^4A?ls7P;K6}leLJ9$^jsMu`yx-;BU%7i+i=?810Z`VNN;W+ zGRDkoHzEbd0RQ0^pmqU7vae)GIw(BA6EXCJ9yu!*Sspxx`NwA09oQETQEedEX!xKF9Mfc z14BvCU4%q|!Yp!pCU*d2s1$%F^HL?2w70)MLBdJE*; zg!#y_2CA~7Y#ZE4VdLY1KYosej9cQ5m=reDONEOd1J*oX+Ki&d;E-nrh+>^X3~lI| zy^z2_8G*YUxv<_smyu`_HH(^O`!Z@Uta!hSTN~6qY)?Sm zqRpwT8keLE*^PDshe!npEp1y>DL}^jHBl}yJVzc0X6TT&+)z0!-~`wqwZ#DNw1wjG z3a09(W^XFUf&lYUG;88>&`HpaNC{Oz+HZo3%OcQ}@ImpBQ4t=dDge%XLU$8T(Dy^h zM6O9jlDRk`2$_IZHo0QbLPd_u2xSxdnL@kJHNeEOFS^3x`|-PTaEXg;qjC;1c~cDy zvcp!$v!RR@Y)ah`4K5DTqYox7B6L`JS_Uj!m;ljC9iz}?TtES=0$)o|s3z zeuzZ}%h6(n&JhqsN+h*KGHA0);Oa{RTieS;@lfY&H-_J%%QP^ZRTz(La)L|JP(Dsry=zgvM>DyX} z4RpRF|M5T{^?Qje0w+tQbju(Rz((aBHkmRaTM<&1g{Fq+C97M3J}ZI_1y)e4)kOGI zw=jp=Mj{~~Ss4U5*;VQCEOQCzp<{6$xMx68S)`n#h~`_+263b0EZz)sLfaU|f^V(c zAwHAJmqItdr58MhM>~`ZD`LylDF7X!s1h15d;xq3-%gnh5D8HP>K|v5DzbPZ)rdXg zJIEiOWrEwGiUunW#qt@3uIlV1xC;s&ygYR&!p=A-mS$*XyfCO*<2I2cI+|pXqD~R> z4z?7881KpO%Ea59mx#ncDniDBlyU?OufJZjfF2_nPx<3A`SMG_0`x*yXaKy<3>nPr zu2+CA8Jypp;5iW`5*~6B?B+5)K^lYCxMW=~?IvT-Rsjr<$QEcKA^=o24Gg3ziI|jA zi^woM`cy}1;~hx#dMHGMdnIr!9Bd(9*4ZhfHc@iy^5oqt8AC`^5q2z(2n<73saZXt zY`&G6LV5&9nmxHPgr5(vG)ZKGxa zxk_H+0R?%IpUFMxI!p<{3VeFfwfwkF(RCK-gm&mki#kXt$>CwtTGy^pf>fi!Bu#}J z8FRvA`w%4&z?=6hV^0LEhDu@a}_Pj=lMeHoh*zDfV|`cy}2P#Y-0W|T4%k7Fe5aIYs9EG&6bo-l*l4@=eQ;GsyWx;IUF zHWL4)#+^gn$@jyBg1#oPP1X>SUKc==V5hYv3N${wNVe5O4U?dlb%~=6eFXOCs!JoE z&9aW5H9>F*u30j^AfH z!n>)B9WXpz7JdPw6ABpR1Ni%Zc!sHA4;2UUt+q>Y3``nuOI5YwS@G&>(H7zwQE2$S zVcJ+wj#LiUv8e}jLJne9+F4*3G60edI8+cG^eI^7VgqkRIuS{#En~1Dp8}$x%7~&TbnH3FxwkNtJH`I6b6&QByl{PdyD-%vMa-)E!gh%g0hs7eL3p@=vgDoxOIZf81WIMAr=&bXy_~8pELnuM zA}I)SJ^ZxpxRfMh=8(??Hb(K+%Z|h-$<4lS??+!h#LTOYQ*JY1h5~tRX?mJSxKM`PZPMaP#uo3h=@wU z7gcNvA@>z~Ey0d@^AblG*DamOX1spDfg|!qV}s`eF)ham?kc_OB+p8tCOlGQA_!+w z|5OA|vL|8;_^|;r{Jg{og621^8)_0V{CyQoKO*7qdF8@bQQ!`g;-Z6 zd~G;@eR(DqTT=vn$6XyLEpPyH8FchP$t{zR(9r;Bg1iKQ5*l9z0F+2GHJpfiuQ)Jj z6qiJ;sd=E=!Qi48@+5D^5va-QP}%B56TU9le>>ULMFRjV5ks3&bRnP4W@Gp%7zn%( ze05;j_7I?&qU@FqY~`D`)EjWVu{H>_%!jKsNa>A$y7}Uc-~(Ja|3*-O8sFp|P_$T& zpf?r&WD^!?s+WH^w@erjr6oxQ7kR4a$mSJD&kiZ_cT+7WR*6=FW2zQ9FT|RqO`{SN zKTB!sfQw{DusHPzF1L`i$Pz%iNoTG`S$U!hZ7U5bD@F^jPgD=OTZxK{z)DbpUFV7u zePn4O{ghT18@xO;0n)1pJu(DN;RMiRfvX1n^3eKbo1#szZuVo^t74CR%mHdXl4l!aJblmN%)H*etcCv29@s zNznFqjMtCVQ4;tDOw?P`MKVDzI(Q(i4vBmQX`(YH#N|=qK85_%$B5=13K>J*J}nLu zA^K$^K$iM-a{+9kw*q}|uaE06%b%7w34nA-CTHcDEYbr{X6iNQ)CbxL;wM!< zrb>sRN4`qj*)Zj-6agyvEB#ZY9@u`w*On8Y2&bB#2Yb)1Nsnryan%}I|1)v zRn07RDkDRwZS@c;d8;#$F1a28qDI|gWwpd!uP(>yn|hHz4b_F`#O6`@yOX0!M@mhS z@oBYRC27U5Qf6tH-2Q1!Qg2IhtttD8v_dT<9llZ`jSN#OQNqfDT*5>k3GOa{FW;IX zDt4gKi%YR~btH44c9yb&!Vg!SCx|cum4rCldwo$cp|W20B0U6r4z;=8J|DGbe-Y0T3R;A;0pCND0zDgOHh@; zW72h4fW4S=1oer3>S5Vaq~|rSCaqB-AR}c2-({Vo@a@zlA73&lIx!Lx!wAoZLI%hs z;#)>gw=hZy7o8Lr2X9PRv^S_|EU&ZH(UZ<`NltnAW$Ye##S3KFM;bp#EYzLcVOMJ{ zI&6jLkjv`K5~q=GQq;Xk5|%eh2Bwdb4YLn;caICDN>HB~x^hU>t4SUtIvK!P z^3Bu_TJ+lMV=T2*@P5c>Efx!Itt3<$ULH#&qnq((P6rw7b5tOk#m8R(sDA<-svZ)a z;dN-)3)!rpQxB1`sU@hh9OT7upi-$)-0v*bZWQe0$TE+SeONJgZdWzr4YX&$>D4v*o>B5 zA_m`ed^iw2F0f<8SgxF&5M)3&1;&y7BwN(H9*8A0$??-Pb%7^?9x;AgV`hk@{54Jj>dimW*xeC20eTZEq9Rl z1_A6-10c;k_j3dbCnI8<&Z-f7L)}$2UF~&fv8ltalT#fgsrQRj)kFl^1OQAv@%`Gh2z~TNHoA^&}nqiQCr>z>18VM<<^w!zY{m+IJc>G9bA)LXBkQ zuMp?>W(cq2SqimHu5~dk@#6!;$Lk=dAgy%{hGIflMew0%cBeVW#Hbt1HcS95G|UuA z2?w*(#=^r>ky!VPRHYsP8!%I24@WahR5tg3=(uiW9om4Xe1nuB9$Ck(Y-J&F^K5Vd z_O%T(=R&!WJ|4`qr&Nc~fbvJ4IFo;jnzJgU#x`_roV|`&gsZn(QEgx7gPPo;35@F8 zR~8d-12m(pd_ImnLAhdlrniYAlBmhe%<@0QTrlZo>sR5Y;rIgq0;V zuU=o!2iYgF=JtqEG7N|nEFvByOakR1mniY;&42vJ}}r= znTFp33k3+WbHT9*r zL7gOM7=NJHWDqOpr2Dx#X}&VXft26sU$Ie9T7^Vg+%!V8tzI;?BVN=T4W5+?f$vnW z*WX;;Wv#L_u8ifTTKIpY9tei#3X&gDB&IfuhT9X^MdrdgwK>`U!Vgm!q66}aXMRH_ zaPy8L3N`(xYadAe8Pr4uqp_XZNqlS7sp4>Nvf#dP1tAM`SjOX4ESe9uW8HcaL_8R3I@qwQI-FI_!8a1i|fa#X+qHCd@j zQQR3i{dPmW78b&4w#INY)|W5_2nNK`A%>RJVxa(ZO23dx==Vz+$OM@N6DB*N-pD)5 z(6I%s1?&K@evuBBi%p0_6UFKhzQX{BOe%-Wg(Ng*k<>kgQ*e*{l#CJ<^3#fj8p95C`hY@>cTGBvK%a?(Ut+UmL^ z;7Cd&b%1#_XM(60U>%pz*i7$EI`*X^%N-ue1h*IVseq?AHtMT~Nx{Qkz_+G~Fu=Ty zYXqaA>B^V2)exfs@ad1{$UU&EjWcaaUFQK?Nb=p=8R% z67M3I2;@1wUq7Y6P$l4r&XE!V&QoiUyQm@S*ts@MoU;L<{SV%Og`3;M})#=I~PL1Pe#+n63WDc9XwFaU(phD z9S*jxr)lsKv#K{85uWQJRpgr3XKD}KpvJ59e zG+9GdZ^9rtB2QZ^;BYBk2L!Kuq*f^+#~B!*5%4M6BIR<|YzOOl^IG7Sq{=N7U2D)* zS2LnWf)S~1png}k>t=W7woSAozfG)&Ovr$&)D<*~N~5x53;@!Nj2l=w%utq%3LQ00 zR$-t5d4!a}(opzdy4)UBKwQw+MewuK!l!_TEUbo-z-jEDPNCIsZqw@&xq62fk_kcJ z;yj3kXeTM1S*u1SD|{|_b~7)+&N{#Hnjoq=OG=RJ5ZWbIATKt-)VxBcfqUXvWFIB| z(s8}hu{YAQ)j`#4{K607o)eZ|Cz^2Yb{RjWXGU_zkP1gM&4ReOtVPa#uvHM&l#<29 zSw_r-2JPqZ79RIP9q;PGMDE`3Mmi~mgn{wT*Rue%hr?2{zUz^eQDi~0$V>+$?Ugp) zDT(i$pi|F)Sp~B_e8s|77LA~l6N#Y**(x>C&`cQImSbfxF7&L zB`KzHE))-ye@(|71}P(GhBuTO%%v>^z+8o=MsAQS39nTw<$(-p)+q~BH}o)6haMLS zF$U=9b8f(g5F=Uh`3IY&<0-ayp$mAoo*6-2_Ypt{CcvU0qzRKomGBt6tnpA`svx+;4f=bnJ z89q(3EEL^Pe;$DLC+I0C12dd_MI?i+j9S%%DVO8sdqF7UV$kP@joWM9H#Z~s(>HD- zsTtJ}bY4O>I&RKK1QJy7c}hV|qKqEPrc-ra&e@T*#?;7lJW)gZQE%wz1&*TjG*2=T z${#num*YAExS&EpC_uBXEr{1RL*uGg67G?I6TrT8&XS-f0F;IB^CoJP6tz_~`h(Sg z0SWrlSa^c(z!q{7Ify7;WRM=vt0X>kGV_;5u!PuVr>QcE9%VWJbD3VyQc`9C??y@4 zR+j=bJkckbGsT(ar7kyey=feOZiPR+Mx;go950dL zj>3I|yqL9tU)Ra@(AXV2yq-aaT(K+|GEJT&bt3gZlubRHpof$2Q=0CLPDkS~9#jN1 zZVdth-|8B}c5qPBiS;3NH%>jyqhsHo{o6=Ybwxl-FdPdZfaHI4!WMLXHL*`R2L)3A z2GAM<97y6JH`@rfp5Ya&%DAxBx`IZ)sD6ybSyl5$=u8!88JaA~i9Kx4f@Hm%BAPGh zDDWbpbd=b}vq9GL`=Bdl5>4E$T1)IuFg%bQ%221G1!zzDnGKW54+Gai9wA{UY~na% z8+s_!dAT)mQ@KQt*Fpkf{uaO<36u_Uyqx%J%g^_e(*(*8{Fo0F=z^yLc*M`ri_!}y zFqAbqK@S{+&#bc^Pr?n|%&lIu9t8hvn*@d?4fGfc#52evl3;4Q31#aWB8H!Z=w03I z04ZpCo9qNcJyij$W^fV$dxi_krKfuPT`tNfETpieWhA#6aFg`iI!(l=0*F~BFjT6# zcSjboPaR@N2dFWux!UQxVyUB4-ab|9nnHrx^bASRb6xR#8T6M?nxZBERfsiD3-5sM zaX~#pJ+o3MaCD!Zs>c6SP!(3!3<;!4W|Q<>;AngXZr9O0UmQ27M5$o?!R)2UJ;l!`| zHLoK!*zOAaM9EdB5Y%1Aw&89sR}@5;v&e^gg#*D9$AA_ zL0e88e2t}3SuxMunh5g^ycC(6MvY|b?42HE9gADg5H1C=h;(%b1C%)AOk%Q;8WBcC zMRYyeHFdC-<@wYFg6`YdJ2q&!=3LpSq{muK$EWU17QvBnePc$^7?+d7r^=5^ZqTH| z=z8Fd#bfIAfHGURsG<@Md8Nk^T|tdN5kMJkO~?b5-==mQB~H=R{dtfnnU3SA@BlBz zCoJ`Ooo;LHjLqJtb&U~_Aq4fEp}^l$;$6qPNA_QjLr*onOs2vI-YIOyZ^H=Kf6a|h zD|*ZbYB)hBqa=M07o@B0i0RF{s>O>U+8u@XW=9sc?RBoHUQE(svrdow@#Ut+)$%40 z76=lt#u12UcfL_>baGRd7=%vg*?c{#i!#(9AIQ#{oFOrK)i{(qVMS>`g@(`$@A+CJ z?ytv%zdYyR|D3G*w>O0CORGv`Y)}cPVBA}s2^7_QWzbY#)B~}a9JlKb0WE9BE~#e% zKo&izF_4#a!UA}AKpbhgG*VxsHMRf>X_R9eoxL=DL2{-l#uYZ!0}5*(e`=(gI)p|K z7@cH4iQFqwpEQDthSF1yyowFp2No<2i-{V-6fQj(q712eQW31vfrVO7I7dwl`Mfma zk#VaqEqE9#J}(zZf@~lpQiLtmgB__*KSUaS(ep!y5p3*LeaYZR>aQ6!V815U%A|to zPNRVl@COZb@YXdDG?5PI!r!z&`vkbBY)z(n$K8FUf1Dea?&1tlT?v(pMo)Eq}p=W=P@ zR7n^#8>fdp-&1vZ9yN2b$EY@YjEvtx%5-OXYyypjhs|lcQ~Ux|s0Fv!o_FR!4ESWA zP|UEv8iV-^dV(Bz$k%y_cH9=if z=(*{cPTw>X|BynJ3#{t^2dw!8xydq5(SCkFE+ALke*<=^7aUAV{Imc70flKpLr_UW zLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~mUq7?@_NO8ze#leE8h@(`o2o_3Pp;ZTyOTVB= zLz3d+D7Y3J{8+3yxH#+T;3^1$A0SSSPKqv4;{TFDix>}%`|W#w2FyiS%Lyp5yBtKEB>Xd6xINKS#fkHyPj)iRYMZSi~E| zGn_SV|R=>w3Vu9k0r zgF|4nNZIQi@9ydB?cX!4{(bFGl7Qed5T22X=EMQSd&h8$JLJ*Yw+SHuTU#Wrlb~LC z-En)2)(gZ-PL$U0Py#3@k(2OH2Hh>Rv<)Z8K~YG85Xkq{Ui1F3-fOS@s@hext7^?b zaq`t;*RH+Sn)5ebze!k7j=kt53;;v~Aq1q9U}lUd=D1BlMEW}!00o~p@wPWnpYyLD z%Y1hMDXZXhA_3<3cQVwU>R%!NAl!1(n`x2Xe(7Z|wO?YsPY8jcC@`B<`upa;-d)#c zY*E+S-KY4P_qbpFeU5&3cwF!JlDGS z0WQDtmmvh{bCr|ZZFhu^|@(s>YjT;eHpEuqleF;e3i1yjjcvKSWzUOFU!&@ zPX(Zw*KAP~iT5vbtK(4)lbzLTi-iFqEuJyge04+5>^J{q7& zL;#aMHwo7NtyHEka25b-=alo!&$1j~5=OvNuN*=m3dSYc)x1&Bcs zGfuUhAO_jTj!mAA(gpb~)DE79*V z;GYc;H0zv=W5d?a(TZ%HAOS8oK%xw@v4uSkKh|6n1(<=Vnq`ZUWogcGmMoJ6fIzbX z^o?<-{ObTr$_hj({bP)J(hxFxut+OpVhB-yS@bp-q9{;^0?bl>zYL67S?<{sa8*?; z0A@Lcia<%AY_Fxh4o&abgox3iK#7F&hM8gS*Cqog*j3#wr=I*J1x>t#$L8}?Kju-K zNvpW0u3Vu2gmaw2dqM912>`oD-+Ynb5dffGOXggeHTcsN2d2EkxMDY6_p9!D`}Uec z$HP25^%8_ES+ZmRxO9numTwnKiilA(0xqt>FV>N{%8StTF#HT09PB5e7{W_aaV>fg zf=~@aX}HIxYT7z*fNVZCN1)h8pk=v-s+zR|psw#Me>~u zzbesz5yeD1YZ$gjJkJXUVeY+8pRGXUVdB04PMUKn;vB0_`2dwX{(BKRX*u+9DPt2xv&R`i(61v)t5s zx*8)Z3IRxlT-#X;lVpvaSHm|ifL!eLje>l(&eJ(6+5rJa;4cYBRD;nZd1-C2HFCIbGlWLW|L{GE;uyr4m0HsLKlo$5#1 zlmQ@}vXvHdbpZh)pt2D|uRg~rX-C^qmfiR^j9xNWAG-z&qaUccg{3xJ%LQL1l^Zvt zSmQ#3LX-;ts1?GOM2((b!#A(7p7-^QgMVEAZ@c`701{yqat+2q6a`qaZNf@5e3?#R z4gj8MbK(d$(aKV&CQ@o^02>`j?!bEWC~P+2S;hr^c|~Oz836vi$3vz-PUO8uJXX%z zmq~CXgh&FDq9{>${CY)Es5DWBF|Rd|M743YOHZesQapbqlBgmmtO2Y*Q3%Xtv*5jD zxmQaAtM{|VPe@6S2n^?SOK~2WRBr0{=Djif%K+fR3uvI4T=K#fvq_n~?)bH}*I$0c zm5|cERwkM%Ap`~2E9}nh`%`GELot3Llq@}jD_uz74uE)N2E%rvM;-W%Csfrp%D6Ka z&`lt`);ndI=$QejBm4pk2(P?DH>@-@d}PC%Wki=Guc<7n1Arlj=r+99UHuwG^`MhB z0xB&@0A7B@s{&ex#lgY?e&zaZ^S4QrD9 za?sY-Hy!{A0_oJGS-YgKsp76vzn6SK%=Rj*=Kgz;YJa~4lt%2=>pEvn+Px`i>t+?_ z&tL^a2@n?KQKE;29SGF#VQw(oL|fv1WXY0cs{!EaZn)M`k2wA1tZLj9DnzIx38d1f zf~=DFCs>dOD3d)7Fba}9u>qlG>s|wAJ_Ut8#Ull9t7^DfR_9dNW4BEzNr69O+?Zt& zti@?*1DeWm53|`pPf*M~fYXW`SVA&5Hw4t0GJ~!f!sXN$t`Oi+7n!+>JXKYN=l{er z0RVsS&Od616Q~RS+~-`hvfofuRd8>^wVb~94k((1B9kC+`QTM|BeN+@2uaxl{JxUDHhnKP4u`YQG|*( ziXae$9lG_}L-RW6NW=_pf6E&tt#`v&%7vw$A)8h*Y0}D)RlBq`YtXuvB-{2QXRD&o z2qr;zWt!6R(iwoN2*QU_2&H)bx_AKn*VnD0FYTxaz2UlF4O|L_AxLLbQbMu>G1)n_ zSHAj}ZO84uyW-WgsWm_O);H3t{Pl(tgU5FUv*_?;<9<{S2L@~$Oilbx(+_TaJ zNg`;%snhpy_Zm?^Qc6WX0|E+BY6r`GJt1^*C9`gz@gsk*b&CW7SU?mF4i&X800ybq zu9OCbN|%KVDF4gRZ_l_fgS^B-%iu4|2msLhhh(4-WR<5W949setw!m)=#-1hDGsuj ziiMfMUfRtWX6eQo>hBafBA5aM{&JU9<<*4=T?^$>y?)xTfAhfl#P5&{$CuTCRZ*0> z=FnY{-f7_oST@xO`T%a88bSwT9e_9Bj}y_M`IOl<^8lvm#Rwz_1py=hkctuu3a_V$ zsL6&-_HoWlYGUND4skd~SyPm~Z`!w;`o~1;TxYQdIt_t<5174Ci)IF}lxoDKBD5|M z*Hw0g^{DH2_-!xb%|-?&L%%FZ-Il>$mXQG<5r=6P_PPu`-A%z5Sju=fT+-0Ksilut=;%hP7a(m!wfL~#v>D! z!x)|1ep8Gqlc*ntJsnn%DSv^D2ue!@BV6j&zeRl*pnAL~m?i=f_0I?}OO`Av0DwY} zDu4#*=$}sSP&SZ+QL1=KVKWTYpCFoY;4 ze*+v(VpWS+niRU42FHOh?hB3_$D%i}q!r*XAbHfuE+(3+2bQ&ZxaHm+s@W`>a?%bs zy8!8?`TI4H!$4v7p&*BozyZzDGUq{u(>kc`i}glBR0EdINzm^Q!?^bvogX5wPAA7S zN&d3)2k$AM$1tV01kxqT1VM%IjIDmN=g5sevH8+OQ~R85Lwb~RmK~I)I@rx1{?D=@ z0PylFT&2+Q>#k8fxkQ$B;&nG%SJRyim?Xd-12F0~0RLv>TF^Zyq5C!)34)wZtKlFwB7e*9jPHGA`nJ8yWknO-x9dN~bfGTCE)A)t} z+gUQN=7<{&*ZjV#0jR9&t4!pPz2E1ExJ^x`iww!05iM>>G52|W+VQ}q=lXQ%uZ{j^ z;{z|;3I6&#Z`NNe1)XIFmsGPJ3TcqIW#5zc=}h6cuqOhBb^K&HFbd)Nj8U1VKVD#go{9v{_i)C@G_iU(~xgOG^GrIbN| zSEj&L)mc{u08cr6A2Wa-`rEJYqDr9-x(H$IRsAz|E-8>4vt@pdZ+wE0VevxH6g1sD zbVJ~a0h>alvdQs28gLQ<6i%F%qYE*qyc)F+y9S7^*Eh>p^aF3^zAc(E&64oKMsbR$ zv&k#VE`UF2b#mzF4xwD@M0@RT&AK6rC*`3-XP~NPFmrhUpkf9wAV|k>bR?##+{|7f z3~wDdaOEjaOWw=~cmdU-ca02HB~b_g$qGak>?>LhYHUO~5y7iY?c{((#bc5nDo0mY5yv2j?!O>`k^kNb!*fr&9Ec zRE0H;6x2tx%@Q7a*6;=)mO!bu&F9WCCN`u%*Z2|m)C}Y-yS7#+;IgHJy^)d)DVovr z4UR^-d?`F?2N%)OC)a1$C;({Y%sQhX>`JvG*qKpPidU8v?eAsZ1*|Z>YKMpyf-d=m(F3P8V;VW$O(ad=27w+dj`_6|hw5R;K zKcBzOoQ`^(tdWty9OY7jcpz>JiKj6zGiC<|FmqUZFg%o#ulss>%7;3GD~*aP{0+QO zJb_*t@a0Klpii7EW39!0HckYGt*7Mj8|>gtP!yeB}FrDza@!W@I3y6+H1*5Wn> zg)KR#gG+-a4URs-;&3;E%ix|2m0wmMp%GOzXv_$X<@& zWf@0AlNC`lTf!nh*UV|I2drfVPnVP?Y zgMF`TBRAw^K{6O31iT42eRNrNCbBFpWqMJPt>X(PcMu9afxv)5TkGf507{K$m;p)B zHUJpq>36r9w6043Rw&C7rc;${=PKLOrwaD@oc+3f&2+dXhRj=pg|H?=$|@NlDa+CW zT+Lov7-d=z!pO>PZOJGKH5$)P^-3uNo;?5e`BX6K7=4Tl*}?aqB}9u>prf{p2Qa-K zMbzQVdZZ%PqJ8U}0lmv|!?nKx0J!|hU&>OANcR9p zNB~05>jgByDhQH8$`Zf%LwfaBh`0g`@RQ66_}CgiGoOjgUv@7r01^U%)7`Pm+`4I; z7hcs2rcKuf0a;ZMk6tK$_MH#uZBbv)<2}cao_kzXGYy8r6tMw+MN!lMs_CqDf!&_O zyi3Ojt5Rmu;{hDYNEioIoJ;VoZ2y(7JR~8N<@!*5cfMhLErBr-v5HGb08J@GxkQ+CB}3$WV<^_ z2tbbqtEUAx0eb2k&wjm9OouZr>@)O0%K~7Wo)nmPeG|ox0=KPSi|6&YxJ{UaJxTo6 z01Ep6L8H4e5X>@swKa{3Y5GhChFKN_fTk|R_d=uweo`Awf&{SvVZvCM0F=Q4f&>Oh zRo@4edJ>pU;c9L`DS<)=+x)K5%A%1lm3{BrE2wUom|#I3=ZPE$TT#=<6nb7#bN6dyO3~OXcr}6RiJEXSrCq0Rsr1}qj=*|*Q%L8xr)nk_QfSR-jYZDWEJ2^=kBA@& zfhHcn`1Nft81@$^t+NFiBmX=cs&5M2aQbX&`=&ry?9S4WL3RQ4#Q98KYDbA^-~({Foa-*zZm>#vmNek|$7&jA`%Odc zPeNgm>+50fx>TA1MWXHXRZE}QvO|Cg0NngmH{16_4`Xo2P2Tz7gm-QqrC2 zu+_TkFDC{XGynYiUH=bq=xFt=>uZ_>g1|v;itMRIvT&SXS?=Mdf97Qzk84cr1*0q9 z{+2gnYro9^&@?cbVF~u%*qKQ217^vxAOI}N5>?RjKqy235)76eN1thyFjIgdKn4ms zbJbJ}Z!8=TrHm8aweJ-fBksx)-8*#Kd^6Y>+DX-2Pxyic<9=eGfm}dU^aoqIUTGa2 zpy73_E3M^BM%eBez_G!(zehc$#vO>Zc;>WcOMmW)J+aG>r&4+9*O- ziGxp2kLXi>!zODD0$sCf864H)jRBGr8K_7^3)JKk6}bq;QiiTaGPt$lbP&`_ z0@UV7C7qzta|H4%;IX0)y9NA&AeFvV$|^Fl)ZXap)9aWJO^?Qqn6-dN1bfU7MhA|V z5SV#$*RyOj1PpXJ2k_1XK^O$ke6}r1md4fR*C-h!_3JlY7b-d*C~3|*TbF0osRDUY zzhJy!q3L6M1J6NoiBphjB1olDygHg=j5mA7H0OH7m9I(=ArFgaq*A};SW-%)QoQjs z1Atp@dh;j<<5cTJ5$;qV9k2{X4?lz!JHPvvs(Fqce&|jkwZ1ijwjS`gZyZ`gw`5c~ z@cp*{$8PQSn@?Q)CR+CS_qqPQe&~9i;p;T-U0un@RK1S+{a@+&oS2-t`%7%1fYj); za|8*=K7I7aS=qDAGPjf|qY{Lr{W=8g1WT57X0HN+3UpP>&|M<{`CV}oKo!3T+cuTh zt~xyhM0g%LvF*MKv6=%v+&~cB*F%rNk^-+qPi?j;Z>(?OIwKQ_ZhJIKH< z=eoWuO^zIOI{A^^$xA8A7RaWNI=Qe|j zad;cEq@B8cz^+TGszOy&8T@4##mUcAfLX?r(f}hLO!+h#zS@$S^Up+>Sl1>9Fe<3% zpQZqW2qsrhKv3-Zg@sEgn|!h^9Q2zaf%&$>OGbG^J0QsF7~Q8z;4}`lf%)drx55DbzlPx3eib0b`E*W$AJ^sC5nIwUcFu z05Gmex#w@c!f6n~wzf}dAXf-8nZh+9Kp>drVQOX6STn{yJNmFz4Lb&Jnu;Ehjy8ti zYS9{;W!LZ+8i@=7v&_H#spbG>5HgOrHoYGzDX9cT6Dtv zBP%aj>@zx0YfD~OxRa{!c7NY>&p&V-G}ec1)*+>?3C}fzyA1$S&WBxcy78!zQjeYT zh?t?Hf12P~bq6bA7!qzKuuc84tO2q%1J>7QHNKZOliq?gF;vEWSr%DCjz)=*7t?6a zx^^kcvczmQYt%Kf+03ig%piQ5orCZebIp;r(|gb!XQp0jB_@xlAGMtgH?PGk2>{5F z?VMj|@K?<$NGR5F%UM+@@JAlt3y$O5WY`%Wg9_JscDHhUj-o#eVsn*AHriQ6T1goM z&Wog5ubawl_`IiSjpe$9^F7!)mmpO`ZX+qd6a%|L=9`q>^}07rOWWSC_=$tc@GM!9 z0I*^PvEq9+9_*~Dp!i(`M9Clllm^V%6o?8Pnp!?X>!JXq_I`STGG^}Sp@hrYpC613 zCAf_Vp>s`OmPOao_TVvI^~LKvpQ<{rX}ypZCOdJva$mfYE&Wutq76{jCd#Q_Lm zNi08q&%JC?DMW;qzv8OEP~C9-HG_V@%U^M&_jyZQ-T3~v#&FfVTunTGhUd_?J3%Kl z^C-qV{{DKSzxOd(2C2s%zZ_oNL z%lrUPH{se*NCZM91fV-xrBvk1ECCiOB`jE=fNBQus}EQoOqC2Wgzgjuu^yj99zz`m zv@XJo4H@dB8_2>8#^#Pr@*8JjqcTQKV2bQId|ltOOfQ#Z^{aow&s}9Y;yqdvg*VYB zgTXBGI!8bb*JW7>0E7V^8aqj56ktfNc8^Fv6p9$R&>Ve1%`16vHzE*8_&rRdqk@k9 z#X}tqk<7QmiP{TlNhDLsV@1^F0b;BEUcV_IRn`>pK4t`%WxZnN;#SdkMq1s58R(2s z^5kX*2b$SR1=@tg{X2 zh8{-h)UWb>C8XsFG+@&lr>f?gL2FXKc9^@R6ZC2?>OCrJt&Qqa*XMI6E)M=;kY|R@ z`{dqP(PWv1G>%wX)t2@49BGyV#bhvSkGMJKGMn)%S+YzI0GfHdO6gLV0%SLm%>WT0 zNRNYa^h1v4$T-hBZK;ndS?U*r29G8>IEGpbXAH-{YHGknO2-M+2i%U)1QLS0IGvnF z#;wwSzjOqi%OUbpQH|>foEUii!-lgG4f}aNHL$p0==opr!av~@9fsP2Ve>{&mXO}m z4u9sa?<7$K5)&J)@%69o>dFKo2;o#H>b3>-E7Ubk z%@rs4@BBzq<9DpK{*GlOmt~Uypj!MSL=YxZ^?Gchd$vJ96G5}4cyZA-i~c|$H{nC7 z=$tfwPpa<{AV^*uaQG8U>L6)~#pN7jzWYrySrqt%4JJNOw^5FndvH4tCkJ!3vowJu zs_6*}{)`^e#Jy6^f}^l?UMacf`nytj!=-hex;Db8?RJ(d3jsi1 zU0G6PxOzTc-T4%ij4+~{qZ27y8Y9|i!)kQ!hvS(Oa(&R1)nX(dX+)jztS^fA>; zS3o1n##zq{FM4PN4n|OV`zQd=axi#n-b7JvzmS!6maza}kU~Xj$aMHRo6cVkM^WP41Vsi-Ld^&^q|mJM#0)u(DhvQ! zN;5E0zi|Tgc~tNh*7tFZ6EOsTXz?m@)M)FFP8Oxtgo)_MUYnAcb?Q;gN>`DncE^>d zY5oF(@(t;!Bfa=40WAG`Zj*`fOIH;<3nTylAOJ~3K~xgc(7Fb#`IFncCP5-G3E=0O zH{VIg;4jNgnTTUcu9;dj58(g2>ppgKA$tyx?qJMTQ_Vbp#5R$Bx3xl@1Z0@FfI-}3Z#<^jyIh?Lv*gNAg@uHTz#sw0Z) z8pH10SoJFhmTiRAC)$n!9NB~1Tru6KZP5a=G)yB_mMj~r%@sfc>~t#fn?R^3j*)Ep zN!kkY_~^OcHp$IGK}kp6&sj16w3|270n`AP!p)?>6|HeYn^RSz_0qqKY-crd6KM0P zDuQ;M7Qn~Ibx4~C{0abU>6p}19`#%r5axTFWphAYz3|AS*-8J;Xg5lLK5jT>*LON~ zI92dx^mlgPv+OJYY>nt??=VU92Y?^}av)1F^8+m9+PWUXuMO+=VsP8LmypOpNouW! z%*tcxvbVQ~s;UBDCuQX?`QW+qxG~E2I?IL#!Ho+DDPD*G!2mOPj&rIUhI{I`kb#GY zaK|}kPkN(-4Sk_)$XGDT)&syMFynVDw<{MXv)Rl(Jq3yk2W~m|tqpiKspwMRc$d7y zRLz_a!bVbWe(M`H>S9PK8}DB#+NYeFDsq%^BTtr15n;4m1pY+8FAKEQF8AHy-u@uq z&{;C9bxKN(;?GA{lA;_|H;E=(x&MJf1*>?_gQuV0QTd|tEWs;pEJ*y=-=Mn zp|x#h--C0TL@@) zE=3VOc1L`=n{CvPLWs`$p9g?s*`OWk>bS|(1J)m*lV`@og@Dk^g>NqL*-Y?kdoDdB?xLLI|)Kj6acdxNv9NoD1=o8OXGN%A zGl$ao63l9LeLVTdjwxk5MsAIc;NN`i3tIoEbEql_DW&3V)%srup$NvA!C=evM_vOX zc~iN3wuig!`Fn1@s_Et$rydwbkDQ%RWCnoi-v01tPyDGBtVhlPtd&Da0xYH8G|niR z`nhEDT&yYvwClX4}lAux>ctZl@p#|h^J~(Kr zi%h*Hr3CYAqh{k4MFHlJ=7pKTl}izuW|utkH_N69`-RU567wbp$ACL#VWVMTCdKJa z;}o7;1Btu?f6+vyV7!~Bm*Y~%NVh2)S?70cvkMAfC-@Vy+Q8auw7`&7l1d}0ck?z=dvtI1`hRbigXcPY`vGis zk2k9(E?%QU){`1{Rv}B4jR1fkkFASZ-sj#!0(vqCCv6C;1da_1oLticAp`!5eNq)1 z!k%|+G$$dPc#_=Xy|1plo}@vuiy~(9mt}%YAXO#31NerzKFx+ zE)~$@A{Z(Sy=O#Gq9_Ol2eXy@=BCX~y~i81rB3>CWM!Fxn7Olkq`A=}EB7p$AyTrM z7cbSQvs9)dj&hS9%%XaupGO-FfN{qf)0}nPZa`q%;mkI=7cxQ2^{t4*eQdwR*^8_t zvaB5d-g48MDf+wh{Y|`YvZ?^0g=_XcclW))@ozkSE&CgJ@maKOsa(%v^P+%6ZHAra zI)3x^pEgKLHOmZ9W$%Cg`!Bli!VBNKs`DK(+n0zS1fePTXV$|lH@P)_qR0LEskeFO zL6geF?58O|2M5aql3|w#ZS*%^VZP={Vsh$7whaazbKU4dFvylG8 zmHDV{_n7ov1rLN*^R{lfltpLtHrM!#bNnnB0B)k%r~{SJHu`e?qR^9VYsjG99Du`q zLt8E2Cg>7#P5NIK$Fs=ze}4NNe>Bw}%FL~)-}%==`&veeYW=q;B8a(m>CBWLE-oF&V40YJZQjz;A?6LGh!sZk!ayVBJhHhZYNl54n`;D4x* zp}}PVs}LbX=i05;gN}IL%qYcn*D6bvWqLg@Gk!Us@(ME*wpO~wn8RHmNzTn*S#}fv zE)yhiQt^yybaf$aYmFb(HhMY&)RxxmGZ(X~hH#2e0~&bA6^bV!l!d%~N{);los93N z>Rc}xrhSaG()}(>WOCUo>%e~uRrboYW;jZ$P1hS3(_8IMy>ssV&$9CX(DxX}0~awU z8u$2*JZH0cmrmVtFMBO}gXNI;I_>T4S;fA;zmJ210~|VZ2+WM{_>S-Bb)1{u`o@j8 zUW02=`z*J&zRCXQ?_Ty2HU`0unwVLtHF?`Hdp@_^)NLhC4BnIjYvOJJj@{a?PV&UX zZz3EUSkpJ~^e?^aWjw^N{w`k9;N*GV@1tt(`e#uWNJ?l*7eIA`5Cmy{JfcLS2Q@nE zy8!+|`o6Tk*A{-nXKx$4$qwKTHe_f3TQR+3k z8B{RB5W6>|!^^TnRmn}d899wU1OXBU6OmMiPXJ&P1@+Xuw3C-EOO}On?n=dLV0VpGHqJ2UL?CtHLEX$nEm{U$%{3eQxqm-3i zt6Y2UBqJHJJ)Kom)ynps(kJQBlfHiFH*qDe=`Q)$(QhN+mqM8J;LX0Rqn^HF(6;;f zXE!6u&H_NClR5bB@gjlRBdvkJEQ`6Ts$u8B2OmUPmN?^#GeD%Co6Tl;@WBW3Wtv0E za<5jqSCr*O7(3rqhIje#axtLZtQl6$QAES*M3PsZy?=AQCFgrK^Gvn8ezow?|Q<%^2x}~Od2qEzHx4a?m$_`^lMA+Zox9Q)q zEOBsffU+#}Wtu~7dggD?C4ca9?31C-4i18Ae&XUcPj+3#`-q58l%@U+?sYTCXBF$T zYs?-IfrJQPNNRjvmTtM@oU`ftd+uc+7{tO|Us`l-`8GN23Gy2fdGTb~E&ymYuJPZL zBCgN*9j0U%QdSV62nQj~qFY zcij@?mY?{)soqSXcF|N*zfF!5Guu77MpUZKtJWn=j-5F264lJ z{7E#FSj(x$E|_S64X@V9GEtda1kiZc?6JF>@l37`n*+Deqzi%woTkN4;0#u=Ff+<> zFH9#9HF%^UN1Jl`$wmeknT)f3y~q-D*SWc}EK^Qg{H9tIaLUoYx-%tFZ)jO{RGm9< zv{~OuRkg408;@U&9Jv{A_1UL1Vo#ThbT2p1rS`%id4XhEE&%-WU*E;EnTl!^+WR&G z>KTkj|BItEXwTge{oRMgiwFd^Q#gEnvq0hc+-Fgdwn@vTWS&|gqnH4~URh%QV87=5 z@51(6d=_$+EKPe%?Qg%9E+oocg+Vt?C41Rls_*rVU2y!m*IK56>;(0{|Ei|j7654w z*nPjY4fu8cI?8@Umhl0g(DhqVlAfL*K!PA3z$@KY)bf2CDr+I4*T~D-Q0suxy}don zG1hN4F-w4oTJ4e`TJiPClBF&uE`Ag7^Z!n*{C7NJBaD75emB1ZfO5sex8zNppxU{b zC{;Yp@49PV8)YoG@ponk<<4`?rYD^G2ey-YqE6m4H|v&zV#ITvsAFz&mMjYZz@k*0 zZA1cs2qb{A5Nn>HoMYTl_2~!qlT{Mlex3N*qiGf!S=PyHBabK!vaE@9&2mS}>2z2Dh=uefft;< zk53*xlQ#H*IN+Bh%d!EWpaNw9u;9Q8Hna%q0)K5^9ge|5pny#gxj#?UC>CEycSk2U zeInGCsXj}V744f1i2N-Kz*ZBbTGYJgnh7$DP4b1Yz=>&8r>LDsu5C#2w6~=UX`rs>x^UmFTeX7 z3YTj%eIQ!E$7<6>kLA0NWou=qnx=uDI5E)p9UC~^mvL;P&;QtqJ~-G?rc%Cb&S5IM zP(P05yKdmN)3m3x*Sls(ZyF5fvJU`o{ykr2S3jxJ|0?n)QE3n@h)@(o#|TN~;NNj% zya?b>`*rH>FLB@CKx=KEEhkts1sq=gqleGRk&7J`;dg5qMWyQg1Oye4=k4k;L_wh3 znw}*~mTmKjiE!x98J0XgsW?TUN@NI)ImlXef!cr(w!fflAOJVxH<=mIfjS3Bu| zpQ7d$5WL4X#4sce!RG%1t6!dWx{B$8g(8 z35K+5OOWv94(bh9Xb)Hv`3h#ql4ToEhn?`DQjS%!0n7)9Z7E{YA*}zf$5C^esRsUh z!@uit^2pibXka`5#efi;0DkQet#yt}qZp_$kp4r*|JbcBGg&5lNHj(E)Mp7&LYH!J z0~pR^{aKWhPMMiSVduG!Fm)k zi`dAG$FB`u&pdt8lEF8FhkfEnr^ED?on8U2ImuLU5P*R-KQwrKzBDRd=A6k`R(7#`?Jrw69h=M zV}DpJTvptB={~I6|;pd zVt}*&Twcx<4G5goIr-$&MifcDj@(pL07fXDADkmDgB2<1G9-qgBa&+qh z)7T^RC{cJFzcKAspLKY_>H9WLd9ueo#x^~dCCfNchKgFv`#=#!7+j;9*?jrJ^-(xw zxu<+nF`frnhyt>s{wT|?8&1Cve7)i4=@2>hJzvwS8D6v0eoLi$&EIkT6;YA(=3xBi zfj#C#V8X5UZMGxvM4BvFMg)Ma)}<(XVr0Wjr8b_Mv=JMYEa8S#mxcfx85s9cNtO^| z4=!JqaQw#PCey5%bli3+toZJRI4Nyxy-3zsWAMST7{qGa+`Z9m? z+_N`KC#gC}JJpIZ7|b$~zGJwtJ1SaLfJ6b1@OX+EU9>Ez>!PovKg@ot43N@`60(w$ zjIQ|91zAU}76h7WZVKl~ckn;*_VpRO6!;T@Ai3TFISsv%B6JoVgv0F~Rv`%G-k}Tt zhg>x&0XC1tubbaR`-D^furW7+{90bSud`y!GLnOC3rw}5vjyc+h25FrVbs2w%nPxP zIbrBAP$OL~85Pur-!z@yorA<{fZycr%k|!Xrty(P)Zo0dMR``GYwG7KWfgSz`oOR& zvd7FS(wW?|SsHa5d)&uZe9k)S+0C10weqOZEKAhU2K)sil{$SSh#>UVW6x73t0=RD z?_*A^ff(U(HB;~KWPb0o&S-b!=!YLlapS?dQom*fcgoyWRUFmn;wM|3b5j&$vI!&& z^7L3TJ(4U2x&Ey29Q_*(*erSSD3DEY*b)dt1s~w9`-{(y zS$Y8!!p+faQKDh9n@^p-D0$N_zv8OedLSZKBdC9G*KE@)V?yvXMsQ@hM8QVQ0MC)^ z`x|%#=Uw$Kt+1d@Rt>5!)4$9Qe1z6beWJf%ji#?!UDvQ4+`{g;3r^q9CnwIEn!#U| zr8?>i1@fHlO#lhIV@!9jsy)*)8CemZ%6$FWH*8ax6ErxS%h>r*l0L>o-Al)7w(Zbk zx5bb6t&8@>{9BY|A~FU{ISFULpV52C9VG-rQFuTw4G!Hjks)+AS=2R7U$c5dHTAlz zb!fZc1>`kHWsQ|(x205#MHGSxFY2efCN+oA5X}w)AloI!uYIj`CH*;%EY*LRs9!LF z0sgRe_KZe{cgw7d5QpF~_I!Q0;reTWzc0Vysudc4<wWE*rm<$+-`IaP1e{M7dMk zc>|BMMm@ud02;3Dc5m+xX0wCN4txh7*_#BC$@7Oh5~2b889=Ajhys0@|5DTVh(_S; z{@#QrV3sUP1AuCiaWwam0TzMh8jm(w=X}L=3WEZdpY%X@5>By@&s0w#FcP8&j9{Fq zU}jr8MMI~p7*I(~{AJ75bChx36pZIP9v7897UpX&ZIv86t#6_Cb39wL>zPBMV0jg9PV0Ap=1!4WoH4PpRzI20|15) zVRXuEGOs0M1t2iynFD~bEI~v#I5@!Z>wZHP*o=bG8@eo0nkNCX102(BR!X-(_`7dh>o zB}=mim#PSB(l}AjZ@ez^SjXNfiW0Ng3=8vA^|un|?M z(iEc5oxN<8nXF7SAx^b(&@4#?i*bX=UsGSw;eYG01CDJ`Mzm6)Gq*|B$W1jg62w zr`3^U`m;WHSc3(bS)&97V|K7_Cx$4aP)2({O5u`wuzncAEUxJdUfMlz6yaGB?XEHA zPLSrDqR@CT%a#&{e(OmT#Q>*|(%%#4JJl>DEr6?2yu{4|@$BHey+bI9!s;YI)ekZ= zDp~2q5Q(aq*{EUso0)T}ICg%m?ID6N#M~krO-j^l!!{EH&bL3ZWa*LsZPdY_=vZ{i z2V1`VFbyez5fCD(sax(jgr3|8d%xr4} zO?gLh|8Q!rgy&LKRg#Zz7vzF_?&VPJvFGShkn(L-Gpi&IUquiEdG11%WdJ}|&sR6x z&7h$_;8{#=xc+JYgjc-sRVrm#6sTsi8YuHQpq6R|Ll!-cbE@Br#+pHi-f!mz1FqIC z<_t8z&##TI-45?X=23k{is_!SLpmpHO6mGxpZML&UNY?JzwOwdFF1O5*iSfh`d&tw zp(E(tH1eo_{+$4TcmCdg!lNGj7~J~q+XB6F@w1O9dl zWn}oNOzqqtO<1E;@erR$0S6tEVfWYgr$2>@pZ#?8UgiM&J@CNS@xTLL&o_J*MBjh&@N1t56zTd@jU0E_ zta>?uis-8J{CRhOnOF5Y0W~JnFPETYTH1Eion`j`U<~|Jr^4+cuA6TI&ouLl4N0TixVz_)$Qj@$OW3CfSvof|$KgH!SOHCgAjX zA?-BiMy9h~@bf6Y?VQ9qcI)bkzj6WgKXnt%dcn`4yu>*z2dedId&x~9OO>0S`v$u7or+)1?AzE;T1oUT^j@@v zNazXgOuqEGp9Fo=H{+YX_dEcf3_clnst-GYFTMVSc-a4OQ@-I_ELFu2LUo82wlkaU zC{kvf`VDjn579;qK?Bub;y-u6>HGNP;pLB0RGsG%BC2m}I^Wf4?kw9bUJBSPxVWvp zdH&+!izrT?hTr3Spc{{0n~eTRS>fPdAN%_chE9(6RuTexXB_gt-=ZGSd~`GBw-!Zx zMyh0KyX_|N>u#-n}L^`Aufutz|A%R};w-eUQI&z|OhXy4P(Qjd9)x-<#Q@Ir-= zPH(RVWM;5ruNIYUeX3J$>I^PuY~mOXfDy5#x1mnn$A1TOsxN zzsqT~FyG@JJM{2KQ6p$xE!`T3J5D5! z(|c7&fQ3Fqvdj+*UW$fg-x15|d*?+HLB}2w+4;4m=EBt|$e=)Xj3sHiu!8TY8?hU% zzs8%Aff@kx$yejouX*ijENB}82Q3oSO8vI>_xDgL@$HBl$Cb9Vbrf4?S&pbk-)_32A&wTa^`0t-Rjn91cbiT>k?7Re1ri7iE0+{+Y zrT3*_$MWZ2`i=&9&IqM-uar8fsENNh21k)B9tosIz-vgYO(Za^`5QhZr&C88Af3l} z?u7j3cYm1w^SeKsyxHZ^(Q6#S!_{f8!e<_NWHo-siMPFJ#2^PPbak9>Nxi-&3WSEy z7Np1ar2;d{xW6&L3nxFo<1oy1fGdIE>sIRAcj=^Rh}+jzUOn3@kN@1?s=?|tRs~&Z z!op5FA}}CTs@U(^AQG)*>#Q3fSkDu7HFutZWr_%>-Rl>ezK?PEwncJBjeplwBS%4! zarU)It!L=B{h%+#1MhtANBFrHJt&qUHW%CVojkOq(>2^jB9P;L;ACMrr6Pp=$-m`wN5ddTWxL~AZ2oRK2h2z&=jaU8Bui#*R zzp+*k0FGb#+RkA?=p+CDAOJ~3K~&D@P%&^%uX9=I+f&kw-=AYRJ7LLFPXtYkQB;pz zw=mUFVU7Xr!m@D)4{>yuJpCewbeWLu3PuHDfubNa8`%43xPqeBgs{$d9~Hhx4Pa14 zB_#v_Oa(;IuN+VEm^Hnwn%Dd?UUB8CYp)l2a>Ma!U)vj8#u2}c6JM5awiFn64}Ghxm3= z=lbEOaFyfF`3)s`32iX|gqQwJEh-(|)7cOS)fEf|L}AL>v>vp9H42tZxU}4{jA}G7 zG3$h|YRWjd@VGQncc|t^OF<}fBa7khtkXY-KYuJrPs&lhjg>!q{~e|$3RNXtfJhJo z3q0#-=MP?|H30b6zk4PA@Z)#czn}MS-oU=se)P!M)XM-EiDzYQ*euM?-*X>R#7E`J z(Zdg2NI4vPk(%Wygs@=ll~?_u?Fhc*rZ(B70EzTVnxtZGa--Y49=bidH zHtDL6$|&UJvvtHI04YIc7Q3F8PN4caqmbgv9V^iwlHlH36#NaXvA^q{e@Nx6EhzrC z*I&KR`TX1Kug*wngXDc5{1^i&vL`k5k(pKlmU!+np0v<J*s6?vTP;j`@o&-58ALgl!1$W?1@Xe`HeMz1_Xxc zch?u;_$1iXtZJOwDhe^lYk-04A&-LFRzn>T>;{v9M4}9!Z#`&=JeubMr&%_2q4^V# zOvkKDG{%{Nzcg{OR7en#8A2P?x(0LPCLCWvEW#bd1E-r7=2re)*$5U%67?Z zfATT*r+w`e1we#C2voAdk3QwGE5F(0HY$@aeK3+wrf-~W!`WJ5_Ot1(AN(?NCln+c{qR{Ch4euUHp(A5mPQAtJ<3VvQx)tJq*Nm-iKupr zENHzZxju8u`b?JT0Kbp3l&rgU^}K3kT=>I} z+X#JIs*rdWEQ=TDv=*bi_+T)ni?DrVT+L=Z3QFopH6q7VRmYAYNwn(jk(kY9mc%q& zfE*iZSC<4XjeSb{e!V>AGF6%{b07 z6)B1Wgmv{{*AjyWy;`p8-7fxLCMsH96I9=_8;7bl$A}UbS?V;XR?4bK6jOZ9v6HYFL^!#m6g)8EGba4d-)zM$?2q; zW0`U`yWX3@p90H1z$TGk>a&e~sr#U^F(4oIwL6l2XZ(~%mg6CbdG}6y{p#`rj2M(z zrHF7Nn!(dOmMPI>mZz!Bt7er4Xw>sUsI-ClS9B`$bc);6l$hg~;$pVokKtxMRt*tG zN<2afUKB+u5Hr7Jv<09?(ADc@8s1+N5PD`Yb2eyGlB2iBkv_uF51*NB$Vh-MZs=&z zleX>;1flnHS(Yfvy?h}XJ(swS4_4J*QLDQ)I#lUo^}2b4lXcakUHu?!zX*fM zfYt#9*?VM}=1nr#>9#-l*v8$a5`o9T3ehsxrd~|nlVr?h2bSoQrK3kPIr-+FK(IyO2L}f^1)RLL z!a9;9gmJZDNcT-wwE=?$;04Y(Y5ib%U#O){y*|+Tjw914k>Cb9lvmC)Wu^x?6oo)h z2z=mAKf!_sKl;?iZp1AUNz*}HDZy#_B&t}uf@C#ESEW%a`&uo18b>ib`UgTk-YKFw zZx{g$QMzt_PD+WQC|iHy$`*$ZYcW~|@HK&9&Vw-<#gF*q=--HXWj52GPwMG(VQELx zniQf?z-Gf7>XifRS_IEL3Y~Q+)U~8kf>#4WK_IV2+cbvM%W$So{o<3q)^fMNyzE%RwM2H5N_?fublD-4uNasHM!E85{v_4@{h+fTf^P1#I_L@!!@c88?3go$o9e&i$JZDn5 zcDjvzSluC6M`?`?ft^zwm)}e&`sc3~fadaV8*h(oZK{kY9o zx4_eX^a*6C(lJX*r6nguCK1s((nQP@IFe>4*V zU=7{^h2GkFm3YysAv6Hg)XB|e2hkh52G^(O9fif`T1g}bQ5ONw%}R9@-A!SNhRAEg z(dQt9NCI{9)YrcHRY)oEt>5}Bt-md++I?g=vHY{2c$b%Kiuuq&AXdvpdxVz5(*hZiKu@`-ihjH?;bvEjtjnvv?)+xt0 z`ls}RiIDpfL)3c&F1_rfOg4h3^i)~yfmvFhSnlls8a&?o);I0|0;t#JaU=MlTHSV- zm2&sdl?5`GQ^fr=(M#b|jd6y66Bg4mVdSD8dm;hAd){}49z|V&0KEIQlRQN-=)vJB zn<|}17qBVNwrE^9>J^igRpVHy#=0^S@eIV=t+@q0aJ?(r_dt2&t$#~aoCnvX|#n8psYLnNbJPb#alu|MCn=WPmRW++A z8vll=bf$i8;1BW(lIQLE4L3d2v|16>5DFnsj0#TTsOEatsBfhGv@hEce3Yy|Jap*L zLIA;}*!TDMYrrAPW`m2+F`!_brH}-()axxZC5bIZr=gkhYuHSOus;^gr6Q$zKm7D0 zCpkZNWevtoIkPvJG$6>2btKjFr>e(RDv7E}2OggD^a~sa zl#JP|!XNzM?UMq5b07)wreRFuw-{w>ygyU(C#AGZ{l0=#qu^9T@c6Y?_wdM?fswCV z+L|Vs0av)gk6-)R*0Z_ds$U$HP*z1PrWa}O$3gkmwka(=o6Y84JE^}jWykgajPSoX z*tfMk80$lKrYhUD{?UiMP1rKF1jq@z-OkH4sabjosF>ykUa->>0}Wp8iKM(^hN{qc;~ zc>!gU`>?D}46jf;w%qgQf#-kA(9<7w{wLlx>?btM-fnUT{Eq$jJ&K!jU-R1$q~sl` z=^NmHu~g&Rz$gSDp-Vpq9l+21cYJH=_lic_ox|+I5WSZ^w|D&J4Z(W)^($V*^Ejub zbnB8|_;;x4-!ORDH}uo<3-RG2f!&1UDyKhRYXXtL6knrNvEWEy6Sb2^;8)L zukGy(pR{0(Xa4oOh_mdbP~tB`#gtzA9F>zeWZE(lH~l| z-MeYsL@Qk_i+}gf-{%3m79CEuraBYKjC=R{^+G)B!t?1_7oJa5B_W7VYSQS*0ze-K zrWRIH-O8$^C<+&bHQ+DU3^c+9Uk%VTBcl!u_E#2NRo_ydU8+V{iQrwP{>~?4T_1=J zQ$zixuQW$?Ow)&1(-{EnvQ~FvAB&>2hS&Uey#_VRl$bg|)785x>D;-mwIR_JBB5{l z>}hIwtjc9bJ$R1K_5*ajvudJyxol+(_@fjk1feh0%TGM>$z)hbW|hPr|Jh%xRWXQu z3v{^0u_`egbS7mN7ZjVq>$)d3&xTp<28+*U6&t$l!RW&Ds%LJUjLPMH@9l@0rgRMTw#)G6+l=ph8dZ@Micn zJBhq4H&o*7BXX(!h zZH43yc}TBYRI53A*Ea(vfQP;pzzN{YGu6}I@-11p?WP3X9yYSV%$QX&Xe2S9u3nZv z-d^(bQwD%7PA~P)zvHKOFF5@bJ{ivwU&vvt+oC@D)BlWFPO3h#Il4FGxOo)evh20d z3B#7qk3IEq^r1ihBo{(uFhBCq|H@B#;`grH(3X7`WYfZ%;({WZz9~>uGt0{tgBk-2 zr*z)&`K*G3IbBy`NK}V(H!sm30~_ItWZ44v=amw0K;qmKec}dCLcwQ!zS1ncwNnq> zK$BZPlFdAi{vgd{Swj1}c)fK_3$JF47R7K|_`^^Begc3$zw^H`5#i*={))@8z!QGp zU#{$?i9P@@<-JZN1zh)R$fjNtWsM<;X82TpQcB!#{WX&~|Gh(pYG7(r*Egjg{O|Sw zb$pJi0Ah)B9x#BiC<-7Oo^IR+S2<^sO9RF2I_df(NH{``C*N2A3D0Smeq+`MmEXQ4k8968^*| z|9WM>sy}Rv=3q_*02(?Mmo|-Wj;mvnmDHTk(<#bkX3P!_ED>>Vb5=?OOASg%T0p%V zz{ic}(XOz#=lW3H!9s}SHO`VHwddls-sC8?Iio(&^K4ex5s_JztGA}$JQx7iA9RJx z2c`+BH`wd=p4^DE9GT6e9WA?vod39gMY5`}zdyr+`}?^4j@8r!mTlXLy+!Rh-+aI| z1pp%`AbdtIzQN1}?qqWvq_j#;d*VhU!>3XYl7w~)@`Wa`O;XEMS1#CvinR}PhB|8c?yv|?$IUoGF6fsA| z`?97Ji3l{oNY!TOg59}p;Rwv`-%L50Hwig(sKnl0iDJZT-Fc6HG^yrC;N-{t8-MuZ z@}hyQM9_ZslPkC zhfELrwSz!5|I-8FvaC~{^YkZ?5R?ogEh6VX{?YWLCw>pjW-6%lq1!*Xl*KKED8go* zru9i#Mx?|#Br7Xdb3;Tpbm)xab_ooJ#j>ar&woS|HMt{l$kD>j884hL@KJcfX;1AyZm!q!H-ZU^q5l$@-Xu79_AdioS zP?Uw21|}RF>_b@IuFCVK9Pd{%-9tMtX$FT1OmbBzaM=X@5<|>a7jc~ul|nSlIdKhw z>oUhRQscRb+PaP>ftbH{U4~xaxCXOJP7I!Xd}7f1FTLzTTw^qVsRMSPuPlq&T+fsa zWM;@&6^%Sr={m)w^TKHs z(9t3@4a6vVrJyT7d-|l6`n)DE;0;U8Oje3s=-R`i<3|2zuew`{I`8>Xqmk@@Ftq?u z-#9Y!LNzdLzsJ-9&Vm}!ESnr95`qF!bD>9$Nm*Gv;Zt@P68xrp$mEEgnWc*wnssGB zpf^&ks%H8lWS2d4INiGw;mMJ#!LAtR1n?bQ1yodD6Mrl%AT24W{ORtFrCCrwQo2+c zq`Q=m?nYvjknRQvX_O9WSh^NidcXDCbKZG--rl`;&fGim&ctsls82L1c^X0^#OJ~v#;@oVu#l{I&(E)sn_Tx|X z=A!5i6XVG{$E30PEXvMC?mhNTf=r_ObJYI=Tz7Qk_8S}mYI+w5`O(Hi3?gHVSI?t! zKr3`Vsg9ldhm@rarcB!jiKdb%!o5aM#UgN9Y%Bj36Fr%$`zFXQr5vWYf0+jzystgh zb&*igih89Y?;N$0O+@c`o8wIoZ|p$nN?CL*9=ZttyKgBCL&9e#kryA+I3#K)mmT z6#z7K-aQO8(LJ0hyx*(;;+}(K5NlkSGLZ?#ow&xp`4=jK32CkSE$wIeOxDD1y1>Nj zw7u^%zxXN;5U#a9h5!C(XA{tD>w~z{tey1e)4EF>tU3zxzu=MnX=7Nx`2D9VC&%)+ky_;o@ zE_&cJQ!D5R;Br>SgU^JjptO*^hIVo(GnGo>q(zZEI=`tE;Df36X{VXn5XxkO@=44Q zmgHT}EC05lhyT@8jY27ne~doUdh}Xx0e0gDT}$8hcL>x7T>i>?*^3Gm4{`Aqzpji6 z%4NNoV~N1QLG#TUd}h61K=f|QXQG2Otef+BupMVf0_e*h@dGUbaU5%gCsg%ez0xN` zwd{#WuT=*en2P9v*6tp~q^|f@A$4V;483N7`*rO-z~mrSaZ3wM@8*Fq+^|Pz9QY$y ztOpVHjR?v1pGRb85kWE5mOsLRnm&OJ)81k|vkS00e~Au?)$!P8L)cN6<0&S}HHFkd zy9TFLYor_D{tcO8sI-&xr=SA`P_09#B)k{?y^Os&XI83h4fSq|f0#pt0)nC41Pl^I z7&z1B_LdaOo?3MlnT+u)pVGX1ng`tp3O`Vm=FjD_))*QQsPR&ZGIu$q{!0*0BM!LR z1pN8Ej}WUjrX5vV)rz?`3R0anN4@;xJ>L+m@SN@0#hWp;0o&r;ez)XBK^x(67C+~} zHNMrq-j+0dp6Wu?LR|g*43`s{Jwl5x3r1Cb%A2K+X*f)&nK!E6dUDq4* zpmA35Z#*Ny>RQV6$)dh0!wenY@lSSZL-Ms0ZRbU4NiqEzx%>4JZTLC76ux;ms$lTS zZOKPB+8U|FF!YJTQ?2}A2}2C!cd?lqjuQRYf&Wgj%R$>J1z2A2FMsjqCb5^6=pR+K zzl-U8`9^XZL#PlPe5263EH&%Y{Zb$DerrOwS zmB-lCVb=D7R2zKWd|P(9|E8YXWk288h*7Nf=tEKCX_>5nB>jxfApbX@Y5H^yC&_+X zG0yW4TCaHDyb5c`6m2Os+SWnGQm)?+|1cOpxM59_>st%sQGPtma=qSeXK~?js+D^?Zbp^M^xRfBrTX$`D|Dq zbOC+d2!)x^C?l2EK`+=$JLKjeIP|Ep+Fuvt=s3K{t~#;4Xq{@14^qy0D)gr6hXekM z?8g;_kp!6J1L(GhaJj{my==6}$#AV4^4jIqW(_T-pr>!9kZAH%gUz&gYvtZ4B7Co# z)3{DY(tbxtyY+I1i4kSWL7#5RmL$$7(7{TvKT6lms>&_nyv^ODm1v?3>7MkdQtrKz z(5dz~-+~y>Pf1&!ZRh(>Q6IC*mPW!%yyyVHSRx4$NrNB;}ap*hHtTS{VRT~VeyezCSTG`7{azc z_N?$WpF%4Kq-f_(l1xD%;GwSZ412Ya8KYbAbMOO3Pt1;(2Lh;NeYUIT}ql znsxi9lV$CxZhrerPQylBO*(0H!Z(N+C`Y-N&sN1ATdVniUozxvNty#tymBcRt0z{@ zU->Vd!`#2!EOr#V?TyF7g(^fSef4w9kuD+TLWL;GbZ?-NS`gVh$`~=^zvi}VxvVop zJ{LGc0V3ym3< zKe6gs>_U!Kkp1@p<%#QhoNq68xXn?tezHQub;=%0^VW3 zS|r;V%O>QOk+b^)o|JK+y1d|vY`;A0mq<@I>CDgYZip24L86^lvggxQpM4C_QiHZ~ z#fGP^oP6{?Z43xH3$mkna{cc7d8hiUZ({5)+Y%%JFX;LV3_M;>JX$h4&8nDmKgfRR z3V!%lfvoZwyD#}<75^G<7aeE&jhM?G>}aVlz-nbm`gK2__H_2i>;41ge_$GdKo-N3 zCP}Wj?`;o2q?uBxO>e=6sy-baZ+yoAP2*RZ4d=k0KlYQ)w!hwG>ma*7=-^64N~B`# zq^S?$IrtjQI_^E(QKYV-(2RaF=AqwBr7{7p31kF^ugSsJ?rJ(!y{A3Q@mthcCG)kN z{LP=7T4Bhk6JM%twd8W_qUnI`o<)~~Dw%*m+0bh?npAtBjuS(VVm95DOgQ!{1a=dM z^5$M6Zi=99qnn?O`{#B_VpoV+QY)*743Rn%dZH0`!%Kd{ZjRzo>4^$q`gTM7vJ~5b zCTTYvPt}Yu9)iS9(`_6Ko3UQ0y|>?mmVCSuBKW=tUMEV7Tv#jBEks zWtGki-AtIbx6WkbM$TBeScj@qp;dw|G_C8|(kEFq%Lp~R#=q_~?WfOJ6mzkGvihpK z;|iem3;LsW^pM#q6^3o5nO)RdWV#KTc3gn0VuK~M#H?JTsK$h}+fe_&rD6M{SW^1< zHgHYlGRWysmf|p=Yhq=Aq#I7A)SP`)YOwB;t+4eRId_(Yo*<4z94i@8d-Tpje)=?p z_3Uk$NlcTVShxas4CDm$!?i_r9x2~;5BVpbKXIHkjG1pm;ZCrF;}#XUR4%LDW`+=S zSw+)?8g;1$j} zZ}KTX&Qv{rVX_R$qACLgAFb|7cptCMVpb*<@cL-v-=`?IKJr=k=oO;WTP8H%omX?+ z$}m4MFb_T+9bF^m)RplNe~2};^AJhY0q-qm#IexE3=$_~!&*!2DWHyn|1~zw`V-sAsz++7jX6M-KhOZmOJqO_J1S0=X=W~zxsCX~DcV9dQd_~MaU z+xNw&T=7w5)WmAG-wJVq%2*y?r4)$c{>2isf6?)}2@?~^DUOE%973YCKC+XI>L|>a zg=V$pzTqK&4%AVN&%V=qge0*5COR?LvLF;KaMpq?hU@+yO9kL!1!g$wJk{fY=BF zV#qq|O8}#z!U6P4-OW&KHO_hSAtgW>(m=0;fwRQ9=JOvXDdDWF7Dl_Gw7bvq3fGY$ z9?j|1{M%*L{q(O{f*OknV}k3n855}48KMba6=sd`U#h2}34ektjwu0-U)8vF`Sk)m zrkSMIrVY>JxQEgT>MHR6;{LN`jlG%Z9V3*RwH?O-AUmWO^!#b31oNfHZxeZ{c4M>rUKQ(}H8!+eF)Y-g++7_lYsHL$$ zlStkOjbDp~hN~M5vTgCnZ%v;%r*Rq%JY(ZfF`VgMMJMzRK<{=ANYPI-IrUx~&e$

trhAU)*t|@ZhN(ZU^{>BDbM~~a#9UU)v;*%-S}8%?p-5h>IY-?_14AXu z;GSBWP0Ti@jfB&Abz+{_|6ImxljLZ`or_QuCg^Cn3Q}t837ujCX7{Oh)yUH9;1MWQ zclFwYv*%_4?EKs6Wi39a>Dg{Sp}F_7vOQ6}tll)Nk#>fpSFh03|lvvHi2-z^E|HRXA{NEWWqPemmTm#7-6T-V5d$2|8+WzcI z%SVChbRA81Mk#nNK=*kqAwenaFB#u)Xcf8)ViHeBr;jY6T9@y=V#VrzVC5eLv=&pP zzR%@~bwrN8mfcdey-|s*qtD}cl@=w&Tl?)z zL7Fm!r29#XawH2nA2@nEHvEnP)Z)OV&bhro1IXR^;_nK6tIuVU*CkB8DIh86GvH&3A4`nhH1A1lx$VKhkg@Wl$Y`tH1A{<^_VQ!3$? z?j{D=w4hBf-l!1yBvkY+t0?aAAbM#sMEbl1-)mOZj_@4meBvK?R8}V1Iolaeq(S_o zp>MYHSt;|E->l4;41$b5O26{Ohu~AHVefaV;JbDgBxq|)%AFB@Pgd5pBBdsvBxO?ToTkYYU!3jgo^2BFGqmahdvOrsd*F&Ft5&Yrf?e3~C zSpT!YH*0<(xG>Fa{`;g((nrIz-S?>dkDPGcw#X!0Xb}&e3*W+-kXw zmK^KMe^W9mZa=9n=%3_aXW{4e_wAr4cL}>DCY)sVLk_C8UTXw_jcJ09`Oz_<&Gxi~ ze?vjb81bgcZ=?1frlU3HYargPsFzis%~s0V?7rOM+Rzdv1=E9_2DEHPf^U{D?t3%1 zhZJlA5=QWhw5rH7=s2i+H@?W}_DM3OUK$<$`A?hWR-F4a0Bn1J!+Z-Z?J**S1!A6& zaJkpmZ?|SiK1?SQg%q5DR2&Qii7#$2r>sh2D256*!&MAaKGMwZ-ErJu4<;M}K z_3fK1qt@=n`R}}tjeY|hKOW}FxhB4M6|_C9F4DwBRD7$ko*~rJd=8xn8+2t3`Q+aD z=^9<9D2!6JW{4hK!5X9LPAA>Sc5ZP)(RR7Gro`h(>e>d@HfDnU3CEPk+~!jmYf_Qm zZ#GrU*_WSw3!m=_TpY*{{A)TW%mX;~tyTp-Wc9(Z1%ChjFW#JoaC(u|mZ^lbJQj}_ zXGb1j&yMV_IL|*K$W>nG_o*Md#9Zpb3wq@u&oCR6S->ZJH{q2xQVYtRB3EF+G0^vi zUcokFWQd=L*8u`fG*3D&- zQTRnl{}bvSu<3v<`w*%XN8HpR&+Pibiz0O z1&|H7&+Td#qWSSHFNiUtC?hlOc>oBP(forjM)1J!+8CMao9U zxSs8}PorTx)NFw@SRa{O2UvtdGDxB@AijOjCmpk7l(sc*W*v3E#v*hyUexoYiAJ}@ zh36M7z~THNEy_P4R>q}+&Lqh)0dpC+SI!(30PvcPkks3v3lIlyy?jqLH!Rnm$cYuN zo@Ak8S*^;E^KP42my<@}#wSjR{h&vb?FfUx=ZE(I+fVJJu+bJA+O8%(7D52XkT^=G zk>cFxsmC<`P|jC2HwXroZ3l>H;_;1Rg+`9BHrj3W!6GBUnU*zNsefK%zHwU8|K&te zr-suY?#!wmDZ3rj!+(aKhz$VQm@-?k;a?xRKVq)s@o21!RIBacbA6HL=S{(8ixhyk~4i17eki!aIVuC-2sIG*_NUp{=5^8qNyrxbm9lB6!3) zJl~rXdHCFrQ!u}mgfdr|CJ*yRn$Ro%C-{@mbcgstB4*l#R{uHr2?L<8*7KSEo4|?b zXEa>u=&p88CjnzXR^;O(?u+d`>dNc#i^mxi;?UOXtKUn8}~H@p1kT?h05l* z419o+-)%QQ+zWBJF+u+CTlGoy0^heig14-%_)iq>Lku}(SCcM`9W64W=K)ARGs1!CJsEin z(9f1j^~OJr{%|VB=5{NN9ji$i^_Vlhmny@%brVc*R`zn{=lf2o(K7n^lgPI-Ohmxs z(CEg?fa?{Rpqk6WsJX4g&z*?`za9{WD4iyR=fil+45kO-Bier6I@LP1t&!`y$1ar$ z-I7_iXF)#(<0M|)K0L$Bf00iJ?0&+g4{YZhC!}kRe~P*~;YR@xn~2pq3JL;)um6D! z@g^lRUtz>}0BG}323a#}#|Q&9A74YQO;;3H?$yi3yukgT-eB>|`+(u`099iSEXKu}q0GsWm+dXdXNwRp)hcKO!nTUA|bN9@}Vd8a z?Y^_E?!dnXnD@R#`rxnK{T*Tt=R6ur^B^pu;M^D)*oPBkoEcn6HnGMZyragKnVQ^? z4J4|0Bfh=r1|oGL$f=DI4FFZI7aV8-dLFy1>iAJoVSyaYx9-+Ed=fc*EAlwXD3NHC z8oukvZg#3zN5fcy8m^c0z0t9l|8iAgw%CO_=D~pu;XEL;46NrfXq*V$vCgOF2H$vB zK%D_|T$E0z<(}jiBb&%5hG`p+)6nB`OYPK4GaX0y19{K$3OBYN>%+M8@+;Pr?4W=- z&G{}x=%yxvdx5uOj4)j0_+JCcmuV1TwZqRfeih;Kjn11`SG+E=)qZ+0r@33Ui9}KQ zFyZ%KO{T;`X3$OWy5$JhNr*+wddUHx8B@3ZSY&=Dd&|w+;nvn6rd`g0@N4pArx#pzY-``#iPD4~!@nZ9P`qJu zae4?PBgKHI?k0ELi#_b_63=r?QmH>g%0%fwG%xzmYCT@+w4O2)j^d(*`vAgEMs)#A z&E>%ab%CO?x)NW}Iywv%6c;8Nh(1Qq5Ji}O09E5T8zw)cnE5f>8bhDL7Ndds*_>9_ zDK|7j1~q#akRv!y>AYgp#>x#@xz{0xrV}}7p&7tQ^Tv5;_E}Ze{k;!Nk8=X`FAWX8 zh%kmn*&vV$H&(b8GX1}Jm45TYdQFWV6}2K2F70?&sI`MD*9#wiKI1jeMN<(j%J?z= zhlWOwy0lnF@~uG0-CpbWCpt2!B%Si5lo?4VzXOWa&yQiJ=tRNbzQWj7q%0&XLY7Rw z!J{uR1!FLIrpOZoQ`6VT)Y{eVw2vCyOla25d5 zV8P+q;0RIsjw!vIk|*+WHh5O2s9nu?RxJjAcoo=455A?i#&DFd_z1D5`BK@r^a|hr zK!Mdwda4A6u-0y+FgM`N1R#!YB-6maXk-H%$!3rnhJ8F1D1CWPuZC0tU)-9R^eAfyXY)IXn;9oH#&+K)CUc9`-ECl@sJ(>WC75>XTd($ ze8H$Y*3c4+JBlb#jZFF3?|MJjZ00~po)0W3)>Y_vSu6L9+d0Kx=-`Cpt-&TfF)^dp z5$)%|Q!7iJ-_~>E#>B~Z|KYjSFj$wRVh1PEc z9Qu_$10`oBcT|pM$|KNlWC2-BSHpB&7GB^1SC&JcX(?!8o!z z3-P;^`J_X8Y4>l-Usr^nFz%_ zUdq{7M~&AXm?#RjvogLlz|&vm&&Pb`K51?tE%!MaEeC_^9Vbk#|AZdUUunj5lq@y9 zU90crTMF(9+H-u{7pijBr1E*Yi{CY>69+z#S#gc0Xkt|C%Cg~BWl0Z;RpsYl@DCwE zF`dycCG<6`pTP%S0po@I-{Ge;I^&TyapbV`PmwAYO3XYH@}|6Wl?J6G?oQc@IO0P| z2K$m8N*IkNIDba(?5xO3c|vgi?XZcFT(7?r{dB)Fdw+2Q3*>N`A!=97!ESuQfO5P+ zEx`G!@?@kKmpms}Z3a)svq@>BJV}k@tRET)zqepQL(wuCduqQ=JZa?1ri><@j6XYN z*SGJ#3JZ_>f%c{(mm=v<2?mb%-v=mEG_aOIs z{i{)=={>0>5HSA3tX8$rr=oavwj3I9JRd9W34Fmr9ZrX5#Vx1kbv-`shA{7vt%VjW z<6a#K088iAP3Ot607w_ppse+?|v5A5qMc4Cq=Xsr3kxfAqiCo5wld#5B zC3=$<`MF9Hj(ZcZU5Rw0t{xK@!;(cYgKuP^<3~m$u>>xF!2rOAYl@UBJU6w`Gs+nC zs2wz+0ea2!qa}qdmwjhzt|s`#slU{Hus7$j1qYmFr%m$9^{f6U>sL(R6IQUJ-Xxx}e3kE8fQsN?#4aRXPjKP6r7b#clWNYg6O9c7hhB)w{A z--JeK{+YgX@aQi@tUl@D4+b#IGqA=r7AwsiTDQq5Fw8Y}Uw)abM4~-6@^bsNmU?d&+)J9SbW4&oKO(ewRl0lBI^zQlC4$z7txR+X;kY#kf)N;aQU>m0RJkF2=W4KB;7E?$o_7vA%n?9SoP4S-L|va z4feaZT-j?wi$n$;rEh~akaLDP&iX@*Z zrFdMpZV_2_`B~6;A~Io0R-#l)=C}S-NrO+~ETu^WFCrZ*LtMa(2;s z@vo)2jp3X|o0lG9APr3H`JYnu$IIP7?Zh-vA^;@}_+;K2vLBV_lX!he$@a9_2`zqs zpGTd&izW`Ksdj%ZU8^nj!8(4E`uEQvt7Z3qiQK!nt+vx#Cqp7kE9rmI6pYC@4tU1D zrs3V%$kdODe7BU>HsISyteVmQ_^&-mzzhI(%PUJN$dpm`&+POb;XL6xV-Aubrz-LI zuR#GhOdQe8DX*;kxQ`UIcUr8w2%g*F8qYA*;yKfL-TVGu1IzMkOyJ5OVU3`KaB9EO zPhZ$nQ}C!ZW9#^0l`a#X!TnYhcEzErjY7zIN74gUzMuWurE9Lb9cozC zr%`!=lwf}bN@N@es27@zKqG&&6{5D}sHc{cZtK))6*zbGteSoj`&Z(pxP>cz&dC^i zIT{Y3dDH#&1P>qaZ*;_}YS+zQnO_eY;0r`ohawnk_Bc!t25a85w0%yxJGd*ho`xqi z+@5nBDD+&q{t}B_n^{qvIW;u^*Al(RyOX8J-CID3)M9Q`tUzEG`- zx=JDg&6fAuJS@u`3$p;*2=N6+i{zB`3;H@Ddq`Hw*%K0M5D!JdEKPcQgb#Z!J2#=g zf}Tr$Ay1C}xjn&OY?NN4ENgLaWcXqSPL5o1Qioi%$ORK;sPA+J7nv#Wtm-vzt)%Sv z7WVZYmG(B9KdW-khWBger;j7#cOn*-(!xsB-?2%Ue%Qg*l%Dg}wOWrpvP8*5x9p)W zsX{{DVXoYH*xo@?zd6v&+gGr<9TxeE1%$oS*78c%aQ#9TkyHN;@8qUzHpU}}g7}YT zbyPKkJ9Bi(R8otbICc5_^5-9Mqw^0*20$nhodI@}Ipus$gL+K?s*0N6N_q3p{{de? BJ|zGE literal 0 HcmV?d00001 From 15c47780717020892f080ed9d9a2de862d5552fb Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Sun, 12 Jul 2020 16:21:28 +0300 Subject: [PATCH 4/9] Added lemurs in english, russian --- src/main/resources/assets/avatarmod/lang/en_us.lang | 2 ++ src/main/resources/assets/avatarmod/lang/ru_ru.lang | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/resources/assets/avatarmod/lang/en_us.lang b/src/main/resources/assets/avatarmod/lang/en_us.lang index 0f575c6ad5..32b3976d20 100644 --- a/src/main/resources/assets/avatarmod/lang/en_us.lang +++ b/src/main/resources/assets/avatarmod/lang/en_us.lang @@ -576,6 +576,8 @@ entity.Airbender.name=§f§lAirbender entity.Firebender.name=§c§lFirebender entity.Waterbender.name=§9§lWaterbender entity.SkyBison.name=Flying Bison +entity.flying_lemur.name=Flying Lemur +entity.ascended_flying_lemur.name=Ascended Flying Lemur entity.OtterPenguin.name=Otter Penguin entity.OstrichHorse.name=Ostrich Horse diff --git a/src/main/resources/assets/avatarmod/lang/ru_ru.lang b/src/main/resources/assets/avatarmod/lang/ru_ru.lang index 53ca0adad1..8e6c990b15 100644 --- a/src/main/resources/assets/avatarmod/lang/ru_ru.lang +++ b/src/main/resources/assets/avatarmod/lang/ru_ru.lang @@ -489,6 +489,9 @@ entity.SkyBison.name=Летающий бизон entity.OtterPenguin.name=Выдропингвин entity.OstrichHorse.name=Страусиная лошадь +entity.flying_lemur.name=Летающий лемур +entity.ascended_flying_lemur.name=Возвышенный летающий лемур + itemGroup.avatar.items=Предметы вселенной Аватара item.avatarmod:scroll.all.name=§d§lСвиток From c672e2db845c6a2b4c510dca46a2d02106be582f Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Thu, 23 Jul 2020 22:17:51 +0300 Subject: [PATCH 5/9] Update ai movement fix, collusion fix, when attacked he will attack back(if not tamed) like wolf. other lemurs will also attack player --- .../client/render/ModelLlibraryLemur.java | 1151 ++++++++-------- .../entity/EntityAscendedFlyingLemur.java | 747 +++++----- .../common/entity/EntityFlyingLemur.java | 1212 +++++++++-------- 3 files changed, 1583 insertions(+), 1527 deletions(-) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java index d377ec1c16..f73ceac360 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java @@ -868,24 +868,24 @@ public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbS this.Right_Wing.setScale(0, 0, 0); if (entitylivingbaseIn instanceof EntityFlyingLemur){ - + EntityFlyingLemur lemur = (EntityFlyingLemur)entitylivingbaseIn; boolean gliding = false; if(lemur.getOwner() != null) { gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); } + if (lemur.isPartying()) { - this.state = State.PARTY; - //TODO + this.state = ModelLlibraryLemur.State.PARTY; this.Body.rotateAngleY = -1.5F; this.Body.rotateAngleX = 0.3F; this.BodyLower.rotateAngleX = -0.3f; this.Neck.rotateAngleX = -0.3F; - + this.ArmLeft.rotateAngleZ = -0.3f; this.ArmRight.rotateAngleZ = 0.3f; - + this.LegRight.rotateAngleZ = -0.1f; this.LegLeft.rotateAngleZ = 0.1f; this.LegRight.rotateAngleY = -0.2f; @@ -894,327 +894,326 @@ public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbS this.LegLeft.rotateAngleX = -0.35f; this.LegRightLower.rotateAngleX = 1.25f; this.LegLeftLower.rotateAngleX = 1.25f; - + this.LegLeftFoot.rotateAngleY = -0.4f; this.LegRightFoot.rotateAngleY = 0.4f; - + this.LegLeftFoot.rotateAngleZ = -0.1f; this.LegRightFoot.rotateAngleZ = 0.1f; this.LegLeftFoot.rotateAngleX = -0.8f; this.LegRightFoot.rotateAngleX = -0.8f; - - + + this.Tail_start.rotateAngleX = 0.2F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 1.25F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - /* - this.Tail_mid3.rotateAngleZ = -1F; - this.Tail_mid4.rotateAngleZ = -0.75F; - this.Tail_end.rotateAngleZ = -0.5F; - */ - this.ArmLeftHand.rotateAngleY = -3.5F; - this.ArmRightHand.rotateAngleY = 3.5F; - + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + } else if (lemur.isSitting() && !lemur.isPartying()) { - this.state = State.SITTING; - this.Body.offsetY = 0.5F; - this.BodyLower.rotateAngleX = 0.35F; - - this.LegRight.rotateAngleX = -2.6f; - this.LegRightLower.rotateAngleX = 2.0f; - this.LegRight.rotateAngleZ = -0.5F; - this.LegRight.rotateAngleY = 0.5F; - this.LegLeft.rotateAngleX = -2.6f; - this.LegLeftLower.rotateAngleX = 2.0f; - this.LegLeft.rotateAngleZ = 0.5F; - this.LegLeft.rotateAngleY = -0.5F; - - this.ArmRight.rotateAngleY = 0.7F; - this.ArmLeft.rotateAngleY = -0.7F; - - this.ArmLeftLower.rotateAngleX = -0.5F; - this.ArmRightLower.rotateAngleX = -0.5F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmRightLower.rotateAngleY = 0.6F; - this.ArmLeftLower.rotateAngleY = -0.6F; - - this.ArmLeftHand.rotateAngleX = 1.6F; - this.ArmRightHand.rotateAngleX = 1.6F; - - this.ArmLeftHand.rotateAngleY = -1.5F; - this.ArmRightHand.rotateAngleY = 1.5F; - } - else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { - this.state = State.ONLEFTSHOULDER; - this.Body.rotateAngleX = 0.35F; - this.Body.rotateAngleY = 0.1F; - this.Body.rotateAngleZ = 0.15F; - - this.BodyLower.rotateAngleX = -0.35F; - - this.LegLeft.rotateAngleX = -2.60F; - this.LegRight.rotateAngleX = -2.60F; - this.LegLeftLower.rotateAngleX = 2.8f; - this.LegRightLower.rotateAngleX = 2.8f; - - this.LegLeftLower.rotateAngleZ = -0.45f; - this.LegRightLower.rotateAngleZ = 0.45f; - this.LegLeft.rotateAngleZ = 0.2F; - this.LegLeft.rotateAngleY = -0.2F; - this.LegRight.rotateAngleZ = -0.2F; - this.LegRight.rotateAngleY = 0.2F; - - - this.ArmRight.rotateAngleX = -0.6F; - this.ArmLeft.rotateAngleX = -0.6F; - this.ArmRight.rotateAngleZ = 0.2F; - this.ArmLeft.rotateAngleZ = -0.2F; - - this.ArmLeftLower.rotateAngleX = -0.35F; - this.ArmRightLower.rotateAngleX = -0.35F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmLeftHand.rotateAngleX = -0.7F; - this.ArmRightHand.rotateAngleX = -0.7F; - - - this.ArmLeftHand.rotateAngleZ = 1F; - this.ArmRightHand.rotateAngleZ = -1F; - - this.ArmRightHand.rotateAngleY = 3.5F; - this.ArmLeftHand.rotateAngleY = -3.5F; - - this.Body.offsetZ = 0.2F; - - if(lemur.getOwner().isSneaking()) - { - this.Body.offsetY = 2.4F; - } - else - { - this.Body.offsetY = 2.0F; - } - - if(lemur.isChild()) { - this.Body.offsetX = 1.1F; - } - else { - this.Body.offsetX = 0.8F; - } - - } - else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { - this.state = State.ONRIGHTSHOULDER; - - this.Body.rotateAngleX = 0.35F; - this.Body.rotateAngleY = -0.1F; - this.Body.rotateAngleZ = -0.15F; - - this.BodyLower.rotateAngleX = -0.35F; - - this.LegLeft.rotateAngleX = -2.60F; - this.LegRight.rotateAngleX = -2.60F; - this.LegLeftLower.rotateAngleX = 2.8f; - this.LegRightLower.rotateAngleX = 2.8f; - - this.LegLeftLower.rotateAngleZ = -0.45f; - this.LegRightLower.rotateAngleZ = 0.45f; - this.LegLeft.rotateAngleZ = 0.2F; - this.LegLeft.rotateAngleY = -0.2F; - this.LegRight.rotateAngleZ = -0.2F; - this.LegRight.rotateAngleY = 0.2F; - - - this.ArmRight.rotateAngleX = -0.6F; - this.ArmLeft.rotateAngleX = -0.6F; - this.ArmRight.rotateAngleZ = 0.2F; - this.ArmLeft.rotateAngleZ = -0.2F; - - this.ArmLeftLower.rotateAngleX = -0.35F; - this.ArmRightLower.rotateAngleX = -0.35F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmLeftHand.rotateAngleX = -0.7F; - this.ArmRightHand.rotateAngleX = -0.7F; - - - this.ArmLeftHand.rotateAngleZ = 1F; - this.ArmRightHand.rotateAngleZ = -1F; - - this.ArmRightHand.rotateAngleY = 3.5F; - this.ArmLeftHand.rotateAngleY = -3.5F; - - this.Body.offsetZ = 0.2F; - - if(lemur.getOwner().isSneaking()) - { - this.Body.offsetY = 2.4F; - } - else - { - this.Body.offsetY = 2.0F; - } - - if(lemur.isChild()) { - this.Body.offsetX = -1.1F; - } - else { - this.Body.offsetX = -0.8F; - } - - } - else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying() || gliding) { - this.state = State.ELYTRALEFTSHOULDER; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - - this.Body.offsetX = 1.8F; - this.Body.offsetY = 1.5F; - } - else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying() || gliding) { - this.state = State.ELYTRARIGHTSHOULDER; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - - this.Body.offsetX = -1.8F; - this.Body.offsetY = 1.5F; - } - else if (lemur.isFlying() && !lemur.isLemurRiding()) - { - this.state = State.FLYING; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - } - else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) - { - this.state = State.SPRINTING; - this.Body.rotateAngleX = 1.5F; - this.Body.offsetY = 0.25F; - this.BodyLower.rotateAngleX = -0.35F; - + this.state = ModelLlibraryLemur.State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = ModelLlibraryLemur.State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = ModelLlibraryLemur.State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = ModelLlibraryLemur.State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = ModelLlibraryLemur.State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.speed > 0.17f && !lemur.isLemurRiding() && !lemur.isFlying()) + { + this.state = ModelLlibraryLemur.State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + this.ArmRight.rotateAngleX = -1.75F; this.ArmLeft.rotateAngleX = -1.75F; this.ArmRight.rotateAngleY = 0.1F; this.ArmLeft.rotateAngleY = -0.1F; - this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmLeftLower.rotateAngleY = 0.4F; this.ArmRightLower.rotateAngleY = -0.4F; - this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmRightHand.rotateAngleY = 2.6F; this.ArmLeftHand.rotateAngleY = -2.6F; this.LegLeft.rotateAngleX = -1.5F; this.LegRight.rotateAngleX = -1.5F; this.LegLeft.rotateAngleY = -0.5F; this.LegRight.rotateAngleY = 0.5F; - - + + this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0.1F; - this.Tail_mid4.rotateAngleX = 0.1F; - this.Tail_end.rotateAngleX = 0.1F; - - } - else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) - { - this.state = State.WALKING; - } - else { - this.state = State.STANDING; - } - } - //TODO + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed >= 0.05F && lemur.speed <= 0.17F && !lemur.isLemurRiding() && !lemur.isFlying()) + { + this.state = ModelLlibraryLemur.State.WALKING; + } + else if (!lemur.isFlying()) { + this.state = ModelLlibraryLemur.State.STANDING; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = ModelLlibraryLemur.State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + } + //TODO if (entitylivingbaseIn instanceof EntityAscendedFlyingLemur){ - EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)entitylivingbaseIn; + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)entitylivingbaseIn; + + boolean gliding = false; + if(lemur.getOwner() != null) { + gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); + } if (lemur.isPartying()) { - this.state = State.PARTY; - //TODO + this.state = ModelLlibraryLemur.State.PARTY; this.Body.rotateAngleY = -1.5F; this.Body.rotateAngleX = 0.3F; this.BodyLower.rotateAngleX = -0.3f; this.Neck.rotateAngleX = -0.3F; - + this.ArmLeft.rotateAngleZ = -0.3f; this.ArmRight.rotateAngleZ = 0.3f; - + this.LegRight.rotateAngleZ = -0.1f; this.LegLeft.rotateAngleZ = 0.1f; this.LegRight.rotateAngleY = -0.2f; @@ -1223,309 +1222,305 @@ else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) this.LegLeft.rotateAngleX = -0.35f; this.LegRightLower.rotateAngleX = 1.25f; this.LegLeftLower.rotateAngleX = 1.25f; - + this.LegLeftFoot.rotateAngleY = -0.4f; this.LegRightFoot.rotateAngleY = 0.4f; - + this.LegLeftFoot.rotateAngleZ = -0.1f; this.LegRightFoot.rotateAngleZ = 0.1f; this.LegLeftFoot.rotateAngleX = -0.8f; this.LegRightFoot.rotateAngleX = -0.8f; - - + + this.Tail_start.rotateAngleX = 0.2F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 1.25F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - /* - this.Tail_mid3.rotateAngleZ = -1F; - this.Tail_mid4.rotateAngleZ = -0.75F; - this.Tail_end.rotateAngleZ = -0.5F; - */ - this.ArmLeftHand.rotateAngleY = -3.5F; - this.ArmRightHand.rotateAngleY = 3.5F; - + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 1.25F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.ArmLeftHand.rotateAngleY = -3.5F; + this.ArmRightHand.rotateAngleY = 3.5F; + } else if (lemur.isSitting() && !lemur.isPartying()) { - this.state = State.SITTING; - this.Body.offsetY = 0.5F; - this.BodyLower.rotateAngleX = 0.35F; - - this.LegRight.rotateAngleX = -2.6f; - this.LegRightLower.rotateAngleX = 2.0f; - this.LegRight.rotateAngleZ = -0.5F; - this.LegRight.rotateAngleY = 0.5F; - this.LegLeft.rotateAngleX = -2.6f; - this.LegLeftLower.rotateAngleX = 2.0f; - this.LegLeft.rotateAngleZ = 0.5F; - this.LegLeft.rotateAngleY = -0.5F; - - this.ArmRight.rotateAngleY = 0.7F; - this.ArmLeft.rotateAngleY = -0.7F; - - this.ArmLeftLower.rotateAngleX = -0.5F; - this.ArmRightLower.rotateAngleX = -0.5F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmRightLower.rotateAngleY = 0.6F; - this.ArmLeftLower.rotateAngleY = -0.6F; - - this.ArmLeftHand.rotateAngleX = 1.6F; - this.ArmRightHand.rotateAngleX = 1.6F; - - this.ArmLeftHand.rotateAngleY = -1.5F; - this.ArmRightHand.rotateAngleY = 1.5F; - } - else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying()) { - this.state = State.ONLEFTSHOULDER; - this.Body.rotateAngleX = 0.35F; - this.Body.rotateAngleY = 0.1F; - this.Body.rotateAngleZ = 0.15F; - - this.BodyLower.rotateAngleX = -0.35F; - - this.LegLeft.rotateAngleX = -2.60F; - this.LegRight.rotateAngleX = -2.60F; - this.LegLeftLower.rotateAngleX = 2.8f; - this.LegRightLower.rotateAngleX = 2.8f; - - this.LegLeftLower.rotateAngleZ = -0.45f; - this.LegRightLower.rotateAngleZ = 0.45f; - this.LegLeft.rotateAngleZ = 0.2F; - this.LegLeft.rotateAngleY = -0.2F; - this.LegRight.rotateAngleZ = -0.2F; - this.LegRight.rotateAngleY = 0.2F; - - - this.ArmRight.rotateAngleX = -0.6F; - this.ArmLeft.rotateAngleX = -0.6F; - this.ArmRight.rotateAngleZ = 0.2F; - this.ArmLeft.rotateAngleZ = -0.2F; - - this.ArmLeftLower.rotateAngleX = -0.35F; - this.ArmRightLower.rotateAngleX = -0.35F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmLeftHand.rotateAngleX = -0.7F; - this.ArmRightHand.rotateAngleX = -0.7F; - - - this.ArmLeftHand.rotateAngleZ = 1F; - this.ArmRightHand.rotateAngleZ = -1F; - - this.ArmRightHand.rotateAngleY = 3.5F; - this.ArmLeftHand.rotateAngleY = -3.5F; - - this.Body.offsetZ = 0.2F; - - if(lemur.getOwner().isSneaking()) - { - this.Body.offsetY = 2.4F; - } - else - { - this.Body.offsetY = 2.0F; - } - - if(lemur.isChild()) { - this.Body.offsetX = 1.1F; - } - else { - this.Body.offsetX = 0.8F; - } - - } - else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying()) { - this.state = State.ONRIGHTSHOULDER; - - this.Body.rotateAngleX = 0.35F; - this.Body.rotateAngleY = -0.1F; - this.Body.rotateAngleZ = -0.15F; - - this.BodyLower.rotateAngleX = -0.35F; - - this.LegLeft.rotateAngleX = -2.60F; - this.LegRight.rotateAngleX = -2.60F; - this.LegLeftLower.rotateAngleX = 2.8f; - this.LegRightLower.rotateAngleX = 2.8f; - - this.LegLeftLower.rotateAngleZ = -0.45f; - this.LegRightLower.rotateAngleZ = 0.45f; - this.LegLeft.rotateAngleZ = 0.2F; - this.LegLeft.rotateAngleY = -0.2F; - this.LegRight.rotateAngleZ = -0.2F; - this.LegRight.rotateAngleY = 0.2F; - - - this.ArmRight.rotateAngleX = -0.6F; - this.ArmLeft.rotateAngleX = -0.6F; - this.ArmRight.rotateAngleZ = 0.2F; - this.ArmLeft.rotateAngleZ = -0.2F; - - this.ArmLeftLower.rotateAngleX = -0.35F; - this.ArmRightLower.rotateAngleX = -0.35F; - - this.ArmRightLower.rotateAngleZ = 0.35F; - this.ArmLeftLower.rotateAngleZ = -0.35F; - - this.ArmLeftHand.rotateAngleX = -0.7F; - this.ArmRightHand.rotateAngleX = -0.7F; - - - this.ArmLeftHand.rotateAngleZ = 1F; - this.ArmRightHand.rotateAngleZ = -1F; - - this.ArmRightHand.rotateAngleY = 3.5F; - this.ArmLeftHand.rotateAngleY = -3.5F; - - this.Body.offsetZ = 0.2F; - - if(lemur.getOwner().isSneaking()) - { - this.Body.offsetY = 2.4F; - } - else - { - this.Body.offsetY = 2.0F; - } - - if(lemur.isChild()) { - this.Body.offsetX = -1.1F; - } - else { - this.Body.offsetX = -0.8F; - } - - } - else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying()) { - this.state = State.ELYTRALEFTSHOULDER; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - - this.Body.offsetX = 1.8F; - this.Body.offsetY = 1.5F; - } - else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying()) { - this.state = State.ELYTRARIGHTSHOULDER; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - - this.Body.offsetX = -1.8F; - this.Body.offsetY = 1.5F; - } - else if (lemur.isFlying() && !lemur.isLemurRiding()) - { - this.state = State.FLYING; - - this.Body.rotateAngleX = 1.5F; - this.ArmRight.rotateAngleX = -1.5F; - this.ArmRight.rotateAngleY = -1.6F; - this.ArmRight.rotateAngleZ = -0.05F; - this.ArmLeft.rotateAngleX = -1.5F; - this.ArmLeft.rotateAngleY = 1.6F; - this.ArmLeft.rotateAngleZ = 0.05F; - - this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0F; - this.Tail_mid4.rotateAngleX = 0F; - this.Tail_end.rotateAngleX = 0F; - this.Left_Wing.setScale(1, 1, 1); - this.Right_Wing.setScale(1, 1, 1); - - this.LegRightFoot.rotateAngleX = 1.5F; - this.LegLeftFoot.rotateAngleX = 1.5F; - - this.EarRight.rotateAngleX = -0.45F; - this.EarLeft.rotateAngleX = -0.45F; - } - else if (lemur.speed > 0.25f && !lemur.isLemurRiding()) - { - this.state = State.SPRINTING; - this.Body.rotateAngleX = 1.5F; - this.Body.offsetY = 0.25F; - this.BodyLower.rotateAngleX = -0.35F; - + this.state = ModelLlibraryLemur.State.SITTING; + this.Body.offsetY = 0.5F; + this.BodyLower.rotateAngleX = 0.35F; + + this.LegRight.rotateAngleX = -2.6f; + this.LegRightLower.rotateAngleX = 2.0f; + this.LegRight.rotateAngleZ = -0.5F; + this.LegRight.rotateAngleY = 0.5F; + this.LegLeft.rotateAngleX = -2.6f; + this.LegLeftLower.rotateAngleX = 2.0f; + this.LegLeft.rotateAngleZ = 0.5F; + this.LegLeft.rotateAngleY = -0.5F; + + this.ArmRight.rotateAngleY = 0.7F; + this.ArmLeft.rotateAngleY = -0.7F; + + this.ArmLeftLower.rotateAngleX = -0.5F; + this.ArmRightLower.rotateAngleX = -0.5F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmRightLower.rotateAngleY = 0.6F; + this.ArmLeftLower.rotateAngleY = -0.6F; + + this.ArmLeftHand.rotateAngleX = 1.6F; + this.ArmRightHand.rotateAngleX = 1.6F; + + this.ArmLeftHand.rotateAngleY = -1.5F; + this.ArmRightHand.rotateAngleY = 1.5F; + } + else if (lemur.getLeftShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = ModelLlibraryLemur.State.ONLEFTSHOULDER; + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = 0.1F; + this.Body.rotateAngleZ = 0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = 1.1F; + } + else { + this.Body.offsetX = 0.8F; + } + + } + else if (lemur.getRightShoulder() && !lemur.getOwner().isElytraFlying() && !gliding) { + this.state = ModelLlibraryLemur.State.ONRIGHTSHOULDER; + + this.Body.rotateAngleX = 0.35F; + this.Body.rotateAngleY = -0.1F; + this.Body.rotateAngleZ = -0.15F; + + this.BodyLower.rotateAngleX = -0.35F; + + this.LegLeft.rotateAngleX = -2.60F; + this.LegRight.rotateAngleX = -2.60F; + this.LegLeftLower.rotateAngleX = 2.8f; + this.LegRightLower.rotateAngleX = 2.8f; + + this.LegLeftLower.rotateAngleZ = -0.45f; + this.LegRightLower.rotateAngleZ = 0.45f; + this.LegLeft.rotateAngleZ = 0.2F; + this.LegLeft.rotateAngleY = -0.2F; + this.LegRight.rotateAngleZ = -0.2F; + this.LegRight.rotateAngleY = 0.2F; + + + this.ArmRight.rotateAngleX = -0.6F; + this.ArmLeft.rotateAngleX = -0.6F; + this.ArmRight.rotateAngleZ = 0.2F; + this.ArmLeft.rotateAngleZ = -0.2F; + + this.ArmLeftLower.rotateAngleX = -0.35F; + this.ArmRightLower.rotateAngleX = -0.35F; + + this.ArmRightLower.rotateAngleZ = 0.35F; + this.ArmLeftLower.rotateAngleZ = -0.35F; + + this.ArmLeftHand.rotateAngleX = -0.7F; + this.ArmRightHand.rotateAngleX = -0.7F; + + + this.ArmLeftHand.rotateAngleZ = 1F; + this.ArmRightHand.rotateAngleZ = -1F; + + this.ArmRightHand.rotateAngleY = 3.5F; + this.ArmLeftHand.rotateAngleY = -3.5F; + + this.Body.offsetZ = 0.2F; + + if(lemur.getOwner().isSneaking()) + { + this.Body.offsetY = 2.4F; + } + else + { + this.Body.offsetY = 2.0F; + } + + if(lemur.isChild()) { + this.Body.offsetX = -1.1F; + } + else { + this.Body.offsetX = -0.8F; + } + + } + else if (lemur.getLeftShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = ModelLlibraryLemur.State.ELYTRALEFTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = 1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.getRightShoulder() && lemur.getOwner().isElytraFlying() || gliding) { + this.state = ModelLlibraryLemur.State.ELYTRARIGHTSHOULDER; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + + this.Body.offsetX = -1.8F; + this.Body.offsetY = 1.5F; + } + else if (lemur.speed > 0.17f && !lemur.isLemurRiding() && !lemur.isFlying()) + { + this.state = ModelLlibraryLemur.State.SPRINTING; + this.Body.rotateAngleX = 1.5F; + this.Body.offsetY = 0.25F; + this.BodyLower.rotateAngleX = -0.35F; + this.ArmRight.rotateAngleX = -1.75F; this.ArmLeft.rotateAngleX = -1.75F; this.ArmRight.rotateAngleY = 0.1F; this.ArmLeft.rotateAngleY = -0.1F; - this.ArmLeftLower.rotateAngleY = 0.4F; + this.ArmLeftLower.rotateAngleY = 0.4F; this.ArmRightLower.rotateAngleY = -0.4F; - this.ArmRightHand.rotateAngleY = 2.6F; + this.ArmRightHand.rotateAngleY = 2.6F; this.ArmLeftHand.rotateAngleY = -2.6F; this.LegLeft.rotateAngleX = -1.5F; this.LegRight.rotateAngleX = -1.5F; this.LegLeft.rotateAngleY = -0.5F; this.LegRight.rotateAngleY = 0.5F; - - + + this.Tail_start.rotateAngleX = 0F; - this.Tail_mid1.rotateAngleX = 0F; - this.Tail_mid2.rotateAngleX = 0F; - this.Tail_mid3.rotateAngleX = 0.1F; - this.Tail_mid4.rotateAngleX = 0.1F; - this.Tail_end.rotateAngleX = 0.1F; - - } - else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) - { - this.state = State.WALKING; - } - else { - this.state = State.STANDING; - } + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0.1F; + this.Tail_mid4.rotateAngleX = 0.1F; + this.Tail_end.rotateAngleX = 0.1F; + + } + else if (lemur.speed >= 0.05F && lemur.speed <= 0.17F && !lemur.isLemurRiding() && !lemur.isFlying()) + { + this.state = ModelLlibraryLemur.State.WALKING; + } + else if (!lemur.isFlying()) { + this.state = ModelLlibraryLemur.State.STANDING; + } + else if (lemur.isFlying() && !lemur.isLemurRiding()) + { + this.state = ModelLlibraryLemur.State.FLYING; + + this.Body.rotateAngleX = 1.5F; + this.ArmRight.rotateAngleX = -1.5F; + this.ArmRight.rotateAngleY = -1.6F; + this.ArmRight.rotateAngleZ = -0.05F; + this.ArmLeft.rotateAngleX = -1.5F; + this.ArmLeft.rotateAngleY = 1.6F; + this.ArmLeft.rotateAngleZ = 0.05F; + + this.Tail_start.rotateAngleX = 0F; + this.Tail_mid1.rotateAngleX = 0F; + this.Tail_mid2.rotateAngleX = 0F; + this.Tail_mid3.rotateAngleX = 0F; + this.Tail_mid4.rotateAngleX = 0F; + this.Tail_end.rotateAngleX = 0F; + this.Left_Wing.setScale(1, 1, 1); + this.Right_Wing.setScale(1, 1, 1); + + this.LegRightFoot.rotateAngleX = 1.5F; + this.LegLeftFoot.rotateAngleX = 1.5F; + + this.EarRight.rotateAngleX = -0.45F; + this.EarLeft.rotateAngleX = -0.45F; + } + } } @@ -1674,7 +1669,7 @@ else if(this.state == State.ONLEFTSHOULDER) { } else if(this.state == State.ELYTRALEFTSHOULDER) { //LEFT - //TODO + this.theHead.rotateAngleY =netHeadYaw * 0.007F; this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.5F; swing(ArmRight, 0.2F * globalspeed, 0.7F * globalDegree, false, 1.5F, 0, f, f1); @@ -1695,7 +1690,7 @@ else if(this.state == State.ELYTRALEFTSHOULDER) { //LEFT walk(EarLeft,0.1F * globalspeed, 0.2F * globalDegree, false, 1.2F, 0, f, f1); } else if(this.state == State.ELYTRARIGHTSHOULDER) { //RIGHT - //TODO + this.theHead.rotateAngleY =netHeadYaw * 0.007F; this.theHead.rotateAngleX =headPitch * 0.017453292F - 1.5F; swing(ArmRight, 0.2F * globalspeed, 0.7F * globalDegree, false, 1.2F, 0, f, f1); diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java index 57a3fac2c7..3980ed5ffd 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java @@ -10,6 +10,9 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.*; import net.minecraft.entity.ai.*; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntityGhast; +import net.minecraft.entity.passive.AbstractHorse; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityFlying; import net.minecraft.entity.passive.EntityTameable; @@ -44,23 +47,23 @@ public class EntityAscendedFlyingLemur extends EntityTameable implements EntityFlying { -private static final DataParameter VARIANT = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.VARINT); -private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); -protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); -protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); - -public double speed; -private boolean isActualyFlying; -private boolean previusRidingPos; -private boolean partyLemur;//TODO -private BlockPos jukeboxPosition; -public EntityAscendedFlyingLemur(World worldIn) -{ - super(worldIn); - this.setSize(0.3F, 1F); - this.moveHelper = new EntityFlyHelper(this); - experienceValue = 200; -} + private static final DataParameter VARIANT = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.VARINT); + private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); + protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); + protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityAscendedFlyingLemur.class, DataSerializers.BYTE); + + public double speed; + private boolean previusRidingPos; + private boolean partyLemur; + private BlockPos jukeboxPosition; + + public EntityAscendedFlyingLemur(World worldIn) + { + super(worldIn); + this.setSize(0.3F, 1F); + this.moveHelper = new EntityFlyHelper(this); + experienceValue = 200; + } @@ -72,177 +75,167 @@ public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable } -@Override -protected void initEntityAI() -{ - this.aiSit = new EntityAISit(this); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - this.tasks.addTask(4, new EntityAIWanderAvoidWater(this, 1.0D)); - this.tasks.addTask(4, new EntityAIWanderAvoidWaterFlying(this, 1.25D)); - this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); - this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1F, 10F, 2F)); - this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); - this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.5D, true)); - this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); - -} - @Override - public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) - { - - if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) - { - IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); - this.setSitting(false); - for(Entity lemurs : playerShoulders.getRiders()) { - System.out.println("Lemur :" + lemurs.getName()); - } - System.out.println("END OF LIST"); - if(playerShoulders.getRiders().size() == 0) - { - if(!previusRidingPos) - { + @Override + protected void initEntityAI() + { + this.aiSit = new EntityAISit(this); + this.tasks.addTask(1, new EntityAISwimming(this)); + this.tasks.addTask(2, this.aiSit); + this.tasks.addTask(3, new EntityAIWanderAvoidWater(this, 1.0D)); + this.tasks.addTask(3, new EntityAIWanderAvoidWaterFlying(this, 1.0D)); + this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); + this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0D, 5.0F, 1.0F)); + this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); + this.tasks.addTask(3, new EntityAIFollow(this, 1.0D, 3.0F, 7.0F)); + this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.2D, true)); + this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); + this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); + this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); + this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); + + } + + @Override + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) + { + + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) + { + IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + this.setSitting(false); + if(playerShoulders.getRiders().size() == 0) + { + if(!previusRidingPos) + { this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("Right"); - } - else - { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("Left"); - } - - playerShoulders.addRiders(this); - } - else { - if(playerShoulders.getRiders().size() < 2) - { - if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) - { - if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { - EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); - if(lemur.getRightShoulder()) { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("***Left"); - playerShoulders.addRiders(this); - } - else if (lemur.getLeftShoulder()) { - this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("***Right"); - playerShoulders.addRiders(this); - } - } - else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { - EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); - if(lemur.getRightShoulder()) { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("***Left"); - playerShoulders.addRiders(this); - } - else if (lemur.getLeftShoulder()) { - this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("***Right"); - playerShoulders.addRiders(this); - - } - } - - } - } - } - - - - - } - - return super.applyPlayerInteraction(player, vec, hand); - } - - public boolean isLemurRiding() { - if(!this.getLeftShoulder() && !this.getRightShoulder()) { - this.height = 1f; - this.width = 0.3f; - } - return this.getLeftShoulder() || this.getRightShoulder(); - } - + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + } + else + { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + } + + playerShoulders.addRiders(this); + } + else { + if(playerShoulders.getRiders().size() < 2) + { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) + { + if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + playerShoulders.addRiders(this); + } + } + else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + playerShoulders.addRiders(this); + + } + } + + } + } + } + + + + + } + + return super.applyPlayerInteraction(player, vec, hand); + } + + public boolean isLemurRiding() { + if(!this.getLeftShoulder() && !this.getRightShoulder() && !this.isChild() && this.height != 1 && this.width != 0.4F) { + this.height = 1f; + this.width = 0.4f; + } + return this.getLeftShoulder() || this.getRightShoulder(); + } + @Override - public void onLivingUpdate() - { - super.onLivingUpdate(); - - updatespeed(!this.isLemurRiding()); - - if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); - - - if(this.ticksExisted % 200 == 0 ) { - if(this.getMoveHelper() instanceof EntityFlyHelper) { - this.moveHelper = new EntityMoveHelper(this); - } - else { - if(!this.isInWater() && !this.isInLove()) { - this.moveHelper = new EntityFlyHelper(this); - } - } - - } - - + public void onLivingUpdate() + { + super.onLivingUpdate(); + + updatespeed(!this.isLemurRiding()); + + if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); + + if(this.ticksExisted % 100 == 0 && this.speed == 0 && this.getAIMoveSpeed() == 0 ) { + if(this.getMoveHelper() instanceof EntityFlyHelper) { + this.moveHelper = new EntityMoveHelper(this); + } + else { + if(!this.isInWater() && !this.isInLove() && !this.isAngry()) { + this.moveHelper = new EntityFlyHelper(this); + } + } + + } + + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) { this.partyLemur = false; this.jukeboxPosition = null; } - - if (this.ticksExisted % 15 == 0 && !this.isActualyFlying && !this.isLemurRiding()) { - this.isActualyFlying = true; - } - - - if(this.isLemurRiding()) { - if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { - this.setRotation(this.getOwner().renderYawOffset, 0); - this.setRotationYawHead(this.getOwner().renderYawOffset); - this.setRenderYawOffset(this.getOwner().renderYawOffset); - if(this.isChild()) { - - this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); - }else { - - this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); - } - - - } - - } - - - } - + + + if(this.isLemurRiding()) { + if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { + this.setRotation(this.getOwner().renderYawOffset, 0); + this.setRotationYawHead(this.getOwner().renderYawOffset); + this.setRenderYawOffset(this.getOwner().renderYawOffset); + if(this.isChild()) { + + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + }else { + + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + } + + + } + + } + if (!this.world.isRemote && this.getAttackTarget() == null && this.isAngry()) + { + this.setAngry(false); + } + + } + @SideOnly(Side.CLIENT) public void setPartying(BlockPos pos, boolean p_191987_2_) { @@ -250,158 +243,185 @@ public void setPartying(BlockPos pos, boolean p_191987_2_) this.partyLemur = p_191987_2_; } + @SideOnly(Side.CLIENT) public boolean isPartying() { return this.partyLemur; } - - + + @Override public boolean canBeCollidedWith() { - if(this.isLemurRiding()) return false; - return super.canBeCollidedWith(); + if(this.isLemurRiding()) return false; + return super.canBeCollidedWith(); } - + public boolean getLeftShoulder() { - return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; + return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; } public boolean getRightShoulder() { - - return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; + + return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; } - + public void setLeftShoulder(boolean ride) { - byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); + byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); if (ride) { - this.height = 0.0f; - this.width = 0.1f; - this.setSitting(false); - this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } else { - this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } } public void setRightShoulder(boolean ride) { - - byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); - - if (ride) - { - this.height = 0.0f; - this.width = 0.1f; - this.setSitting(false); - this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); - } - } - - @Override - protected boolean canDespawn() { - return false; - } - - @Override - protected void entityInit() - { - super.entityInit(); - this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); - this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + + byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + + @Override + protected boolean canDespawn() { + return false; + } + + @Override + protected void entityInit() + { + super.entityInit(); + this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(VARIANT, Integer.valueOf(0)); - } - + } + public boolean isFlying() - { - if(this.onGround || this.isLemurRiding() || this.isInWater()) return false; - return this.isActualyFlying; - } - - public void updatespeed(boolean canUpdate) { - if(canUpdate) { - double motionX = this.posX - this.prevPosX; - double motionY = this.posY - this.prevPosY; - double motionZ = this.posZ - this.prevPosZ; - this.speed = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); - } - } + { + return !this.onGround; + } + + public void updatespeed(boolean canUpdate) { + if(canUpdate) { + double motionX = this.posX - this.prevPosX; + double motionY = this.posY - this.prevPosY; + double motionZ = this.posZ - this.prevPosZ; + this.speed = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + } + } + protected PathNavigate createNavigator(World worldIn) { - PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); - PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); - - + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + pathnavigateflying.setCanOpenDoors(false); + pathnavigateflying.setCanFloat(true); + pathnavigateflying.setCanEnterDoors(true); + + PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); + + + if(this.getMoveHelper() instanceof EntityFlyHelper) + { + return pathnavigateflying; + } + + if(this.getMoveHelper() instanceof EntityMoveHelper) + { + return pathnavigateground; + } + + return null; + } + /* + protected PathNavigate createNavigator(World worldIn) + { + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); + + pathnavigateflying.setCanFloat(true); pathnavigateflying.setCanOpenDoors(true); pathnavigateflying.setCanEnterDoors(true); - pathnavigateground.setEnterDoors(true); + pathnavigateground.setEnterDoors(true); pathnavigateground.setCanSwim(true); - - if(this.getMoveHelper() instanceof EntityFlyHelper) + + if(this.getMoveHelper() instanceof EntityFlyHelper) { - return pathnavigateflying; + return pathnavigateflying; } - - if(this.getMoveHelper() instanceof EntityMoveHelper) + + if(this.getMoveHelper() instanceof EntityMoveHelper) { - return pathnavigateground; + return pathnavigateground; } - - return pathnavigateground; + + return null; } + */ public float getEyeHeight() - { - if(this.isFlying() || this.isLemurRiding() ) { - return 0.1F; - } - else { - if(this.isSitting()) { - return 0.65F; - } - else { - return 0.85F; - } - } - - } + { + if(this.isFlying() || this.isLemurRiding() ) { + return 0.1F; + } + else { + if(this.isSitting()) { + return 0.65F; + } + + if(this.isChild()) { + return 0.55F; + } + + return 0.85F; + + } + + } @Override public double getYOffset() { - if(this.getOwner() != null && this.getOwner().isSneaking()) { - if(this.isChild()) { - return 0.15F; - }else { - return 0.50F; - } - } - else { - if(this.isChild()) { - return 0.3F; - }else { - return 0.45F; - } - } + if(this.getOwner() != null && this.getOwner().isSneaking()) { + if(this.isChild()) { + return 0.15F; + }else { + return 0.50F; + } + } + else { + if(this.isChild()) { + return 0.3F; + }else { + return 0.45F; + } + } } + + public void fall(float distance, float damageMultiplier) { - if(!this.isFlying()) { - super.fall(distance, damageMultiplier); - } - + } + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) { - if(!this.isFlying()) { - super.updateFallState(y, onGroundIn, state, pos); - } - + } + public boolean getCanSpawnHere() { int i = MathHelper.floor(this.posX); @@ -410,20 +430,20 @@ public boolean getCanSpawnHere() BlockPos blockpos = new BlockPos(i, j, k); Block block = this.world.getBlockState(blockpos.down()).getBlock(); return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); - } - @Override - protected void applyEntityAttributes() - { - super.applyEntityAttributes(); - this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); - this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D); - this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); - this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); - this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); - this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); - this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); - } - public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) + } + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); + this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.33D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); + this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); + } + public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) { super.setAttackTarget(entitylivingbaseIn); @@ -453,29 +473,29 @@ public boolean attackEntityFrom(DamageSource source, float amount) else { Entity entity = source.getTrueSource(); - + if (this.aiSit != null) { this.aiSit.setSitting(false); } - - - if (entity instanceof EntityPlayer) + + + if (entity instanceof EntityPlayer) { - if(!((EntityPlayer) entity).isCreative()) return false; - - } + if(!((EntityPlayer) entity).isCreative()) return false; + + } else { - if(source != source.OUT_OF_WORLD) { - return false; - } + if(source != source.OUT_OF_WORLD) { + return false; + } } - + return super.attackEntityFrom(source, amount); } - } + } public boolean attackEntityAsMob(Entity entityIn) { boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); @@ -486,7 +506,7 @@ public boolean attackEntityAsMob(Entity entityIn) } return flag; - } + } public void setTamed(boolean tamed) { super.setTamed(tamed); @@ -553,31 +573,60 @@ else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) public boolean canBeLeashedTo(EntityPlayer player) { return !this.isAngry() && super.canBeLeashedTo(player); - } + } public int getMaxSpawnedInChunk() { return 8; } + public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) + { + if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast)) + { + if (target instanceof EntityFlyingLemur) + { + EntityAscendedFlyingLemur entitylemur = (EntityAscendedFlyingLemur)target; + + if (entitylemur.isTamed() && entitylemur.getOwner() == owner) + { + return false; + } + } + + if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer)owner).canAttackPlayer((EntityPlayer)target)) + { + return false; + } + else + { + return !(target instanceof AbstractHorse) || !((AbstractHorse)target).isTame(); + } + } + else + { + return false; + } + } + /* * Emotions - Start */ - @Override - public void writeEntityToNBT(NBTTagCompound compound) - { - super.writeEntityToNBT(compound); - compound.setBoolean("Angry", this.isAngry()); - } - @Override - public void readEntityFromNBT(NBTTagCompound compound) - { - super.readEntityFromNBT(compound); - this.setAngry(compound.getBoolean("Angry")); - } + @Override + public void writeEntityToNBT(NBTTagCompound compound) + { + super.writeEntityToNBT(compound); + compound.setBoolean("Angry", this.isAngry()); + } + @Override + public void readEntityFromNBT(NBTTagCompound compound) + { + super.readEntityFromNBT(compound); + this.setAngry(compound.getBoolean("Angry")); + } public boolean isAngry() { return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; - } + } public void setAngry(boolean angry) { byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); @@ -605,25 +654,25 @@ public int getVariant() /* * Mating - Start - */ + */ public boolean isBreedingItem(ItemStack stack) { return stack.getItem() == Items.GOLDEN_APPLE; - } - @Override - public EntityAgeable createChild(EntityAgeable ageable) - { - EntityAscendedFlyingLemur entitymonkey = new EntityAscendedFlyingLemur(this.world); + } + @Override + public EntityAgeable createChild(EntityAgeable ageable) + { + EntityAscendedFlyingLemur entitymonkey = new EntityAscendedFlyingLemur(this.world); UUID uuid = this.getOwnerId(); if (uuid != null) { - entitymonkey.setOwnerId(uuid); - entitymonkey.setTamed(true); + entitymonkey.setOwnerId(uuid); + entitymonkey.setTamed(true); } return entitymonkey; - } + } public boolean canMateWith(EntityAnimal otherAnimal) { if (otherAnimal == this) @@ -640,7 +689,7 @@ else if (!(otherAnimal instanceof EntityAscendedFlyingLemur)) } else { - EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)otherAnimal; + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)otherAnimal; if (!lemur.isTamed()) { @@ -658,14 +707,14 @@ else if (lemur.isSitting()) } /* * Mating - End - */ - - /* - * Sounds - Start - */ + */ + + /* + * Sounds - Start + */ protected SoundEvent getAmbientSound() { - return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; + return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; } protected SoundEvent getHurtSound(DamageSource damageSourceIn) { @@ -679,10 +728,10 @@ protected float getSoundVolume() { return 1.75F; } - /* - * Sounds - End - */ - + /* + * Sounds - End + */ + /* * Particle Effects - Start */ @@ -695,7 +744,7 @@ public void playRideEffect(boolean play) { double d2 = this.rand.nextGaussian() * 0.02D; this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); } - } + } /* * Particle Effects - End */ diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java index 4cc8b5c1a2..9fc22e6ae7 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java @@ -10,10 +10,10 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.*; import net.minecraft.entity.ai.*; -import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntityGhast; +import net.minecraft.entity.passive.*; import net.minecraft.entity.passive.EntityFlying; -import net.minecraft.entity.passive.EntityParrot; -import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -45,17 +45,16 @@ public class EntityFlyingLemur extends EntityTameable implements EntityFlying { + private static final DataParameter VARIANT = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.VARINT); private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); - protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); - protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); - - public double speed; - private boolean isActualyFlying; + protected static final DataParameter RIGHTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); + protected static final DataParameter LEFTSHOULDER = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.BYTE); + + public double speed; private boolean previusRidingPos; - - private boolean partyLemur;//TODO - private BlockPos jukeboxPosition; + private boolean partyLemur; + private BlockPos jukeboxPosition; @Nullable public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) @@ -64,651 +63,664 @@ public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable return super.onInitialSpawn(difficulty, livingdata); } - public EntityFlyingLemur(World worldIn) + public EntityFlyingLemur(World worldIn) { super(worldIn); - this.setSize(0.3F, 1F); - this.moveHelper = new EntityFlyHelper(this); + this.setSize(0.4F, 1F); + this.moveHelper = new EntityFlyHelper(this); experienceValue = 200; - } @Override - protected void initEntityAI() + protected void initEntityAI() { this.aiSit = new EntityAISit(this); this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, this.aiSit); - this.tasks.addTask(4, new EntityAIWanderAvoidWater(this, 1.0D)); - this.tasks.addTask(4, new EntityAIWanderAvoidWaterFlying(this, 1.0D)); - this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0D, 10.0F, 2.0F)); - this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0F, 10F, 2.0F)); - this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); - this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.5D, true)); + this.tasks.addTask(2, this.aiSit); + this.tasks.addTask(3, new EntityAIWanderAvoidWater(this, 1.0D)); + this.tasks.addTask(3, new EntityAIWanderAvoidWaterFlying(this, 1.0D)); + this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); + this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0D, 5.0F, 1.0F)); + this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); + this.tasks.addTask(3, new EntityAIFollow(this, 1.0D, 3.0F, 7.0F)); + this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.2D, true)); this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); - this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); - this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); - this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); - - } - @Override - public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) - { - - if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) - { - IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); - this.setSitting(false); - for(Entity lemurs : playerShoulders.getRiders()) { - System.out.println("Lemur :" + lemurs.getName()); - } - System.out.println("END OF LIST"); - if(playerShoulders.getRiders().size() == 0) - { - if(!previusRidingPos) - { - this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("Right"); - } - else + this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); + this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); + this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); + } + + + protected PathNavigate createNavigator(World worldIn) + { + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + pathnavigateflying.setCanOpenDoors(false); + pathnavigateflying.setCanFloat(true); + pathnavigateflying.setCanEnterDoors(true); + + PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); + + + if(this.getMoveHelper() instanceof EntityFlyHelper) + { + return pathnavigateflying; + } + + if(this.getMoveHelper() instanceof EntityMoveHelper) + { + return pathnavigateground; + } + + return null; + } +/* + protected PathNavigate createNavigator(World worldIn) + { + PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); + pathnavigateflying.setCanOpenDoors(false); + pathnavigateflying.setCanFloat(true); + pathnavigateflying.setCanEnterDoors(true); + return pathnavigateflying; + }*/ + @Override + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) + { + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) + { + IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); + this.setSitting(false); + if(playerShoulders.getRiders().size() == 0) + { + if(!previusRidingPos) + { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + } + else + { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + } + + playerShoulders.addRiders(this); + } + else { + if(playerShoulders.getRiders().size() < 2) + { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("Left"); + if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { + EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + + playerShoulders.addRiders(this); + } + } + else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { + EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); + if(lemur.getRightShoulder()) { + this.setLeftShoulder(true); + this.setNoAI(true); + playerShoulders.setLeftShoulder(true); + previusRidingPos = false; + + playerShoulders.addRiders(this); + } + else if (lemur.getLeftShoulder()) { + this.setRightShoulder(true); + this.setNoAI(true); + playerShoulders.setRightShoulder(true); + previusRidingPos = true; + + playerShoulders.addRiders(this); + + } + } + } - - playerShoulders.addRiders(this); - } - else { - if(playerShoulders.getRiders().size() < 2) - { - if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) - { - if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { - EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); - if(lemur.getRightShoulder()) { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("***Left"); - playerShoulders.addRiders(this); - } - else if (lemur.getLeftShoulder()) { - this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("***Right"); - playerShoulders.addRiders(this); - } - } - else if (playerShoulders.getRiders().get(0) instanceof EntityFlyingLemur) { - EntityFlyingLemur lemur = (EntityFlyingLemur) playerShoulders.getRiders().get(0); - if(lemur.getRightShoulder()) { - this.setLeftShoulder(true); - this.setNoAI(true); - playerShoulders.setLeftShoulder(true); - previusRidingPos = false; - System.out.println("***Left"); - playerShoulders.addRiders(this); - } - else if (lemur.getLeftShoulder()) { - this.setRightShoulder(true); - this.setNoAI(true); - playerShoulders.setRightShoulder(true); - previusRidingPos = true; - System.out.println("***Right"); - playerShoulders.addRiders(this); - - } - } - - } - } - } - - - - - } - - return super.applyPlayerInteraction(player, vec, hand); - } - - public boolean isLemurRiding() { - if(!this.getLeftShoulder() && !this.getRightShoulder()) { - this.height = 1f; - this.width = 0.3f; - } - return this.getLeftShoulder() || this.getRightShoulder(); - } - - - - @Override - public void onCollideWithPlayer(EntityPlayer entityIn) { - if(entityIn.posY >= this.height + 0.01f + this.posY - && entityIn.posX <= this.posX+this.width/2 && entityIn.posX >= this.posX-this.width/2 && - entityIn.posZ <= this.posZ+this.width/2 && entityIn.posZ >= this.posZ-this.width/2) { - - - entityIn.motionY = 0; - - } - // EnumParticleTypes enumparticletypes = EnumParticleTypes.DRIP_LAVA; - //this.world.spawnParticle(enumparticletypes, this.posX+this.width/2, this.posY+this.height, this.posZ, 1, 1, 1, 1); I use particles to debug xD - //this.world.spawnParticle(enumparticletypes, this.posX-this.width/2, this.posY+this.height, this.posZ, 1, 1, 1, 1); - super.onCollideWithPlayer(entityIn);//-this.width/2 - } - - @Override - public void onLivingUpdate() + } + } + + + + + } + + return super.applyPlayerInteraction(player, vec, hand); + } + + public boolean isLemurRiding() { + if(!this.getLeftShoulder() && !this.getRightShoulder() && !this.isChild() && this.height != 1 && this.width != 0.4F) { + this.height = 1f; + this.width = 0.4f; + } + return this.getLeftShoulder() || this.getRightShoulder(); + } + + @Override + public void onLivingUpdate() + { + super.onLivingUpdate(); + + updatespeed(!this.isLemurRiding()); + + if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); + + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) { - super.onLivingUpdate(); - - updatespeed(!this.isLemurRiding()); - - if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); - - if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) - { - this.partyLemur = false; - this.jukeboxPosition = null; - } - - if(this.ticksExisted % 200 == 0 ) { - if(this.getMoveHelper() instanceof EntityFlyHelper) { - this.moveHelper = new EntityMoveHelper(this); - } - else { - if(!this.isInWater() && !this.isInLove()) { - this.moveHelper = new EntityFlyHelper(this); - } - } - + this.partyLemur = false; + this.jukeboxPosition = null; + } + + if(this.ticksExisted % 100 == 0 && this.speed == 0 && this.getAIMoveSpeed() == 0) { + if(this.getMoveHelper() instanceof EntityFlyHelper) { + this.moveHelper = new EntityMoveHelper(this); } - - if (this.ticksExisted % 15 == 0 && !this.isActualyFlying && !this.isLemurRiding()) { - this.isActualyFlying = true; + else { + if(!this.isInWater() && !this.isInLove() && !this.isAngry()) { + this.moveHelper = new EntityFlyHelper(this); + } } - - - - if(this.isLemurRiding()) { - if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { - this.setRotation(this.getOwner().renderYawOffset, 0); - if(this.isFlying()){ - this.setRotationYawHead(this.getOwner().rotationYaw); - }else{ - this.setRotationYawHead(this.getOwner().renderYawOffset); - } + } - this.setRenderYawOffset(this.getOwner().renderYawOffset); - if(this.isChild()) { - this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); - }else { - this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); - } + if(this.isLemurRiding()) { + if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { + this.setRotation(this.getOwner().renderYawOffset, 0); + if(this.isFlying()){ + this.setRotationYawHead(this.getOwner().rotationYaw); + }else{ + this.setRotationYawHead(this.getOwner().renderYawOffset); + } - + this.setRenderYawOffset(this.getOwner().renderYawOffset); + if(this.isChild()) { + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); + }else { + this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); } + + } - - } - - @SideOnly(Side.CLIENT) - public void setPartying(BlockPos pos, boolean p_191987_2_) - { - this.jukeboxPosition = pos; - this.partyLemur = p_191987_2_; - } - @SideOnly(Side.CLIENT) - public boolean isPartying() - { - return this.partyLemur; - } - - - @Override - public boolean canBeCollidedWith() { - if(this.isLemurRiding()) return false; - return super.canBeCollidedWith(); - } - - public boolean getLeftShoulder() { - return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; - } - public boolean getRightShoulder() { - - return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; - } - - public void setLeftShoulder(boolean ride) { - byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); - - if (ride) - { - this.height = 0.0f; - this.width = 0.1f; - this.setSitting(false); - this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); - } - } - public void setRightShoulder(boolean ride) { - - byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); - - if (ride) - { - this.height = 0.0f; - this.width = 0.1f; - this.setSitting(false); - this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); - } - else - { - this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); - } - } + if (!this.world.isRemote && this.getAttackTarget() == null && this.isAngry()) + { + this.setAngry(false); + } + } - @Override - protected boolean canDespawn() { - return false; + @SideOnly(Side.CLIENT) + public void setPartying(BlockPos pos, boolean p_191987_2_) + { + this.jukeboxPosition = pos; + this.partyLemur = p_191987_2_; + } + + @SideOnly(Side.CLIENT) + public boolean isPartying() + { + return this.partyLemur; + } + + + @Override + public boolean canBeCollidedWith() { + if(this.isLemurRiding()) return false; + return super.canBeCollidedWith(); + } + + public boolean getLeftShoulder() { + return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; + } + public boolean getRightShoulder() { + + return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; + } + + public void setLeftShoulder(boolean ride) { + byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } - - - @Override - protected void entityInit() + else { - super.entityInit(); - this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); - this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); - this.dataManager.register(VARIANT, Integer.valueOf(0)); + this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } - + } + public void setRightShoulder(boolean ride) { + + byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); + + if (ride) + { + this.height = 0.0f; + this.width = 0.1f; + this.setSitting(false); + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); + } + } + + @Override + protected boolean canDespawn() { + return false; + } + + + @Override + protected void entityInit() + { + super.entityInit(); + this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); + this.dataManager.register(VARIANT, Integer.valueOf(0)); + } + /* public boolean isFlying() - { + { if(this.onGround || this.isLemurRiding() || this.isInWater()) return false; return this.isActualyFlying; } - - public void updatespeed(boolean canUpdate) { - if(canUpdate) { + */ + + public boolean isFlying() + { + return !this.onGround; + } + + public void updatespeed(boolean canUpdate) { + if(canUpdate) { double motionX = this.posX - this.prevPosX; double motionY = this.posY - this.prevPosY; double motionZ = this.posZ - this.prevPosZ; this.speed = Math.sqrt(motionX * motionX + motionY * motionY + motionZ * motionZ); + } + } + + public float getEyeHeight() + { + if(this.isFlying() || this.isLemurRiding() ) { + return 0.1F; + } + else { + if(this.isSitting()) { + return 0.65F; + } + + if(this.isChild()) { + return 0.55F; } + + return 0.85F; + } - protected PathNavigate createNavigator(World worldIn) - { - PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); - PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); - - - pathnavigateflying.setCanFloat(true); - pathnavigateflying.setCanOpenDoors(true); - pathnavigateflying.setCanEnterDoors(true); - pathnavigateground.setEnterDoors(true); - pathnavigateground.setCanSwim(true); - - if(this.getMoveHelper() instanceof EntityFlyHelper) - { - return pathnavigateflying; - } - - if(this.getMoveHelper() instanceof EntityMoveHelper) - { - return pathnavigateground; - } - - return pathnavigateflying; - } - public float getEyeHeight() - { - if(this.isFlying() || this.isLemurRiding() ) { - return 0.1F; + + } + @Override + public double getYOffset() { + if(this.getOwner() != null && this.getOwner().isSneaking()) { + if(this.isChild()) { + return 0.15F; + }else { + return 0.50F; } - else { - if(this.isSitting()) { - return 0.65F; - } - else { - return 0.85F; + } + else { + if(this.isChild()) { + return 0.3F; + }else { + return 0.45F; + } + } + + } + public void fall(float distance, float damageMultiplier) + { + + } + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) + { + + } + public boolean getCanSpawnHere() + { + int i = MathHelper.floor(this.posX); + int j = MathHelper.floor(this.getEntityBoundingBox().minY); + int k = MathHelper.floor(this.posZ); + BlockPos blockpos = new BlockPos(i, j, k); + Block block = this.world.getBlockState(blockpos.down()).getBlock(); + return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); + } + @Override + protected void applyEntityAttributes() + { + super.applyEntityAttributes(); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); + this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.33D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); + this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); + this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); + this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); + } + public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) + { + super.setAttackTarget(entitylivingbaseIn); + + if (entitylivingbaseIn == null) + { + this.setAngry(false); + } + else if (!this.isTamed()) + { + this.setAngry(true); + } + } + /* + * Config - End + */ + + public int getVerticalFaceSpeed() + { + return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); + } + public boolean attackEntityFrom(DamageSource source, float amount) + { + if (this.isEntityInvulnerable(source)) + { + return false; + } + else + { + Entity entity = source.getTrueSource(); + + if (this.aiSit != null) + { + this.aiSit.setSitting(false); + } + + return super.attackEntityFrom(source, amount); + } + } + public boolean attackEntityAsMob(Entity entityIn) + { + boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); + + if (flag) + { + this.applyEnchantments(this, entityIn); + } + + return flag; + } + public void setTamed(boolean tamed) + { + super.setTamed(tamed); + } + public boolean processInteract(EntityPlayer player, EnumHand hand) + { + ItemStack itemstack = player.getHeldItem(hand); + + if (this.isTamed()) + { + if (!itemstack.isEmpty()) + { + if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + this.heal(10); + return true; } } - - } - @Override - public double getYOffset() { - if(this.getOwner() != null && this.getOwner().isSneaking()) { - if(this.isChild()) { - return 0.15F; - }else { - return 0.50F; + + if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) + { + this.aiSit.setSitting(!this.isSitting()); + this.isJumping = false; + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + } + } + else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) + { + if (!player.capabilities.isCreativeMode) + { + itemstack.shrink(1); + } + + if (!this.world.isRemote) + { + if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) + { + this.setTamedBy(player); + this.navigator.clearPath(); + this.setAttackTarget((EntityLivingBase)null); + this.aiSit.setSitting(true); + this.setHealth(30.0F); + this.playTameEffect(true); + this.world.setEntityState(this, (byte)7); + } + else + { + this.playTameEffect(false); + this.world.setEntityState(this, (byte)6); } } - else { - if(this.isChild()) { - return 0.3F; - }else { - return 0.45F; + + return true; + } + + return super.processInteract(player, hand); + } + public boolean canBeLeashedTo(EntityPlayer player) + { + return !this.isAngry() && super.canBeLeashedTo(player); + } + public int getMaxSpawnedInChunk() + { + return 8; + } + + public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) + { + if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast)) + { + if (target instanceof EntityFlyingLemur) + { + EntityFlyingLemur entitylemur = (EntityFlyingLemur)target; + + if (entitylemur.isTamed() && entitylemur.getOwner() == owner) + { + return false; } } - } - public void fall(float distance, float damageMultiplier) - { - if(!this.isFlying()) { - super.fall(distance, damageMultiplier); - } - - } - protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) - { - if(!this.isFlying()) { - super.updateFallState(y, onGroundIn, state, pos); - } - - } - public boolean getCanSpawnHere() - { - int i = MathHelper.floor(this.posX); - int j = MathHelper.floor(this.getEntityBoundingBox().minY); - int k = MathHelper.floor(this.posZ); - BlockPos blockpos = new BlockPos(i, j, k); - Block block = this.world.getBlockState(blockpos.down()).getBlock(); - return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); - } - @Override - protected void applyEntityAttributes() + if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer)owner).canAttackPlayer((EntityPlayer)target)) + { + return false; + } + else + { + return !(target instanceof AbstractHorse) || !((AbstractHorse)target).isTame(); + } + } + else { - super.applyEntityAttributes(); - this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); - this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.5D); - this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); - this.getEntityAttribute(SharedMonsterAttributes.ARMOR).setBaseValue(2.0D); - this.getEntityAttribute(SharedMonsterAttributes.FLYING_SPEED).setBaseValue(1.0D); - this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); - this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); - } - public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) - { - super.setAttackTarget(entitylivingbaseIn); - - if (entitylivingbaseIn == null) - { - this.setAngry(false); - } - else if (!this.isTamed()) - { - this.setAngry(true); - } - } - /* - * Config - End - */ - - public int getVerticalFaceSpeed() - { - return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); - } - public boolean attackEntityFrom(DamageSource source, float amount) - { - if (this.isEntityInvulnerable(source)) - { - return false; - } - else - { - Entity entity = source.getTrueSource(); - - if (this.aiSit != null) - { - this.aiSit.setSitting(false); - } - - return super.attackEntityFrom(source, amount); - } - } - public boolean attackEntityAsMob(Entity entityIn) - { - boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); + return false; + } + } - if (flag) - { - this.applyEnchantments(this, entityIn); - } + /* + * Emotions - Start + */ + @Override + public void writeEntityToNBT(NBTTagCompound compound) + { + super.writeEntityToNBT(compound); + compound.setBoolean("Angry", this.isAngry()); + compound.setInteger("Variant", this.getVariant()); + } + @Override + public void readEntityFromNBT(NBTTagCompound compound) + { + super.readEntityFromNBT(compound); + this.setAngry(compound.getBoolean("Angry")); + this.setVariant(compound.getInteger("Variant")); + } + public boolean isAngry() + { + return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; + } + public void setAngry(boolean angry) + { + byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); - return flag; - } - public void setTamed(boolean tamed) - { - super.setTamed(tamed); - } - public boolean processInteract(EntityPlayer player, EnumHand hand) - { - ItemStack itemstack = player.getHeldItem(hand); - - if (this.isTamed()) - { - if (!itemstack.isEmpty()) - { - if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) - { - if (!player.capabilities.isCreativeMode) - { - itemstack.shrink(1); - } - - this.heal(10); - return true; - } - } - - if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) - { - this.aiSit.setSitting(!this.isSitting()); - this.isJumping = false; - this.navigator.clearPath(); - this.setAttackTarget((EntityLivingBase)null); - } - } - else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) - { - if (!player.capabilities.isCreativeMode) - { - itemstack.shrink(1); - } - - if (!this.world.isRemote) - { - if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) - { - this.setTamedBy(player); - this.navigator.clearPath(); - this.setAttackTarget((EntityLivingBase)null); - this.aiSit.setSitting(true); - this.setHealth(30.0F); - this.playTameEffect(true); - this.world.setEntityState(this, (byte)7); - } - else - { - this.playTameEffect(false); - this.world.setEntityState(this, (byte)6); - } - } - - return true; - } - - return super.processInteract(player, hand); - } - public boolean canBeLeashedTo(EntityPlayer player) - { - return !this.isAngry() && super.canBeLeashedTo(player); - } - public int getMaxSpawnedInChunk() - { - return 8; - } + if (angry) + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 | 2))); + } + else + { + this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); + } + } + /* + * Emotions - End + */ - /* - * Emotions - Start - */ - @Override - public void writeEntityToNBT(NBTTagCompound compound) + public void setVariant(int variantIn) + { + this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); + } + public int getVariant() + { + return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); + } + + /* + * Mating - Start + */ + public boolean isBreedingItem(ItemStack stack) + { + return stack.getItem() == Items.GOLDEN_APPLE; + } + @Override + public EntityAgeable createChild(EntityAgeable ageable) + { + EntityFlyingLemur entitymonkey = new EntityFlyingLemur(this.world); + UUID uuid = this.getOwnerId(); + + if (uuid != null) { - super.writeEntityToNBT(compound); - compound.setBoolean("Angry", this.isAngry()); - compound.setInteger("Variant", this.getVariant()); - } - @Override - public void readEntityFromNBT(NBTTagCompound compound) - { - super.readEntityFromNBT(compound); - this.setAngry(compound.getBoolean("Angry")); - this.setVariant(compound.getInteger("Variant")); - } - public boolean isAngry() - { - return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; - } - public void setAngry(boolean angry) - { - byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); - - if (angry) - { - this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 | 2))); - } - else - { - this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); - } - } - /* - * Emotions - End - */ + entitymonkey.setOwnerId(uuid); + entitymonkey.setTamed(true); + } - public void setVariant(int variantIn) + return entitymonkey; + } + public boolean canMateWith(EntityAnimal otherAnimal) + { + if (otherAnimal == this) + { + return false; + } + else if (!this.isTamed()) + { + return false; + } + else if (!(otherAnimal instanceof EntityFlyingLemur)) + { + return false; + } + else { - this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); + EntityFlyingLemur lemur = (EntityFlyingLemur)otherAnimal; + + if (!lemur.isTamed()) + { + return false; + } + else if (lemur.isSitting()) + { + return false; + } + else + { + return this.isInLove() && lemur.isInLove(); + } } - public int getVariant() + } + /* + * Mating - End + */ + + /* + * Sounds - Start + */ + protected SoundEvent getAmbientSound() { - return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); + return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; } + protected SoundEvent getHurtSound(DamageSource damageSourceIn) + { + return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; + } + protected SoundEvent getDeathSound() + { + return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; + } + protected float getSoundVolume() + { + return 1.75F; + } + /* + * Sounds - End + */ /* - * Mating - Start - */ - public boolean isBreedingItem(ItemStack stack) - { - return stack.getItem() == Items.GOLDEN_APPLE; - } - @Override - public EntityAgeable createChild(EntityAgeable ageable) + * Particle Effects - Start + */ + public void playRideEffect(boolean play) { + EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; + for (int i = 0; i < 4; ++i) { - EntityFlyingLemur entitymonkey = new EntityFlyingLemur(this.world); - UUID uuid = this.getOwnerId(); - - if (uuid != null) - { - entitymonkey.setOwnerId(uuid); - entitymonkey.setTamed(true); - } - - return entitymonkey; - } - public boolean canMateWith(EntityAnimal otherAnimal) - { - if (otherAnimal == this) - { - return false; - } - else if (!this.isTamed()) - { - return false; - } - else if (!(otherAnimal instanceof EntityFlyingLemur)) - { - return false; - } - else - { - EntityFlyingLemur lemur = (EntityFlyingLemur)otherAnimal; - - if (!lemur.isTamed()) - { - return false; - } - else if (lemur.isSitting()) - { - return false; - } - else - { - return this.isInLove() && lemur.isInLove(); - } - } - } - /* - * Mating - End - */ - - /* - * Sounds - Start - */ - protected SoundEvent getAmbientSound() - { - return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; - } - protected SoundEvent getHurtSound(DamageSource damageSourceIn) - { - return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; - } - protected SoundEvent getDeathSound() - { - return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; - } - protected float getSoundVolume() - { - return 1.75F; - } - /* - * Sounds - End - */ - - /* - * Particle Effects - Start - */ - public void playRideEffect(boolean play) { - EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; - for (int i = 0; i < 4; ++i) - { - double d0 = this.rand.nextGaussian() * 0.02D; - double d1 = this.rand.nextGaussian() * 0.02D; - double d2 = this.rand.nextGaussian() * 0.02D; - this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); - } - } - /* - * Particle Effects - End - */ + double d0 = this.rand.nextGaussian() * 0.02D; + double d1 = this.rand.nextGaussian() * 0.02D; + double d2 = this.rand.nextGaussian() * 0.02D; + this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); + } + } + /* + * Particle Effects - End + */ } \ No newline at end of file From a5184bb4e27408d26ec2c84e11236b60c8be29bd Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Thu, 23 Jul 2020 22:20:25 +0300 Subject: [PATCH 6/9] small non llibrary lemur update. --- .../com/crowsofwar/avatar/client/render/ModelLemur.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java index e020027e46..fed5e262d1 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java @@ -8,6 +8,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.math.MathHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; @@ -1526,7 +1527,13 @@ else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entityIn); - + //TODO + this.theHead.rotateAngleY = netHeadYaw * 0.017453292F; + this.theHead.rotateAngleX = headPitch * 0.017453292F; + this.ArmLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; + this.ArmRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; + this.ArmLeft.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; + this.ArmRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; } private float triangleWave(float p_78172_1_, float p_78172_2_) From 6a817187942e6dc42f062dc85ed320253c8571b0 Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Fri, 24 Jul 2020 02:00:44 +0300 Subject: [PATCH 7/9] lemur will fight back when attacked, other lemurs will join also. --- .../entity/EntityAscendedFlyingLemur.java | 100 ++---------------- .../common/entity/EntityFlyingLemur.java | 15 +-- 2 files changed, 9 insertions(+), 106 deletions(-) diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java index 3980ed5ffd..d0d55a9de2 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java @@ -64,17 +64,12 @@ public EntityAscendedFlyingLemur(World worldIn) this.moveHelper = new EntityFlyHelper(this); experienceValue = 200; } - - - @Nullable public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) { this.setVariant(this.rand.nextInt(2)); return super.onInitialSpawn(difficulty, livingdata); } - - @Override protected void initEntityAI() { @@ -86,13 +81,11 @@ protected void initEntityAI() this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0D, 5.0F, 1.0F)); this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); - this.tasks.addTask(3, new EntityAIFollow(this, 1.0D, 3.0F, 7.0F)); this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.2D, true)); this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); this.targetTasks.addTask(2, new EntityAIOwnerHurtTarget(this)); this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); - } @Override @@ -197,7 +190,7 @@ public void onLivingUpdate() this.moveHelper = new EntityMoveHelper(this); } else { - if(!this.isInWater() && !this.isInLove() && !this.isAngry()) { + if(!this.isInWater() && !this.isInLove()) { this.moveHelper = new EntityFlyHelper(this); } } @@ -229,11 +222,6 @@ public void onLivingUpdate() } } - if (!this.world.isRemote && this.getAttackTarget() == null && this.isAngry()) - { - this.setAngry(false); - } - } @SideOnly(Side.CLIENT) @@ -443,19 +431,7 @@ protected void applyEntityAttributes() this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); } - public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) - { - super.setAttackTarget(entitylivingbaseIn); - if (entitylivingbaseIn == null) - { - this.setAngry(false); - } - else if (!this.isTamed()) - { - this.setAngry(true); - } - } /* * Config - End */ @@ -539,7 +515,7 @@ public boolean processInteract(EntityPlayer player, EnumHand hand) this.setAttackTarget((EntityLivingBase)null); } } - else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) + else if (TAME_ITEMS.contains(itemstack.getItem())) { if (!player.capabilities.isCreativeMode) { @@ -572,77 +548,13 @@ else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) } public boolean canBeLeashedTo(EntityPlayer player) { - return !this.isAngry() && super.canBeLeashedTo(player); + return super.canBeLeashedTo(player); } public int getMaxSpawnedInChunk() { return 8; } - public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) - { - if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast)) - { - if (target instanceof EntityFlyingLemur) - { - EntityAscendedFlyingLemur entitylemur = (EntityAscendedFlyingLemur)target; - - if (entitylemur.isTamed() && entitylemur.getOwner() == owner) - { - return false; - } - } - - if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer)owner).canAttackPlayer((EntityPlayer)target)) - { - return false; - } - else - { - return !(target instanceof AbstractHorse) || !((AbstractHorse)target).isTame(); - } - } - else - { - return false; - } - } - - /* - * Emotions - Start - */ - @Override - public void writeEntityToNBT(NBTTagCompound compound) - { - super.writeEntityToNBT(compound); - compound.setBoolean("Angry", this.isAngry()); - } - @Override - public void readEntityFromNBT(NBTTagCompound compound) - { - super.readEntityFromNBT(compound); - this.setAngry(compound.getBoolean("Angry")); - } - public boolean isAngry() - { - return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; - } - public void setAngry(boolean angry) - { - byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); - - if (angry) - { - this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 | 2))); - } - else - { - this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); - } - } - /* - * Emotions - End - */ public void setVariant(int variantIn) { this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); @@ -745,7 +657,7 @@ public void playRideEffect(boolean play) { this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); } } - /* - * Particle Effects - End - */ +/* + * Particle Effects - End + */ } \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java index 9fc22e6ae7..6f98b148e0 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java @@ -71,7 +71,6 @@ public EntityFlyingLemur(World worldIn) experienceValue = 200; } - @Override protected void initEntityAI() { @@ -83,7 +82,6 @@ protected void initEntityAI() this.tasks.addTask(2, new EntityAIFollowOwner(this, 1.0F, 10.0F, 2.0F)); this.tasks.addTask(2, new EntityAIFollowOwnerFlying(this, 1.0D, 5.0F, 1.0F)); this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 16.0F)); - this.tasks.addTask(3, new EntityAIFollow(this, 1.0D, 3.0F, 7.0F)); this.tasks.addTask(5, new EntityAIAttackMelee(this, 1.2D, true)); this.tasks.addTask(6, new EntityAIMate(this, 1.5D)); this.targetTasks.addTask(1, new EntityAIOwnerHurtByTarget(this)); @@ -114,15 +112,7 @@ protected PathNavigate createNavigator(World worldIn) return null; } -/* - protected PathNavigate createNavigator(World worldIn) - { - PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); - pathnavigateflying.setCanOpenDoors(false); - pathnavigateflying.setCanFloat(true); - pathnavigateflying.setCanEnterDoors(true); - return pathnavigateflying; - }*/ + @Override public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) { @@ -553,7 +543,7 @@ public int getMaxSpawnedInChunk() public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) { - if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast)) + if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast) && !(target instanceof EntityAscendedFlyingLemur)) { if (target instanceof EntityFlyingLemur) { @@ -572,6 +562,7 @@ public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owne else { return !(target instanceof AbstractHorse) || !((AbstractHorse)target).isTame(); + } } else From 3f96f634df238abb349ec1e97107f2551ad6fb37 Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Fri, 24 Jul 2020 02:35:08 +0300 Subject: [PATCH 8/9] put lemur EntityFlyingLemur.java & EntityAscendedFlyingLemur.java files into mob folder. --- .../com/crowsofwar/avatar/client/render/ModelLemur.java | 4 ++-- .../avatar/client/render/ModelLlibraryLemur.java | 4 ++-- .../avatar/client/render/RenderAscendedLemur.java | 2 +- .../avatar/client/render/RenderAscendedLlibraryLemur.java | 2 +- .../com/crowsofwar/avatar/client/render/RenderLemur.java | 2 +- .../avatar/client/render/RenderLlibraryLemur.java | 2 +- .../entity/{ => mob}/EntityAscendedFlyingLemur.java | 8 +++----- .../avatar/common/entity/{ => mob}/EntityFlyingLemur.java | 6 ++++-- .../avatar/common/event/ServerEventHandler.java | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) rename src/main/java/com/crowsofwar/avatar/common/entity/{ => mob}/EntityAscendedFlyingLemur.java (98%) rename src/main/java/com/crowsofwar/avatar/common/entity/{ => mob}/EntityFlyingLemur.java (99%) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java index fed5e262d1..5a56db801f 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java @@ -1,8 +1,8 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.api.helper.GliderHelper; -import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; -import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityFlyingLemur; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java index f73ceac360..3421b151c9 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java @@ -1,8 +1,8 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.api.helper.GliderHelper; -import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; -import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityFlyingLemur; import net.ilexiconn.llibrary.client.model.ModelAnimator; import net.ilexiconn.llibrary.client.model.tools.AdvancedModelBase; import net.ilexiconn.llibrary.client.model.tools.AdvancedModelRenderer; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java index 544ca74e49..dd452dda78 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLemur.java @@ -1,7 +1,7 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityAscendedFlyingLemur; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java index cddf8b152b..2ec21cd70a 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderAscendedLlibraryLemur.java @@ -1,7 +1,7 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityAscendedFlyingLemur; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java index b42a4f78e6..e8444c3f1d 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLemur.java @@ -1,7 +1,7 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityFlyingLemur; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java index b1f1fc45ad..d5d84d0469 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/RenderLlibraryLemur.java @@ -1,7 +1,7 @@ package com.crowsofwar.avatar.client.render; import com.crowsofwar.avatar.AvatarInfo; -import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityFlyingLemur; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java similarity index 98% rename from src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java index d0d55a9de2..b74f9bb4db 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityAscendedFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.common.entity; +package com.crowsofwar.avatar.common.entity.mob; import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; import com.crowsofwar.avatar.client.sounds.SoundsHandler; @@ -10,9 +10,6 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.entity.*; import net.minecraft.entity.ai.*; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.monster.EntityGhast; -import net.minecraft.entity.passive.AbstractHorse; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityFlying; import net.minecraft.entity.passive.EntityTameable; @@ -21,7 +18,6 @@ import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.EntityDataManager; @@ -42,6 +38,8 @@ import java.util.UUID; /** + * EntityWolf EntityParrot EntityOcelot EntityCreeper EntityZombie EntityHorse EntityTameable + * * @author Korog3a */ diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java similarity index 99% rename from src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java rename to src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java index 6f98b148e0..eca9ae4622 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/EntityFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java @@ -1,4 +1,4 @@ -package com.crowsofwar.avatar.common.entity; +package com.crowsofwar.avatar.common.entity.mob; import com.crowsofwar.avatar.api.capabilities.IPlayerShoulders; import com.crowsofwar.avatar.client.sounds.SoundsHandler; @@ -40,7 +40,9 @@ import java.util.UUID; /** - * @author Korog3 + * EntityWolf EntityParrot EntityOcelot EntityCreeper EntityZombie EntityHorse EntityTameable + * + * @author Korog3a */ public class EntityFlyingLemur extends EntityTameable implements EntityFlying diff --git a/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java b/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java index 840b445855..286070a6fd 100644 --- a/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java @@ -6,8 +6,8 @@ import com.crowsofwar.avatar.api.helper.GliderHelper; import com.crowsofwar.avatar.common.capabilities.CapabilityPlayerShoulders; import com.crowsofwar.avatar.common.capabilities.GliderCapabilityImplementation; -import com.crowsofwar.avatar.common.entity.EntityAscendedFlyingLemur; -import com.crowsofwar.avatar.common.entity.EntityFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityAscendedFlyingLemur; +import com.crowsofwar.avatar.common.entity.mob.EntityFlyingLemur; import com.crowsofwar.avatar.common.helper.GliderPlayerHelper; import com.crowsofwar.avatar.common.network.packets.glider.PacketCUpdateClientTarget; import net.minecraft.entity.Entity; From 873c4eab59757d8f3d7ca57cc61f949c85442702 Mon Sep 17 00:00:00 2001 From: Korog3 <68038725+Korog3@users.noreply.github.com> Date: Thu, 6 Aug 2020 01:52:38 +0300 Subject: [PATCH 9/9] updated code format --- .../avatar/client/render/ModelLemur.java | 24 +- .../client/render/ModelLlibraryLemur.java | 17 +- .../entity/mob/EntityAscendedFlyingLemur.java | 262 +++++----------- .../common/entity/mob/EntityFlyingLemur.java | 292 ++++++------------ .../common/event/ServerEventHandler.java | 43 +-- 5 files changed, 197 insertions(+), 441 deletions(-) diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java index 5a56db801f..51ca014fc4 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLemur.java @@ -831,16 +831,14 @@ public ModelLemur() { public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { super.render(entityIn, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale); - if (this.isChild) - { + if (this.isChild) { GL11.glPushMatrix(); GL11.glTranslatef(0F, 1.5F-1.5F*0.35F, 0F); GL11.glScalef(0.35F, 0.35F, 0.35F); this.Body.render(scale); GL11.glPopMatrix(); } - else - { + else { GL11.glPushMatrix(); GL11.glTranslatef(0F, 1.5F-1.5F*0.5F, 0F); GL11.glScalef(0.5F, 0.5F, 0.5F); @@ -855,8 +853,7 @@ public void setRotateAngle(ModelRenderer ModelRenderer, float x, float y, float ModelRenderer.rotateAngleZ = z; } - public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) - { + public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) { /* this.Left_Wing.setScale(0, 0, 0); @@ -868,8 +865,8 @@ public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbS boolean gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); - if (lemur.isPartying()) - { + if (lemur.isPartying()) { + this.state = State.PARTY; //TODO this.Body.rotateAngleY = -1.5F; @@ -1197,8 +1194,7 @@ else if (lemur.speed > 0.1F && lemur.speed < 0.25F && !lemur.isLemurRiding()) EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)entitylivingbaseIn; - if (lemur.isPartying()) - { + if (lemur.isPartying()) { this.state = State.PARTY; //TODO this.Body.rotateAngleY = -1.5F; @@ -1536,13 +1532,9 @@ public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageI this.ArmRight.rotateAngleX = MathHelper.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; } - private float triangleWave(float p_78172_1_, float p_78172_2_) - { - return (Math.abs(p_78172_1_ % p_78172_2_ - p_78172_2_ * 0.5F) - p_78172_2_ * 0.25F) / (p_78172_2_ * 0.25F); - } + @SideOnly(Side.CLIENT) - static enum State - { + static enum State { FLYING, SPRINTING, SITTING, diff --git a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java index 3421b151c9..94fc103211 100644 --- a/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java +++ b/src/main/java/com/crowsofwar/avatar/client/render/ModelLlibraryLemur.java @@ -860,8 +860,7 @@ public void setRotateAngle(AdvancedModelRenderer AdvancedAdvancedModelRenderer, AdvancedAdvancedModelRenderer.rotateAngleZ = z; } - public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) - { + public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTickTime) { this.resetToDefaultPose(); this.Left_Wing.setScale(0, 0, 0); @@ -875,8 +874,7 @@ public void setLivingAnimations(EntityLivingBase entitylivingbaseIn, float limbS gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); } - if (lemur.isPartying()) - { + if (lemur.isPartying()) { this.state = ModelLlibraryLemur.State.PARTY; this.Body.rotateAngleY = -1.5F; this.Body.rotateAngleX = 0.3F; @@ -1203,8 +1201,7 @@ else if (lemur.isFlying() && !lemur.isLemurRiding()) gliding = GliderHelper.getIsGliderDeployed((EntityPlayer) lemur.getOwner()); } - if (lemur.isPartying()) - { + if (lemur.isPartying()) { this.state = ModelLlibraryLemur.State.PARTY; this.Body.rotateAngleY = -1.5F; this.Body.rotateAngleX = 0.3F; @@ -1738,13 +1735,9 @@ else if(this.state == State.PARTY) { //RIGHT } - private float triangleWave(float p_78172_1_, float p_78172_2_) - { - return (Math.abs(p_78172_1_ % p_78172_2_ - p_78172_2_ * 0.5F) - p_78172_2_ * 0.25F) / (p_78172_2_ * 0.25F); - } + @SideOnly(Side.CLIENT) - static enum State - { + static enum State { FLYING, SPRINTING, SITTING, diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java index b74f9bb4db..b09e839769 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityAscendedFlyingLemur.java @@ -55,22 +55,21 @@ public class EntityAscendedFlyingLemur extends EntityTameable implements EntityF private boolean partyLemur; private BlockPos jukeboxPosition; - public EntityAscendedFlyingLemur(World worldIn) - { + public EntityAscendedFlyingLemur(World worldIn) { super(worldIn); this.setSize(0.3F, 1F); this.moveHelper = new EntityFlyHelper(this); experienceValue = 200; } + @Nullable - public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) - { + public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) { this.setVariant(this.rand.nextInt(2)); return super.onInitialSpawn(difficulty, livingdata); } + @Override - protected void initEntityAI() - { + protected void initEntityAI() { this.aiSit = new EntityAISit(this); this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, this.aiSit); @@ -87,24 +86,19 @@ protected void initEntityAI() } @Override - public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) - { + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) { - if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) - { + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) { IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); this.setSitting(false); - if(playerShoulders.getRiders().size() == 0) - { - if(!previusRidingPos) - { + if(playerShoulders.getRiders().size() == 0) { + if(!previusRidingPos) { this.setRightShoulder(true); this.setNoAI(true); playerShoulders.setRightShoulder(true); previusRidingPos = true; } - else - { + else { this.setLeftShoulder(true); this.setNoAI(true); playerShoulders.setLeftShoulder(true); @@ -114,10 +108,8 @@ public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, E playerShoulders.addRiders(this); } else { - if(playerShoulders.getRiders().size() < 2) - { - if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) - { + if(playerShoulders.getRiders().size() < 2) { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) { if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); if(lemur.getRightShoulder()) { @@ -162,7 +154,6 @@ else if (lemur.getLeftShoulder()) { } - return super.applyPlayerInteraction(player, vec, hand); } @@ -175,8 +166,7 @@ public boolean isLemurRiding() { } @Override - public void onLivingUpdate() - { + public void onLivingUpdate() { super.onLivingUpdate(); updatespeed(!this.isLemurRiding()); @@ -195,14 +185,11 @@ public void onLivingUpdate() } - - if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) - { + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) { this.partyLemur = false; this.jukeboxPosition = null; } - if(this.isLemurRiding()) { if(this.getOwner() != null && this.getOwner().dimension == this.dimension) { this.setRotation(this.getOwner().renderYawOffset, 0); @@ -223,20 +210,16 @@ public void onLivingUpdate() } @SideOnly(Side.CLIENT) - public void setPartying(BlockPos pos, boolean p_191987_2_) - { + public void setPartying(BlockPos pos, boolean p_191987_2_) { this.jukeboxPosition = pos; this.partyLemur = p_191987_2_; } - @SideOnly(Side.CLIENT) - public boolean isPartying() - { + public boolean isPartying() { return this.partyLemur; } - @Override public boolean canBeCollidedWith() { if(this.isLemurRiding()) return false; @@ -254,31 +237,28 @@ public boolean getRightShoulder() { public void setLeftShoulder(boolean ride) { byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); - if (ride) - { + if (ride) { this.height = 0.0f; this.width = 0.1f; this.setSitting(false); this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } - else - { + else { this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } } + public void setRightShoulder(boolean ride) { byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); - if (ride) - { + if (ride) { this.height = 0.0f; this.width = 0.1f; this.setSitting(false); this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } - else - { + else { this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } } @@ -289,16 +269,14 @@ protected boolean canDespawn() { } @Override - protected void entityInit() - { + protected void entityInit() { super.entityInit(); this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(VARIANT, Integer.valueOf(0)); } - public boolean isFlying() - { + public boolean isFlying() { return !this.onGround; } @@ -311,8 +289,7 @@ public void updatespeed(boolean canUpdate) { } } - protected PathNavigate createNavigator(World worldIn) - { + protected PathNavigate createNavigator(World worldIn) { PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); pathnavigateflying.setCanOpenDoors(false); pathnavigateflying.setCanFloat(true); @@ -321,46 +298,18 @@ protected PathNavigate createNavigator(World worldIn) PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); - if(this.getMoveHelper() instanceof EntityFlyHelper) - { + if(this.getMoveHelper() instanceof EntityFlyHelper) { return pathnavigateflying; } - if(this.getMoveHelper() instanceof EntityMoveHelper) - { + if(this.getMoveHelper() instanceof EntityMoveHelper) { return pathnavigateground; } return null; } - /* - protected PathNavigate createNavigator(World worldIn) - { - PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); - PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); - - - pathnavigateflying.setCanFloat(true); - pathnavigateflying.setCanOpenDoors(true); - pathnavigateflying.setCanEnterDoors(true); - pathnavigateground.setEnterDoors(true); - pathnavigateground.setCanSwim(true); - - if(this.getMoveHelper() instanceof EntityFlyHelper) - { - return pathnavigateflying; - } - - if(this.getMoveHelper() instanceof EntityMoveHelper) - { - return pathnavigateground; - } - return null; - } - */ - public float getEyeHeight() - { + public float getEyeHeight() { if(this.isFlying() || this.isLemurRiding() ) { return 0.1F; } @@ -378,6 +327,7 @@ public float getEyeHeight() } } + @Override public double getYOffset() { if(this.getOwner() != null && this.getOwner().isSneaking()) { @@ -397,19 +347,15 @@ public double getYOffset() { } - - public void fall(float distance, float damageMultiplier) - { + public void fall(float distance, float damageMultiplier) { } - protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) - { + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) { } - public boolean getCanSpawnHere() - { + public boolean getCanSpawnHere() { int i = MathHelper.floor(this.posX); int j = MathHelper.floor(this.getEntityBoundingBox().minY); int k = MathHelper.floor(this.posZ); @@ -417,9 +363,9 @@ public boolean getCanSpawnHere() Block block = this.world.getBlockState(blockpos.down()).getBlock(); return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); } + @Override - protected void applyEntityAttributes() - { + protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.33D); @@ -430,38 +376,26 @@ protected void applyEntityAttributes() this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); } - /* - * Config - End - */ - - public int getVerticalFaceSpeed() - { + public int getVerticalFaceSpeed() { return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); } - public boolean attackEntityFrom(DamageSource source, float amount) - { - if (this.isEntityInvulnerable(source)) - { + + public boolean attackEntityFrom(DamageSource source, float amount) { + if (this.isEntityInvulnerable(source)) { return false; } - else - { + else { Entity entity = source.getTrueSource(); - if (this.aiSit != null) - { + if (this.aiSit != null) { this.aiSit.setSitting(false); } - - - if (entity instanceof EntityPlayer) - { + if (entity instanceof EntityPlayer) { if(!((EntityPlayer) entity).isCreative()) return false; } - else - { + else { if(source != source.OUT_OF_WORLD) { return false; } @@ -470,33 +404,29 @@ public boolean attackEntityFrom(DamageSource source, float amount) return super.attackEntityFrom(source, amount); } } - public boolean attackEntityAsMob(Entity entityIn) - { + + public boolean attackEntityAsMob(Entity entityIn) { boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); - if (flag) - { + if (flag) { this.applyEnchantments(this, entityIn); } return flag; } + public void setTamed(boolean tamed) { super.setTamed(tamed); } - public boolean processInteract(EntityPlayer player, EnumHand hand) - { + + public boolean processInteract(EntityPlayer player, EnumHand hand) { ItemStack itemstack = player.getHeldItem(hand); - if (this.isTamed()) - { - if (!itemstack.isEmpty()) - { - if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) - { - if (!player.capabilities.isCreativeMode) - { + if (this.isTamed()) { + if (!itemstack.isEmpty()) { + if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) { + if (!player.capabilities.isCreativeMode) { itemstack.shrink(1); } @@ -505,25 +435,20 @@ public boolean processInteract(EntityPlayer player, EnumHand hand) } } - if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) - { + if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) { this.aiSit.setSitting(!this.isSitting()); this.isJumping = false; this.navigator.clearPath(); this.setAttackTarget((EntityLivingBase)null); } } - else if (TAME_ITEMS.contains(itemstack.getItem())) - { - if (!player.capabilities.isCreativeMode) - { + else if (TAME_ITEMS.contains(itemstack.getItem())) { + if (!player.capabilities.isCreativeMode) { itemstack.shrink(1); } - if (!this.world.isRemote) - { - if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) - { + if (!this.world.isRemote) { + if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) { this.setTamedBy(player); this.navigator.clearPath(); this.setAttackTarget((EntityLivingBase)null); @@ -532,8 +457,7 @@ else if (TAME_ITEMS.contains(itemstack.getItem())) this.playTameEffect(true); this.world.setEntityState(this, (byte)7); } - else - { + else { this.playTameEffect(false); this.world.setEntityState(this, (byte)6); } @@ -544,107 +468,85 @@ else if (TAME_ITEMS.contains(itemstack.getItem())) return super.processInteract(player, hand); } - public boolean canBeLeashedTo(EntityPlayer player) - { + + public boolean canBeLeashedTo(EntityPlayer player) { return super.canBeLeashedTo(player); } - public int getMaxSpawnedInChunk() - { + + public int getMaxSpawnedInChunk() { return 8; } - public void setVariant(int variantIn) - { + public void setVariant(int variantIn) { this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); } - public int getVariant() - { + + public int getVariant() { return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); } - /* - * Mating - Start - */ - public boolean isBreedingItem(ItemStack stack) - { + public boolean isBreedingItem(ItemStack stack) { return stack.getItem() == Items.GOLDEN_APPLE; } + @Override - public EntityAgeable createChild(EntityAgeable ageable) - { + public EntityAgeable createChild(EntityAgeable ageable) { EntityAscendedFlyingLemur entitymonkey = new EntityAscendedFlyingLemur(this.world); UUID uuid = this.getOwnerId(); - if (uuid != null) - { + if (uuid != null) { entitymonkey.setOwnerId(uuid); entitymonkey.setTamed(true); } return entitymonkey; } - public boolean canMateWith(EntityAnimal otherAnimal) - { - if (otherAnimal == this) - { + + public boolean canMateWith(EntityAnimal otherAnimal) { + if (otherAnimal == this) { return false; } - else if (!this.isTamed()) - { + else if (!this.isTamed()) { return false; } - else if (!(otherAnimal instanceof EntityAscendedFlyingLemur)) - { + else if (!(otherAnimal instanceof EntityAscendedFlyingLemur)) { return false; } - else - { + else { EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur)otherAnimal; - if (!lemur.isTamed()) - { + if (!lemur.isTamed()) { return false; } - else if (lemur.isSitting()) - { + else if (lemur.isSitting()) { return false; } - else - { + else { return this.isInLove() && lemur.isInLove(); } } } - /* - * Mating - End - */ - /* - * Sounds - Start - */ protected SoundEvent getAmbientSound() { return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; } + protected SoundEvent getHurtSound(DamageSource damageSourceIn) { return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; } + protected SoundEvent getDeathSound() { return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; } + protected float getSoundVolume() { return 1.75F; } - /* - * Sounds - End - */ - /* - * Particle Effects - Start - */ public void playRideEffect(boolean play) { EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; for (int i = 0; i < 4; ++i) @@ -655,7 +557,5 @@ public void playRideEffect(boolean play) { this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); } } -/* - * Particle Effects - End - */ + } \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java index eca9ae4622..ed04e41f20 100644 --- a/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java +++ b/src/main/java/com/crowsofwar/avatar/common/entity/mob/EntityFlyingLemur.java @@ -45,8 +45,7 @@ * @author Korog3a */ -public class EntityFlyingLemur extends EntityTameable implements EntityFlying -{ +public class EntityFlyingLemur extends EntityTameable implements EntityFlying { private static final DataParameter VARIANT = EntityDataManager.createKey(EntityFlyingLemur.class, DataSerializers.VARINT); private static final Set TAME_ITEMS = Sets.newHashSet(Items.CARROT, Items.APPLE, Items.GOLDEN_APPLE); @@ -59,14 +58,12 @@ public class EntityFlyingLemur extends EntityTameable implements EntityFlying private BlockPos jukeboxPosition; @Nullable - public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) - { + public IEntityLivingData onInitialSpawn(DifficultyInstance difficulty, @Nullable IEntityLivingData livingdata) { this.setVariant(this.rand.nextInt(2)); return super.onInitialSpawn(difficulty, livingdata); } - public EntityFlyingLemur(World worldIn) - { + public EntityFlyingLemur(World worldIn) { super(worldIn); this.setSize(0.4F, 1F); this.moveHelper = new EntityFlyHelper(this); @@ -74,8 +71,7 @@ public EntityFlyingLemur(World worldIn) } @Override - protected void initEntityAI() - { + protected void initEntityAI() { this.aiSit = new EntityAISit(this); this.tasks.addTask(1, new EntityAISwimming(this)); this.tasks.addTask(2, this.aiSit); @@ -91,61 +87,46 @@ protected void initEntityAI() this.targetTasks.addTask(3, new EntityAIHurtByTarget(this, true, new Class[0])); } - - protected PathNavigate createNavigator(World worldIn) - { + protected PathNavigate createNavigator(World worldIn) { PathNavigateFlying pathnavigateflying = new PathNavigateFlying(this, worldIn); pathnavigateflying.setCanOpenDoors(false); pathnavigateflying.setCanFloat(true); pathnavigateflying.setCanEnterDoors(true); - PathNavigateGround pathnavigateground = new PathNavigateGround(this, worldIn); - - if(this.getMoveHelper() instanceof EntityFlyHelper) - { + if(this.getMoveHelper() instanceof EntityFlyHelper) { return pathnavigateflying; } - if(this.getMoveHelper() instanceof EntityMoveHelper) - { + if(this.getMoveHelper() instanceof EntityMoveHelper) { return pathnavigateground; } - return null; } @Override - public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) - { - if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) - { + public EnumActionResult applyPlayerInteraction(EntityPlayer player, Vec3d vec, EnumHand hand) { + if(player.isSneaking() && this.getOwner() != null && this.getOwner() == player && !this.getLeashed()) { IPlayerShoulders playerShoulders = player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); this.setSitting(false); - if(playerShoulders.getRiders().size() == 0) - { - if(!previusRidingPos) - { + if(playerShoulders.getRiders().size() == 0) { + if(!previusRidingPos) { this.setRightShoulder(true); this.setNoAI(true); playerShoulders.setRightShoulder(true); previusRidingPos = true; } - else - { + else { this.setLeftShoulder(true); this.setNoAI(true); playerShoulders.setLeftShoulder(true); previusRidingPos = false; } - playerShoulders.addRiders(this); } else { - if(playerShoulders.getRiders().size() < 2) - { - if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) - { + if(playerShoulders.getRiders().size() < 2) { + if(playerShoulders.getRiders().size() == 1 && !playerShoulders.getRiders().contains(this)) { if(playerShoulders.getRiders().get(0) instanceof EntityAscendedFlyingLemur) { EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) playerShoulders.getRiders().get(0); if(lemur.getRightShoulder()) { @@ -189,12 +170,7 @@ else if (lemur.getLeftShoulder()) { } } } - - - - } - return super.applyPlayerInteraction(player, vec, hand); } @@ -207,16 +183,14 @@ public boolean isLemurRiding() { } @Override - public void onLivingUpdate() - { + public void onLivingUpdate() { super.onLivingUpdate(); updatespeed(!this.isLemurRiding()); if(!this.isLemurRiding() && this.isAIDisabled()) this.setNoAI(false); - if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) - { + if (this.jukeboxPosition == null || this.jukeboxPosition.distanceSq(this.posX, this.posY, this.posZ) > 12.0D || this.world.getBlockState(this.jukeboxPosition).getBlock() != Blocks.JUKEBOX) { this.partyLemur = false; this.jukeboxPosition = null; } @@ -230,7 +204,6 @@ public void onLivingUpdate() this.moveHelper = new EntityFlyHelper(this); } } - } if(this.isLemurRiding()) { @@ -243,7 +216,7 @@ public void onLivingUpdate() } this.setRenderYawOffset(this.getOwner().renderYawOffset); - if(this.isChild()) { + if (this.isChild()) { this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); }else { this.setPosition(this.getOwner().posX, this.getOwner().posY + this.getOwner().getMountedYOffset() + this.getYOffset() + 0.30F, this.getOwner().posZ); @@ -252,27 +225,22 @@ public void onLivingUpdate() } } - - if (!this.world.isRemote && this.getAttackTarget() == null && this.isAngry()) - { + if (!this.world.isRemote && this.getAttackTarget() == null && this.isAngry()) { this.setAngry(false); } } @SideOnly(Side.CLIENT) - public void setPartying(BlockPos pos, boolean p_191987_2_) - { + public void setPartying(BlockPos pos, boolean p_191987_2_) { this.jukeboxPosition = pos; this.partyLemur = p_191987_2_; } @SideOnly(Side.CLIENT) - public boolean isPartying() - { + public boolean isPartying() { return this.partyLemur; } - @Override public boolean canBeCollidedWith() { if(this.isLemurRiding()) return false; @@ -282,39 +250,36 @@ public boolean canBeCollidedWith() { public boolean getLeftShoulder() { return (((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue() & 1) != 0; } - public boolean getRightShoulder() { + public boolean getRightShoulder() { return (((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue() & 1) != 0; } public void setLeftShoulder(boolean ride) { byte b0 = ((Byte)this.dataManager.get(LEFTSHOULDER)).byteValue(); - if (ride) - { + if (ride){ this.height = 0.0f; this.width = 0.1f; this.setSitting(false); this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } - else - { + else { this.dataManager.set(LEFTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } } + public void setRightShoulder(boolean ride) { byte b0 = ((Byte)this.dataManager.get(RIGHTSHOULDER)).byteValue(); - if (ride) - { + if (ride) { this.height = 0.0f; this.width = 0.1f; this.setSitting(false); this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 | 1))); } - else - { + else { this.dataManager.set(RIGHTSHOULDER, Byte.valueOf((byte)(b0 & -2))); } } @@ -324,25 +289,15 @@ protected boolean canDespawn() { return false; } - @Override - protected void entityInit() - { + protected void entityInit() { super.entityInit(); this.dataManager.register(RIGHTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(LEFTSHOULDER, Byte.valueOf((byte)0)); this.dataManager.register(VARIANT, Integer.valueOf(0)); } - /* - public boolean isFlying() - { - if(this.onGround || this.isLemurRiding() || this.isInWater()) return false; - return this.isActualyFlying; - } - */ - public boolean isFlying() - { + public boolean isFlying() { return !this.onGround; } @@ -355,8 +310,7 @@ public void updatespeed(boolean canUpdate) { } } - public float getEyeHeight() - { + public float getEyeHeight() { if(this.isFlying() || this.isLemurRiding() ) { return 0.1F; } @@ -374,6 +328,7 @@ public float getEyeHeight() } } + @Override public double getYOffset() { if(this.getOwner() != null && this.getOwner().isSneaking()) { @@ -392,16 +347,15 @@ public double getYOffset() { } } - public void fall(float distance, float damageMultiplier) - { + + public void fall(float distance, float damageMultiplier) { } - protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) - { + protected void updateFallState(double y, boolean onGroundIn, IBlockState state, BlockPos pos) { } - public boolean getCanSpawnHere() - { + + public boolean getCanSpawnHere() { int i = MathHelper.floor(this.posX); int j = MathHelper.floor(this.getEntityBoundingBox().minY); int k = MathHelper.floor(this.posZ); @@ -409,9 +363,9 @@ public boolean getCanSpawnHere() Block block = this.world.getBlockState(blockpos.down()).getBlock(); return block instanceof BlockLeaves || block == Blocks.GRASS || block instanceof BlockLog || block == Blocks.AIR && this.world.getLight(blockpos) > 8 && super.getCanSpawnHere(); } + @Override - protected void applyEntityAttributes() - { + protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getAttributeMap().registerAttribute(SharedMonsterAttributes.FLYING_SPEED); this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.33D); @@ -421,72 +375,59 @@ protected void applyEntityAttributes() this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(30.0D); this.getAttributeMap().registerAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(2.0D); } - public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) - { + + public void setAttackTarget(@Nullable EntityLivingBase entitylivingbaseIn) { super.setAttackTarget(entitylivingbaseIn); - if (entitylivingbaseIn == null) - { + if (entitylivingbaseIn == null) { this.setAngry(false); } - else if (!this.isTamed()) - { + else if (!this.isTamed()) { this.setAngry(true); } } - /* - * Config - End - */ public int getVerticalFaceSpeed() { return this.isSitting() ? 20 : super.getVerticalFaceSpeed(); } - public boolean attackEntityFrom(DamageSource source, float amount) - { - if (this.isEntityInvulnerable(source)) - { + + public boolean attackEntityFrom(DamageSource source, float amount) { + if (this.isEntityInvulnerable(source)) { return false; } - else - { + else { Entity entity = source.getTrueSource(); - if (this.aiSit != null) - { + if (this.aiSit != null) { this.aiSit.setSitting(false); } return super.attackEntityFrom(source, amount); } } - public boolean attackEntityAsMob(Entity entityIn) - { + public boolean attackEntityAsMob(Entity entityIn) { boolean flag = entityIn.attackEntityFrom(DamageSource.causeMobDamage(this), (float)((int)this.getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).getAttributeValue())); - if (flag) - { + if (flag) { this.applyEnchantments(this, entityIn); } return flag; } + public void setTamed(boolean tamed) { super.setTamed(tamed); } - public boolean processInteract(EntityPlayer player, EnumHand hand) - { + + public boolean processInteract(EntityPlayer player, EnumHand hand) { ItemStack itemstack = player.getHeldItem(hand); - if (this.isTamed()) - { - if (!itemstack.isEmpty()) - { - if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) - { - if (!player.capabilities.isCreativeMode) - { + if (this.isTamed()) { + if (!itemstack.isEmpty()) { + if (TAME_ITEMS.contains(itemstack.getItem()) && this.getHealth() < 30.0F) { + if (!player.capabilities.isCreativeMode) { itemstack.shrink(1); } @@ -495,25 +436,20 @@ public boolean processInteract(EntityPlayer player, EnumHand hand) } } - if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) - { + if (this.isOwner(player) && !this.world.isRemote && !this.isBreedingItem(itemstack)) { this.aiSit.setSitting(!this.isSitting()); this.isJumping = false; this.navigator.clearPath(); this.setAttackTarget((EntityLivingBase)null); } } - else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) - { - if (!player.capabilities.isCreativeMode) - { + else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) { + if (!player.capabilities.isCreativeMode) { itemstack.shrink(1); } - if (!this.world.isRemote) - { - if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) - { + if (!this.world.isRemote) { + if (this.rand.nextInt(3) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, player)) { this.setTamedBy(player); this.navigator.clearPath(); this.setAttackTarget((EntityLivingBase)null); @@ -522,8 +458,7 @@ else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) this.playTameEffect(true); this.world.setEntityState(this, (byte)7); } - else - { + else { this.playTameEffect(false); this.world.setEntityState(this, (byte)6); } @@ -534,68 +469,58 @@ else if (TAME_ITEMS.contains(itemstack.getItem()) && !this.isAngry()) return super.processInteract(player, hand); } + public boolean canBeLeashedTo(EntityPlayer player) { return !this.isAngry() && super.canBeLeashedTo(player); } + public int getMaxSpawnedInChunk() { return 8; } - public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) - { - if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast) && !(target instanceof EntityAscendedFlyingLemur)) - { - if (target instanceof EntityFlyingLemur) - { + public boolean shouldAttackEntity(EntityLivingBase target, EntityLivingBase owner) { + if (!(target instanceof EntityCreeper) && !(target instanceof EntityGhast) && !(target instanceof EntityAscendedFlyingLemur)) { + if (target instanceof EntityFlyingLemur) { EntityFlyingLemur entitylemur = (EntityFlyingLemur)target; - if (entitylemur.isTamed() && entitylemur.getOwner() == owner) - { + if (entitylemur.isTamed() && entitylemur.getOwner() == owner) { return false; } } - if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer)owner).canAttackPlayer((EntityPlayer)target)) - { + if (target instanceof EntityPlayer && owner instanceof EntityPlayer && !((EntityPlayer)owner).canAttackPlayer((EntityPlayer)target)) { return false; } - else - { + else { return !(target instanceof AbstractHorse) || !((AbstractHorse)target).isTame(); - } } - else - { + else { return false; } } - /* - * Emotions - Start - */ @Override - public void writeEntityToNBT(NBTTagCompound compound) - { + public void writeEntityToNBT(NBTTagCompound compound) { super.writeEntityToNBT(compound); compound.setBoolean("Angry", this.isAngry()); compound.setInteger("Variant", this.getVariant()); } + @Override - public void readEntityFromNBT(NBTTagCompound compound) - { + public void readEntityFromNBT(NBTTagCompound compound) { super.readEntityFromNBT(compound); this.setAngry(compound.getBoolean("Angry")); this.setVariant(compound.getInteger("Variant")); } - public boolean isAngry() - { + + public boolean isAngry() { return (((Byte)this.dataManager.get(TAMED)).byteValue() & 2) != 0; } - public void setAngry(boolean angry) - { + + public void setAngry(boolean angry) { byte b0 = ((Byte)this.dataManager.get(TAMED)).byteValue(); if (angry) @@ -607,113 +532,86 @@ public void setAngry(boolean angry) this.dataManager.set(TAMED, Byte.valueOf((byte)(b0 & -3))); } } - /* - * Emotions - End - */ public void setVariant(int variantIn) { this.dataManager.set(VARIANT, Integer.valueOf(variantIn)); } + public int getVariant() { return MathHelper.clamp(((Integer)this.dataManager.get(VARIANT)).intValue(), 0, 1); } - /* - * Mating - Start - */ - public boolean isBreedingItem(ItemStack stack) - { + public boolean isBreedingItem(ItemStack stack) { return stack.getItem() == Items.GOLDEN_APPLE; } + @Override - public EntityAgeable createChild(EntityAgeable ageable) - { + public EntityAgeable createChild(EntityAgeable ageable) { EntityFlyingLemur entitymonkey = new EntityFlyingLemur(this.world); UUID uuid = this.getOwnerId(); - if (uuid != null) - { + if (uuid != null){ entitymonkey.setOwnerId(uuid); entitymonkey.setTamed(true); } return entitymonkey; } - public boolean canMateWith(EntityAnimal otherAnimal) - { - if (otherAnimal == this) - { + + public boolean canMateWith(EntityAnimal otherAnimal) { + if (otherAnimal == this) { return false; } - else if (!this.isTamed()) - { + else if (!this.isTamed()) { return false; } - else if (!(otherAnimal instanceof EntityFlyingLemur)) - { + else if (!(otherAnimal instanceof EntityFlyingLemur)) { return false; } - else - { + else { EntityFlyingLemur lemur = (EntityFlyingLemur)otherAnimal; - if (!lemur.isTamed()) - { + if (!lemur.isTamed()) { return false; } - else if (lemur.isSitting()) - { + else if (lemur.isSitting()) { return false; } - else - { + else { return this.isInLove() && lemur.isInLove(); } } } - /* - * Mating - End - */ - /* - * Sounds - Start - */ protected SoundEvent getAmbientSound() { return SoundsHandler.ENTITY_FLYINGLEMUR_AMBIENT; } + protected SoundEvent getHurtSound(DamageSource damageSourceIn) { return SoundsHandler.ENTITY_FLYINGLEMUR_HURT; } + protected SoundEvent getDeathSound() { return SoundsHandler.ENTITY_FLYINGLEMUR_DEATH; } + protected float getSoundVolume() { return 1.75F; } - /* - * Sounds - End - */ - /* - * Particle Effects - Start - */ public void playRideEffect(boolean play) { EnumParticleTypes enumparticletypes = EnumParticleTypes.EXPLOSION_NORMAL; - for (int i = 0; i < 4; ++i) - { + for (int i = 0; i < 4; ++i) { double d0 = this.rand.nextGaussian() * 0.02D; double d1 = this.rand.nextGaussian() * 0.02D; double d2 = this.rand.nextGaussian() * 0.02D; this.world.spawnParticle(enumparticletypes, this.posX + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, this.posY + 0.5D + (double)(this.rand.nextFloat() * this.height), this.posZ + (double)(this.rand.nextFloat() * this.width * 2.0F) - (double)this.width, d0, d1, d2); } } - /* - * Particle Effects - End - */ } \ No newline at end of file diff --git a/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java b/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java index 286070a6fd..74047f4734 100644 --- a/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java +++ b/src/main/java/com/crowsofwar/avatar/common/event/ServerEventHandler.java @@ -116,22 +116,16 @@ private void syncGlidingCapability(EntityPlayer player) { //===========================================================Lemur Events============================================== @SubscribeEvent - void onOwnerTeleport(PlayerEvent.PlayerChangedDimensionEvent event) - { - + void onOwnerTeleport(PlayerEvent.PlayerChangedDimensionEvent event) { IPlayerShoulders playerShoulders = event.player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); - if(playerShoulders.getRiders().size() > 0) { - - for(Entity passeger : playerShoulders.getRiders()) - { + for(Entity passeger : playerShoulders.getRiders()) { if(passeger instanceof EntityFlyingLemur) { EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; playerShoulders.removeRiders(lemur); lemur.setRightShoulder(false); lemur.setLeftShoulder(false); lemur.setSitting(true); - } else if(passeger instanceof EntityAscendedFlyingLemur) { EntityAscendedFlyingLemur lemur = (EntityAscendedFlyingLemur) passeger; @@ -142,25 +136,15 @@ else if(passeger instanceof EntityAscendedFlyingLemur) { } } } - } @SubscribeEvent - void onLemurRideExit(PlayerInteractEvent.RightClickBlock event) - { - + void onLemurRideExit(PlayerInteractEvent.RightClickBlock event) { IPlayerShoulders playerShoulders = event.getEntityPlayer().getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); - - if(playerShoulders.getRiders().size() > 0 && event.getEntityPlayer().isSneaking()) - { + if(playerShoulders.getRiders().size() > 0 && event.getEntityPlayer().isSneaking()) { BlockPos pos = new BlockPos(event.getPos().getX(), event.getPos().getY()+1f,event.getPos().getZ()); - - if(event.getWorld().getBlockState(pos).getBlock() == Blocks.AIR) - { - for(Entity passeger : playerShoulders.getRiders()) - { - - + if(event.getWorld().getBlockState(pos).getBlock() == Blocks.AIR) { + for(Entity passeger : playerShoulders.getRiders()) { if(passeger instanceof EntityFlyingLemur) { EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; playerShoulders.removeRiders(lemur); @@ -177,27 +161,17 @@ else if(passeger instanceof EntityAscendedFlyingLemur) { lemur.setSitting(true); lemur.setPosition(event.getPos().getX() +0.5f, event.getPos().getY()+1.0F, event.getPos().getZ() +0.5f); } - - - } - } - } - - } @SubscribeEvent void onLogOutLemurExit(PlayerEvent.PlayerLoggedOutEvent event) { IPlayerShoulders playerShoulders = event.player.getCapability(CapabilityPlayerShoulders.TEST_HANDLER, null); - - if(playerShoulders.getRiders().size() > 0) - { - for(Entity passeger : playerShoulders.getRiders()) - { + if(playerShoulders.getRiders().size() > 0) { + for(Entity passeger : playerShoulders.getRiders()) { if(passeger instanceof EntityFlyingLemur) { EntityFlyingLemur lemur = (EntityFlyingLemur) passeger; lemur.height = 1f; @@ -213,7 +187,6 @@ else if(passeger instanceof EntityAscendedFlyingLemur) { lemur.setLeftShoulder(false); } } - } } }