From c8400380f333dc4ca28258b90165bf21f407fe90 Mon Sep 17 00:00:00 2001 From: p455w0rd Date: Sat, 20 Jul 2019 16:46:03 -0400 Subject: [PATCH] updated to current pwlib[on maven] --- .gitignore | 44 +++--- build.gradle | 147 ++++-------------- gradle.properties | 6 + gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 1 + .../endermanevo/EndermanEvolution.java | 2 +- .../endermanevo/blocks/BlockSkullBase.java | 38 ++--- .../client/model/ModelSkullBase.java | 21 +-- .../layers/LayerEndermanEvolvedEyes.java | 33 +++- .../model/layers/LayerEntityCharge.java | 4 +- .../client/model/layers/LayerSkullEyes.java | 6 +- .../client/render/RenderEndermanBase.java | 6 +- .../client/render/RenderEvolvedEnderman.java | 8 +- .../entity/EntityEvolvedEnderman.java | 97 +++++++++--- .../p455w0rd/endermanevo/init/ModBlocks.java | 2 +- .../p455w0rd/endermanevo/init/ModConfig.java | 39 ++--- .../endermanevo/init/ModEntities.java | 4 +- .../p455w0rd/endermanevo/init/ModEvents.java | 99 +++++++----- .../p455w0rd/endermanevo/init/ModGlobals.java | 6 +- .../p455w0rd/endermanevo/init/ModItems.java | 14 +- .../endermanevo/init/ModWorldGeneration.java | 2 +- .../endermanevo/integration/PwLib.java | 17 ++ .../endermanevo/items/ItemSkullBase.java | 50 ++++++ .../endermanevo/proxy/CommonProxy.java | 1 - .../worldgen/EnderFlowerGenerator.java | 4 +- .../textures/entity_icon/enderman_evolved.png | Bin 18938 -> 3017 bytes src/main/resources/endermanevo_at.cfg | 9 +- 27 files changed, 372 insertions(+), 290 deletions(-) create mode 100644 gradle.properties create mode 100644 settings.gradle create mode 100644 src/main/java/p455w0rd/endermanevo/integration/PwLib.java diff --git a/.gitignore b/.gitignore index cdf720f..2f0d6cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,26 @@ -# eclipse -bin -libs -tmp -*.launch -.settings -.metadata -.classpath -.project +#Stolen form AE2 Repo. :D +# exclude all -# idea -out -*.ipr -*.iws -*.iml -.idea +/* -# gradle -build -.gradle +# Include important folders -# other -eclipse -run \ No newline at end of file +# Gradle stuff +!gradle/ +!gradlew +!gradlew.bat +!build.gradle +!gradle.properties +!settings.gradle + +# Other Files. +!LICENSE +!README.md + +# Include git important files +!.gitmodules +!.gitignore + +# Include Important Folders +!src/ +!libs/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8963c38..b978527 100644 --- a/build.gradle +++ b/build.gradle @@ -1,131 +1,36 @@ buildscript { - repositories { - jcenter() - maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" - } - } + repositories { + jcenter() + mavenLocal() + mavenCentral() + maven { + name = "forge" + url = "http://files.minecraftforge.net/maven" + } + } dependencies { - classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT" - } -} - -apply plugin: "net.minecraftforge.gradle.forge" - -version = "1.12.2-" + getVersion() -group = "p455w0rd" -archivesBaseName = "EndermanEvolution" -sourceCompatibility = targetCompatibility = "1.8" - -minecraft { - version = "1.12.2-14.23.5.2768" - runDir = "run" - mappings = "snapshot_20171003" - clientJvmArgs= ["-Dcofh.rf.crashOnOldAPI=false"] -} - -repositories { - mavenCentral() - maven { - name = "progwml6" - url = "http://dvs1.progwml6.com/files/maven" - } - maven { - name = "tterrag" - url = "http://maven.tterrag.com" - } - maven { - name = "tterrag2" - url = "http://maven2.tterrag.com" - } - maven { - name = "tehnut" - url = "http://tehnut.info/maven" - } - maven { - name = "ChickenBones" - url "http://chickenbones.net/maven" - } - maven { - name = "CoFH" - url = "http://maven.covers1624.net" + classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' } - maven { - name = "Curse" - url = "https://minecraft.curseforge.com/api/maven/" - } } -dependencies { - deobfCompile "mezz.jei:jei_1.12.2:+" - deobfCompile "mcp.mobius.waila:Hwyla:1.8.26-B41_1.12.2" - deobfCompile "mcjty.theoneprobe:TheOneProbe-1.12:1.12+" - deobfCompile "codechicken:CodeChickenLib:1.12.2-3.2.2.354:universal" - deobfCompile "codechicken:EnderStorage:1.12.2-2.4.5.135:universal" - deobfCompile "cpw.mods:ironchest:1.12.2-7.0.34.820" - deobfCompile "cofh:RedstoneFlux:1.12-2.1.0.6:universal" - deobfCompile "cofh:ThermalDynamics:1.12.2-2+:universal" - deobfCompile "cofh:ThermalFoundation:1.12.2-2+:universal" - deobfCompile "cofh:ThermalExpansion:1.12.2-5+:universal" - deobfCompile "cofh:CoFHCore:1.12.2-4+:universal" - deobfCompile "cofh:CoFHWorld:1.12.2-1+:universal" - deobfCompile "slimeknights:TConstruct:1.12.2-2.10.1.518" - deobfCompile "slimeknights.mantle:Mantle:1.12-1.3.2.38" - deobfCompile "immersive-engineering:ImmersiveEngineering:0.12:89" - deobfCompile "p455w0rd:p455w0rdslib:1.12.2-2.1.44" - deobfCompile "info.loenwind.autoconfig:AutoConfig:1.12.2-1.0.1" - deobfCompile "info.loenwind.autosave:AutoSave:1.12.2-1.0.8" - deobfCompile "com.enderio.core:EnderCore:1.12.2-0.5.44" - deobfCompile ("com.enderio:EnderIO:1.12.2-5.0.39") { - transitive = false - } - deobfCompile "thaumcraft:Thaumcraft:1.12.2:6.1.BETA26" - deobfCompile "baubles:Baubles:1.12:1.5.2" - deobfCompile "placebo:Placebo:1.12.2:1.6.0" - deobfCompile "foundry:Foundry:1.10.2:2.2.3.0" - deobfCompile "primalcore:PrimalCore:1.12.2:0.6.104" - deobfCompile "journeymap:journeymap:1.12.2:5.5.5b4" - +plugins { + id "com.wynprice.cursemaven" version "1.1.0" } -processResources { - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/base.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/ccl.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/enderstorage.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/thermal.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/thaumcraft.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/ironchest.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/tconstruct.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/immersiveengineering.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/enderio.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/baubles.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/placebo.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/foundry.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/primalcore.gradle' +apply from : 'https://github.com/p455w0rd/buildscripts/raw/master/journeymap.gradle' - from (sourceSets.main.resources.srcDirs) { - include "mcmod.info" - expand "version": project.version, "mcversion": project.minecraft.version - } - - from (sourceSets.main.resources.srcDirs) { - exclude "mcmod.info" - } - rename '(.+_at.cfg)', 'META-INF/$1' -} -jar { - manifest { - attributes 'FMLAT': 'endermanevo_at.cfg' - } -} -String getVersion() { - String major = "0"; - String revision = "0"; - String patch = "0"; - String prefix = "public static final String VERSION = \""; - File file = file("src/main/java/p455w0rd/endermanevo/init/ModGlobals.java") - file.eachLine { String s -> - s = s.trim(); - if (s.startsWith(prefix)) { - s = s.substring(prefix.length(), s.length() - 2); - String[] pts = s.split("\\."); - - major = pts[0]; - revision = pts[1]; - patch = pts[2]; - } - } - return "$major.$revision.$patch"; -} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..653433f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,6 @@ +modPropertiesJavaFile=src/main/java/p455w0rd/endermanevo/init/ModGlobals.java +gitSlug=p455w0rd/EndermanEvolution +archiveBase=EndermanEvolution +buildAPIJar=1 +artifactGroup=p455w0rd +jarGroup=p455w0rd.endermanevo \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0201377..7239c42 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..d30a0d7 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'EndermanEvolution' diff --git a/src/main/java/p455w0rd/endermanevo/EndermanEvolution.java b/src/main/java/p455w0rd/endermanevo/EndermanEvolution.java index f3e4d1c..28c89d4 100644 --- a/src/main/java/p455w0rd/endermanevo/EndermanEvolution.java +++ b/src/main/java/p455w0rd/endermanevo/EndermanEvolution.java @@ -8,7 +8,7 @@ import p455w0rd.endermanevo.init.ModGlobals; import p455w0rd.endermanevo.proxy.CommonProxy; -@Mod(modid = ModGlobals.MODID, name = ModGlobals.NAME, version = ModGlobals.VERSION, dependencies = ModGlobals.DEPENDANCIES, guiFactory = ModGlobals.GUI_FACTORY, acceptedMinecraftVersions = "1.12") +@Mod(modid = ModGlobals.MODID, name = ModGlobals.NAME, version = ModGlobals.VERSION, dependencies = ModGlobals.DEPENDANCIES, guiFactory = ModGlobals.GUI_FACTORY, acceptedMinecraftVersions = "[1.12.2]", certificateFingerprint = "@FINGERPRINT@") public class EndermanEvolution { @SidedProxy(clientSide = ModGlobals.CLIENT_PROXY, serverSide = ModGlobals.SERVER_PROXY) diff --git a/src/main/java/p455w0rd/endermanevo/blocks/BlockSkullBase.java b/src/main/java/p455w0rd/endermanevo/blocks/BlockSkullBase.java index c36f6dc..0dd092e 100644 --- a/src/main/java/p455w0rd/endermanevo/blocks/BlockSkullBase.java +++ b/src/main/java/p455w0rd/endermanevo/blocks/BlockSkullBase.java @@ -34,9 +34,9 @@ public class BlockSkullBase extends BlockSkull { protected static final AxisAlignedBB EAST_AABB = new AxisAlignedBB(0.0D, 0.25D, 0.25D, 0.5D, 0.75D, 0.75D); ItemBlock itemBlock = null; - private String NAME; + private final String NAME; - public BlockSkullBase(String name) { + public BlockSkullBase(final String name) { NAME = name; setUnlocalizedName(NAME); setRegistryName(NAME); @@ -55,7 +55,7 @@ public String getUnlocalizedName() { } @Override - public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) { + public AxisAlignedBB getBoundingBox(final IBlockState state, final IBlockAccess source, final BlockPos pos) { switch (state.getValue(FACING)) { case UP: default: @@ -72,22 +72,22 @@ public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, Bloc } @Override - public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) { + public void onBlockHarvested(final World worldIn, final BlockPos pos, final IBlockState state, final EntityPlayer player) { } @Override - public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { + public IBlockState getStateForPlacement(final World worldIn, final BlockPos pos, final EnumFacing facing, final float hitX, final float hitY, final float hitZ, final int meta, final EntityLivingBase placer) { return getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()).withProperty(NODROP, Boolean.valueOf(false)); } @Override - public TileEntity createNewTileEntity(World world, int meta) { + public TileEntity createNewTileEntity(final World world, final int meta) { return new TileBlockSkull(NAME); } @Override - public boolean canDispenserPlace(World world, BlockPos pos, ItemStack stack) { + public boolean canDispenserPlace(final World world, final BlockPos pos, final ItemStack stack) { return false; } @@ -98,22 +98,22 @@ public Enderman() { } @Override - public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { + public ItemStack getItem(final World worldIn, final BlockPos pos, final IBlockState state) { return new ItemStack(ModItems.SKULL_ENDERMAN); } @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { + public Item getItemDropped(final IBlockState state, final Random rand, final int fortune) { return null; } @Override - public List getDrops(IBlockAccess worldIn, BlockPos pos, IBlockState state, int fortune) { + public List getDrops(final IBlockAccess worldIn, final BlockPos pos, final IBlockState state, final int fortune) { return Lists.newArrayList(new ItemStack(ModItems.SKULL_ENDERMAN)); } @Override - public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { + public ItemStack getPickBlock(final IBlockState state, final RayTraceResult target, final World world, final BlockPos pos, final EntityPlayer player) { return new ItemStack(ModItems.SKULL_ENDERMAN); } @@ -126,22 +126,22 @@ public Frienderman() { } @Override - public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { + public ItemStack getItem(final World worldIn, final BlockPos pos, final IBlockState state) { return new ItemStack(ModItems.SKULL_FRIENDERMAN); } @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { + public Item getItemDropped(final IBlockState state, final Random rand, final int fortune) { return ModItems.SKULL_FRIENDERMAN; } @Override - public List getDrops(IBlockAccess worldIn, BlockPos pos, IBlockState state, int fortune) { + public List getDrops(final IBlockAccess worldIn, final BlockPos pos, final IBlockState state, final int fortune) { return Lists.newArrayList(new ItemStack(ModItems.SKULL_FRIENDERMAN)); } @Override - public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { + public ItemStack getPickBlock(final IBlockState state, final RayTraceResult target, final World world, final BlockPos pos, final EntityPlayer player) { return new ItemStack(ModItems.SKULL_FRIENDERMAN); } @@ -154,22 +154,22 @@ public EvolvedEnderman() { } @Override - public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { + public ItemStack getItem(final World worldIn, final BlockPos pos, final IBlockState state) { return new ItemStack(ModItems.SKULL_EVOLVED_ENDERMAN); } @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { + public Item getItemDropped(final IBlockState state, final Random rand, final int fortune) { return ModItems.SKULL_EVOLVED_ENDERMAN; } @Override - public List getDrops(IBlockAccess worldIn, BlockPos pos, IBlockState state, int fortune) { + public List getDrops(final IBlockAccess worldIn, final BlockPos pos, final IBlockState state, final int fortune) { return Lists.newArrayList(new ItemStack(ModItems.SKULL_EVOLVED_ENDERMAN)); } @Override - public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { + public ItemStack getPickBlock(final IBlockState state, final RayTraceResult target, final World world, final BlockPos pos, final EntityPlayer player) { return new ItemStack(ModItems.SKULL_EVOLVED_ENDERMAN); } diff --git a/src/main/java/p455w0rd/endermanevo/client/model/ModelSkullBase.java b/src/main/java/p455w0rd/endermanevo/client/model/ModelSkullBase.java index 8ae8f2a..df2fed2 100644 --- a/src/main/java/p455w0rd/endermanevo/client/model/ModelSkullBase.java +++ b/src/main/java/p455w0rd/endermanevo/client/model/ModelSkullBase.java @@ -76,7 +76,7 @@ public void render(final float rotationX) { public void render(final float rotationX, final float rotationY, final EntityLivingBase entity) { if (entity != null && entity.isSneaking()) { - GlStateManager.translate(0.0F, 0.25F, 0.0F); + GlStateManager.translate(0.0F, 0.175F, 0.0F); } else { GlStateManager.translate(0.0F, 0.02F, 0.0F); @@ -92,16 +92,20 @@ public void render(final float rotationX, final float rotationY, final EntityLiv } } if (entity != null && entity.isSneaking()) { - GlStateManager.translate(0.0F, -0.25F, 0.0F); + GlStateManager.translate(0.0F, -0.175F, 0.0F); } else { GlStateManager.translate(0.0F, -0.02F, 0.0F); } + if (entity != null && entity.isSneaking()) { + GlStateManager.translate(0, 0.2f, 0); + } if (this instanceof Enderman2) { + GlStateManager.pushMatrix(); final float oldTexX = OpenGlHelper.lastBrightnessX; final float oldTexY = OpenGlHelper.lastBrightnessY; - GlStateManager.depthMask(true); + GlStateManager.depthMask(false); bindTexture(new ResourceLocation(ModGlobals.MODID, "textures/entity/charge_nocolor.png")); GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); @@ -109,6 +113,7 @@ public void render(final float rotationX, final float rotationY, final EntityLiv GlStateManager.translate(f * 0.01F, f * 0.01F, 0.0F); GlStateManager.matrixMode(5888); GlStateManager.enableBlend(); + GlStateManager.enableAlpha(); final float r = 0; final float g = 0.75F; final float b = 0; @@ -117,21 +122,21 @@ public void render(final float rotationX, final float rotationY, final EntityLiv OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 260.0F, 260.0F); GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); GlStateManager.scale(1.1F, 1.1F, 1.1F); - head.render(0.0625F); - - GlStateManager.translate(-0.5F, -0.5F, -0.5F); + GlStateManager.translate(-(f * 0.01F), -(f * 0.01F), 0.0F); GlStateManager.matrixMode(5890); GlStateManager.loadIdentity(); GlStateManager.matrixMode(5888); GlStateManager.blendFunc(GlStateManager.SourceFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.DestFactor.DST_ALPHA); - GlStateManager.enableLighting(); GlStateManager.disableBlend(); GlStateManager.depthMask(true); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, oldTexX, oldTexY); GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0F); GlStateManager.popMatrix(); } + if (entity != null && entity.isSneaking()) { + GlStateManager.translate(0, -0.2f, 0); + } } public void bindTexture(final ResourceLocation texture) { @@ -170,7 +175,6 @@ public void renderLightMap(final float skullRotation) { } public void renderLightMap(final float skullRotation, final float skullPitch, final EntityLivingBase entity) { - GlStateManager.pushMatrix(); final float brightnessX = OpenGlHelper.lastBrightnessX; final float brightnessY = OpenGlHelper.lastBrightnessY; @@ -182,7 +186,6 @@ public void renderLightMap(final float skullRotation, final float skullPitch, fi else { render(skullRotation, skullPitch, null); } - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightnessX, brightnessY); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GlStateManager.popMatrix(); diff --git a/src/main/java/p455w0rd/endermanevo/client/model/layers/LayerEndermanEvolvedEyes.java b/src/main/java/p455w0rd/endermanevo/client/model/layers/LayerEndermanEvolvedEyes.java index 0563ef8..1d05184 100644 --- a/src/main/java/p455w0rd/endermanevo/client/model/layers/LayerEndermanEvolvedEyes.java +++ b/src/main/java/p455w0rd/endermanevo/client/model/layers/LayerEndermanEvolvedEyes.java @@ -18,8 +18,7 @@ */ package p455w0rd.endermanevo.client.model.layers; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.util.ResourceLocation; import p455w0rd.endermanevo.client.render.RenderEvolvedEnderman; @@ -34,19 +33,20 @@ public class LayerEndermanEvolvedEyes implements LayerRenderer { - private RenderLivingBase livingRenderer; + private final RenderLivingBase livingRenderer; - public LayerSkullEyes(RenderLivingBase renderer) { + public LayerSkullEyes(final RenderLivingBase renderer) { livingRenderer = renderer; } @Override - public void doRenderLayer(EntityLivingBase entitylivingbaseIn, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { + public void doRenderLayer(final EntityLivingBase entitylivingbaseIn, final float limbSwing, final float limbSwingAmount, final float partialTicks, final float ageInTicks, final float netHeadYaw, final float headPitch, final float scale) { if (!EntityUtils.isWearingCustomSkull(entitylivingbaseIn) || entitylivingbaseIn instanceof EntityAnimal) { return; } diff --git a/src/main/java/p455w0rd/endermanevo/client/render/RenderEndermanBase.java b/src/main/java/p455w0rd/endermanevo/client/render/RenderEndermanBase.java index bfae9d0..e960d1f 100644 --- a/src/main/java/p455w0rd/endermanevo/client/render/RenderEndermanBase.java +++ b/src/main/java/p455w0rd/endermanevo/client/render/RenderEndermanBase.java @@ -37,7 +37,7 @@ public abstract class RenderEndermanBase extends RenderL private final Random rnd = new Random(); private final EndermanType endermanType; - public RenderEndermanBase(EndermanType endermanType) { + public RenderEndermanBase(final EndermanType endermanType) { super(ModRendering.getRenderManager(), endermanType.getModel(), endermanType.getShadowSize()); this.endermanType = endermanType; endermanModel = super.mainModel; @@ -52,12 +52,12 @@ public Random getRandom() { } @Override - public void doRender(T entity, double x, double y, double z, float entityYaw, float partialTicks) { + public void doRender(final T entity, final double x, final double y, final double z, final float entityYaw, final float partialTicks) { super.doRender(entity, x, y, z, entityYaw, partialTicks); } @Override - protected ResourceLocation getEntityTexture(T entity) { + protected ResourceLocation getEntityTexture(final T entity) { return endermanType.getEntityTexture(); } diff --git a/src/main/java/p455w0rd/endermanevo/client/render/RenderEvolvedEnderman.java b/src/main/java/p455w0rd/endermanevo/client/render/RenderEvolvedEnderman.java index 4c63801..030373e 100644 --- a/src/main/java/p455w0rd/endermanevo/client/render/RenderEvolvedEnderman.java +++ b/src/main/java/p455w0rd/endermanevo/client/render/RenderEvolvedEnderman.java @@ -35,14 +35,14 @@ public RenderEvolvedEnderman() { super(EndermanType.EVOLED); addLayer(new LayerEndermanEvolvedEyes(this)); addLayer(new LayerHeldBlock2(this)); - addLayer(new LayerEntityCharge(this, endermanModel)); + addLayer(new LayerEntityCharge<>(this, endermanModel)); } @Override - public void doRender(EntityEvolvedEnderman entity, double x, double y, double z, float entityYaw, float partialTicks) { + public void doRender(final EntityEvolvedEnderman entity, double x, final double y, double z, final float entityYaw, final float partialTicks) { if (endermanModel instanceof ModelEvolvedEnderman) { - ModelEvolvedEnderman model = (ModelEvolvedEnderman) endermanModel; - IBlockState iblockstate = entity.getHeldBlockState(); + final ModelEvolvedEnderman model = (ModelEvolvedEnderman) endermanModel; + final IBlockState iblockstate = entity.getHeldBlockState(); model.isCarrying = iblockstate != null; model.isAttacking = entity.isScreaming(); if (entity.isScreaming()) { diff --git a/src/main/java/p455w0rd/endermanevo/entity/EntityEvolvedEnderman.java b/src/main/java/p455w0rd/endermanevo/entity/EntityEvolvedEnderman.java index e8ac730..e4b8e97 100644 --- a/src/main/java/p455w0rd/endermanevo/entity/EntityEvolvedEnderman.java +++ b/src/main/java/p455w0rd/endermanevo/entity/EntityEvolvedEnderman.java @@ -29,15 +29,18 @@ import net.minecraft.util.text.TextFormatting; import net.minecraft.world.*; import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import p455w0rd.endermanevo.init.ModConfig.ConfigOptions; +import p455w0rd.endermanevo.integration.PwLib; import p455w0rd.endermanevo.items.ItemSkullBase; import p455w0rd.endermanevo.util.EnumParticles; import p455w0rd.endermanevo.util.ParticleUtil; +import p455w0rdslib.api.client.shader.Light; +import p455w0rdslib.capabilities.CapabilityLightEmitter; import p455w0rdslib.util.EasyMappings; -import p455w0rdslib.util.MCPrivateUtils; public class EntityEvolvedEnderman extends EntityEnderman { @@ -125,7 +128,7 @@ public Team getTeam() { public IEntityLivingData onInitialSpawn(final DifficultyInstance difficulty, @Nullable final IEntityLivingData livingdata) { final int radius = 32; final List endermanList = world.getEntitiesWithinAABB(EntityEvolvedEnderman.class, new AxisAlignedBB(posX - radius, 0, posZ - radius, posX + radius, world.getHeight(), posZ + radius)); - if (endermanList.size() >= ConfigOptions.ENDERMAN_MAX_SPAWN) { + if (endermanList.size() >= ConfigOptions.endermanMaxSpawn) { return null; } if (!getCanSpawnHere()) { @@ -163,31 +166,49 @@ public float getBrightness() { protected void updateAITasks() { } + private boolean canBlockDamageSrc(final DamageSource damageSourceIn) { + if (!damageSourceIn.isUnblockable() && isActiveItemStackBlocking()) { + final Vec3d vec3d = damageSourceIn.getDamageLocation(); + + if (vec3d != null) { + final Vec3d vec3d1 = getLook(1.0F); + Vec3d vec3d2 = vec3d.subtractReverse(new Vec3d(posX, posY, posZ)).normalize(); + vec3d2 = new Vec3d(vec3d2.x, 0.0D, vec3d2.z); + + if (vec3d2.dotProduct(vec3d1) < 0.0D) { + return true; + } + } + } + + return false; + } + @Override public boolean attackEntityFrom(final DamageSource source, float amount) { if (isEntityInvulnerable(source) || world.isRemote || !ForgeHooks.onLivingAttack(this, source, amount)) { return false; } - if ((source instanceof EntityDamageSourceIndirect || source.isProjectile()) && !isInWater()) { - if (source.isProjectile() && !(source.getImmediateSource() instanceof EntitySnowball)) { - final Entity sourceEntity = source.getTrueSource(); - if (sourceEntity != null && attemptTeleport(sourceEntity.posX + (rand.nextInt(3) == 2 ? -1 : 1), sourceEntity.posY, sourceEntity.posZ + (rand.nextInt(3) == 2 ? -1 : 1))) { - if (sourceEntity instanceof EntityLivingBase) { - setRevengeTarget((EntityLivingBase) sourceEntity); + else { + if ((source instanceof EntityDamageSourceIndirect || source.isProjectile()) && !isInWater()) { + if (source.isProjectile() && !(source.getImmediateSource() instanceof EntitySnowball)) { + final Entity sourceEntity = source.getTrueSource(); + if (sourceEntity != null && attemptTeleport(sourceEntity.posX + (rand.nextInt(3) == 2 ? -1 : 1), sourceEntity.posY, sourceEntity.posZ + (rand.nextInt(3) == 2 ? -1 : 1))) { + if (sourceEntity instanceof EntityLivingBase) { + setRevengeTarget((EntityLivingBase) sourceEntity); + } + return true; } - return true; } - } - else { - for (int i = 0; i < 64; ++i) { - if (teleportRandomly()) { - return true; + else { + for (int i = 0; i < 64; ++i) { + if (teleportRandomly()) { + return true; + } } } + return false; } - return false; - } - else { idleTime = 0; if (getHealth() <= 0.0F) { @@ -201,7 +222,23 @@ else if (source.isFireDamage() && isPotionActive(MobEffects.FIRE_RESISTANCE)) { getItemStackFromSlot(EntityEquipmentSlot.HEAD).damageItem((int) (amount * 4.0F + rand.nextFloat() * amount * 2.0F), this); amount *= 0.75F; } - final boolean flag = false; + boolean flag = false; + + if (amount > 0.0F && canBlockDamageSrc(source)) { + damageShield(amount); + amount = 0.0F; + + if (!source.isProjectile()) { + final Entity entity = source.getImmediateSource(); + + if (entity instanceof EntityLivingBase) { + blockUsingShield((EntityLivingBase) entity); + } + } + + flag = true; + } + limbSwingAmount = 1.5F; boolean flag1 = true; if (hurtResistantTime > maxHurtResistantTime / 2.0F) { @@ -274,8 +311,8 @@ else if (flag1) { } if (!flag || amount > 0.0F) { - MCPrivateUtils.setLastDamageSource(this, source); - MCPrivateUtils.setLastDamageStamp(this, EasyMappings.world(this).getTotalWorldTime()); + lastDamageSource = source; + lastDamageStamp = EasyMappings.world(this).getTotalWorldTime(); } return !flag || amount > 0.0F; } @@ -347,12 +384,12 @@ private EnumParticles getParticle() { @Override public float getBlockPathWeight(final BlockPos pos) { - return ConfigOptions.ENDERMAN_DAY_SPAWN ? 0.0F : super.getBlockPathWeight(pos); + return ConfigOptions.endermanDaySpawn ? 0.0F : super.getBlockPathWeight(pos); } @Override protected boolean isValidLightLevel() { - return ConfigOptions.ENDERMAN_DAY_SPAWN ? true : super.isValidLightLevel(); + return ConfigOptions.endermanDaySpawn ? true : super.isValidLightLevel(); } @Override @@ -720,4 +757,20 @@ public void setAttackTarget(@Nullable final EntityLivingBase entitylivingbaseIn) setAggro(getAttackTarget() != null); } + @Override + public boolean hasCapability(final Capability c, final EnumFacing f) { + return PwLib.checkCap(c); + } + + @Override + public T getCapability(final Capability c, final EnumFacing f) { + return hasCapability(c, f) && PwLib.checkCap(c) ? CapabilityLightEmitter.LIGHT_EMITTER_CAPABILITY.cast(new CapabilityLightEmitter.EntityLightEmitter(this) { + @Override + public List emitLight(final List lights, final Entity entity) { + lights.add(Light.builder().pos(entity).color(0, 0.85f, 0, 0.75f).radius(2.5f).intensity(1).build()); + return lights; + } + }) : null; + } + } diff --git a/src/main/java/p455w0rd/endermanevo/init/ModBlocks.java b/src/main/java/p455w0rd/endermanevo/init/ModBlocks.java index 00e40e7..afb786e 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModBlocks.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModBlocks.java @@ -25,7 +25,7 @@ public class ModBlocks { }; public static void init() { - GameRegistry.registerTileEntity(TileBlockSkull.class, new ResourceLocation(ModGlobals.MODID, ":tile_pskull")); + GameRegistry.registerTileEntity(TileBlockSkull.class, new ResourceLocation(ModGlobals.MODID, "tile_pskull")); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/p455w0rd/endermanevo/init/ModConfig.java b/src/main/java/p455w0rd/endermanevo/init/ModConfig.java index 05d5416..c0a369a 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModConfig.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModConfig.java @@ -16,7 +16,7 @@ public class ModConfig { public static boolean reloadConfigs = false; @SubscribeEvent - public void onConfigChange(ConfigChangedEvent.OnConfigChangedEvent e) { + public void onConfigChange(final ConfigChangedEvent.OnConfigChangedEvent e) { if (e.getModID().equals(ModGlobals.MODID)) { init(); } @@ -28,15 +28,15 @@ public static void init() { MinecraftForge.EVENT_BUS.register(new ModConfig()); } - ConfigOptions.ENDERMAN_DAY_SPAWN = CONFIG.getBoolean("EndermanSpawnIgnoreLightLevel", DEF_CAT, true, "Allow Evolved Enderman to spawn at any light level"); - ConfigOptions.ENDERMAN_PROBABILITY = CONFIG.getInt("EndermanSpawnProbability", DEF_CAT, 3, 1, 10, "Probability Evolved Enderman will spawn when game deicdes to spawn a mob"); - ConfigOptions.FRIENDERMAN_PROBABILITY = CONFIG.getInt("FrindermanSpawnProbability", DEF_CAT, 3, 1, 10, "Probability Frienderman will spawn when game deicdes to spawn a mob"); - ConfigOptions.ENDERMAN_MAX_SPAWN = CONFIG.getInt("EndermanMaxSpawnPerGroup", DEF_CAT, 2, 1, 4, "When the game decides to spawn an Evolved Enderman, what is the max that should spawn in the group?"); - ConfigOptions.FRIENDERMAN_MAX_SPAWN = CONFIG.getInt("FriendermanMaxSpawnPerGroup", DEF_CAT, 2, 1, 4, "When the game decides to spawn a Frienderman, what is the max that should spawn in the group?"); - ConfigOptions.SHOW_SKULL_PARTICLES = CONFIG.getBoolean("DisplaySkullParticles", CLIENT_CAT, true, "Whether or not to spawn particles when wearing an enderman skull"); - ConfigOptions.ENABLE_ENDERFLOWER_WORLDGEN = CONFIG.getBoolean("EnableEnderDaisyWorldGen", DEF_CAT, true, "Whether or not Ender Daisies generate naturally"); - ConfigOptions.ENDERFLOWER_SPAWN_PROBABILITY = CONFIG.getFloat("EnderDaisySpawnProbability", DEF_CAT, 0.2F, 0.01F, 0.8F, "Chance between 0.0 and 1.0 that an Ender Daisy will spawn (0.2=20% chance)"); - ConfigOptions.ENDERFLOWER_DIM_WHITELIST = CONFIG.get(DEF_CAT, "EnderDaisyDimensionWhitelist", new int[] { + ConfigOptions.endermanDaySpawn = CONFIG.getBoolean("EndermanSpawnIgnoreLightLevel", DEF_CAT, true, "Allow Evolved Enderman to spawn at any light level"); + ConfigOptions.endermanSpawnProbability = CONFIG.getInt("EndermanSpawnProbability", DEF_CAT, 3, 1, 10, "Probability Evolved Enderman will spawn when game deicdes to spawn a mob"); + ConfigOptions.friendermanSpawnProbability = CONFIG.getInt("FrindermanSpawnProbability", DEF_CAT, 3, 1, 10, "Probability Frienderman will spawn when game deicdes to spawn a mob"); + ConfigOptions.endermanMaxSpawn = CONFIG.getInt("EndermanMaxSpawnPerGroup", DEF_CAT, 2, 1, 4, "When the game decides to spawn an Evolved Enderman, what is the max that should spawn in the group?"); + ConfigOptions.friendermanMaxSpawn = CONFIG.getInt("FriendermanMaxSpawnPerGroup", DEF_CAT, 2, 1, 4, "When the game decides to spawn a Frienderman, what is the max that should spawn in the group?"); + ConfigOptions.showSkullParticles = CONFIG.getBoolean("DisplaySkullParticles", CLIENT_CAT, true, "Whether or not to spawn particles when wearing an enderman skull"); + ConfigOptions.enableEnderFlowerWorldGen = CONFIG.getBoolean("EnableEnderDaisyWorldGen", DEF_CAT, true, "Whether or not Ender Daisies generate naturally"); + ConfigOptions.enderFlowerSpawnProbability = CONFIG.getFloat("EnderDaisySpawnProbability", DEF_CAT, 0.2F, 0.01F, 0.8F, "Chance between 0.0 and 1.0 that an Ender Daisy will spawn (0.2=20% chance)"); + ConfigOptions.enderFlowerDimWhitelist = CONFIG.get(DEF_CAT, "EnderDaisyDimensionWhitelist", new int[] { -1, 0, 1 }, "Integer dimension IDs where Ender Daisies are allowed to spawn. One integer per line.").getIntList(); @@ -48,17 +48,18 @@ public static void init() { public static class ConfigOptions { - public static int ENDERMAN_PROBABILITY = 3; - public static int FRIENDERMAN_PROBABILITY = 3; - public static int ENDERMAN_MAX_SPAWN = 2; - public static int FRIENDERMAN_MAX_SPAWN = 2; - public static boolean ENDERMAN_DAY_SPAWN = true; - public static boolean SHOW_SKULL_PARTICLES = true; - public static boolean ENABLE_ENDERFLOWER_WORLDGEN = true; - public static float ENDERFLOWER_SPAWN_PROBABILITY = 0.2F; - public static int[] ENDERFLOWER_DIM_WHITELIST = new int[] { + public static int endermanSpawnProbability = 3; + public static int friendermanSpawnProbability = 3; + public static int endermanMaxSpawn = 2; + public static int friendermanMaxSpawn = 2; + public static boolean endermanDaySpawn = true; + public static boolean showSkullParticles = true; + public static boolean enableEnderFlowerWorldGen = true; + public static float enderFlowerSpawnProbability = 0.2F; + public static int[] enderFlowerDimWhitelist = new int[] { -1, 0, 1 }; + public static boolean enableColoredLighting = true; } } diff --git a/src/main/java/p455w0rd/endermanevo/init/ModEntities.java b/src/main/java/p455w0rd/endermanevo/init/ModEntities.java index 1cd2db5..59f3380 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModEntities.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModEntities.java @@ -30,8 +30,8 @@ public static void init() { EntitySpawnPlacementRegistry.setPlacementType(EntityEvolvedEnderman.class, SpawnPlacementType.ON_GROUND); EntitySpawnPlacementRegistry.setPlacementType(EntityFrienderman.class, SpawnPlacementType.ON_GROUND); - EntityRegistry.addSpawn(EntityEvolvedEnderman.class, ConfigOptions.ENDERMAN_PROBABILITY, 1, ConfigOptions.ENDERMAN_MAX_SPAWN, EnumCreatureType.MONSTER, getBiomeList()); - EntityRegistry.addSpawn(EntityFrienderman.class, ConfigOptions.FRIENDERMAN_PROBABILITY, 1, ConfigOptions.FRIENDERMAN_MAX_SPAWN, EnumCreatureType.CREATURE, Biomes.SKY, Biomes.DESERT, Biomes.HELL); + EntityRegistry.addSpawn(EntityEvolvedEnderman.class, ConfigOptions.endermanSpawnProbability, 1, ConfigOptions.endermanMaxSpawn, EnumCreatureType.MONSTER, getBiomeList()); + EntityRegistry.addSpawn(EntityFrienderman.class, ConfigOptions.friendermanSpawnProbability, 1, ConfigOptions.friendermanMaxSpawn, EnumCreatureType.CREATURE, Biomes.SKY, Biomes.DESERT, Biomes.HELL); } private static Biome[] getBiomeList() { diff --git a/src/main/java/p455w0rd/endermanevo/init/ModEvents.java b/src/main/java/p455w0rd/endermanevo/init/ModEvents.java index 6e1e07e..f03d056 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModEvents.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModEvents.java @@ -16,22 +16,25 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.*; +import net.minecraft.network.datasync.DataParameter; +import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.world.World; import net.minecraft.world.storage.loot.*; import net.minecraft.world.storage.loot.conditions.LootCondition; import net.minecraft.world.storage.loot.functions.LootFunction; import net.minecraftforge.client.event.*; -import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.LootTableLoadEvent; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent; -import net.minecraftforge.fml.relauncher.*; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import p455w0rd.endermanevo.blocks.BlockEnderFlower; import p455w0rd.endermanevo.client.model.layers.LayerEntityCharge; import p455w0rd.endermanevo.client.model.layers.LayerSkullEyes; @@ -42,26 +45,22 @@ import p455w0rd.endermanevo.init.ModIntegration.Mods; import p455w0rd.endermanevo.integration.TiC; import p455w0rd.endermanevo.items.ItemSkullBase; -import p455w0rd.endermanevo.util.EntityUtils; -import p455w0rd.endermanevo.util.EnumParticles; -import p455w0rd.endermanevo.util.ParticleUtil; -import p455w0rdslib.util.*; +import p455w0rd.endermanevo.util.*; +import p455w0rdslib.util.EasyMappings; +import p455w0rdslib.util.MathUtils; +@EventBusSubscriber(modid = ModGlobals.MODID) public class ModEvents { - public static void init() { - MinecraftForge.EVENT_BUS.register(new ModEvents()); - } - @SubscribeEvent - public void registerItems(final RegistryEvent.Register event) { + public static void registerItems(final RegistryEvent.Register event) { for (final Item item : ModItems.getList()) { event.getRegistry().register(item); } } @SubscribeEvent - public void registerBlock(final RegistryEvent.Register event) { + public static void registerBlock(final RegistryEvent.Register event) { for (final Block block : ModBlocks.getList()) { event.getRegistry().register(block); } @@ -69,19 +68,19 @@ public void registerBlock(final RegistryEvent.Register event) { @SideOnly(Side.CLIENT) @SubscribeEvent - public void registerModels(final ModelRegistryEvent event) { + public static void registerModels(final ModelRegistryEvent event) { ModBlocks.preInitModels(); ModItems.registerTEISRs(event); } @SubscribeEvent @SideOnly(Side.CLIENT) - public void onModelBake(final ModelBakeEvent event) { + public static void onModelBake(final ModelBakeEvent event) { ModItems.initModels(event); } @SubscribeEvent - public void onItemUse(final RightClickBlock event) { + public static void onItemUse(final RightClickBlock event) { final ItemStack stack = event.getItemStack(); if (stack.getItem() == Items.DYE && EnumDyeColor.WHITE == EnumDyeColor.byDyeDamage(stack.getMetadata())) { BlockEnderFlower.tryBonemeal(stack, event.getWorld(), event.getPos(), event.getEntityPlayer(), event.getHand()); @@ -89,20 +88,20 @@ public void onItemUse(final RightClickBlock event) { } @SubscribeEvent - public void onSpawnPackSize(final LivingPackSizeEvent event) { + public static void onSpawnPackSize(final LivingPackSizeEvent event) { if (event.getEntityLiving() instanceof EntityEvolvedEnderman) { - event.setMaxPackSize(ConfigOptions.ENDERMAN_MAX_SPAWN); + event.setMaxPackSize(ConfigOptions.endermanMaxSpawn); } else if (event.getEntityLiving() instanceof EntityFrienderman) { - event.setMaxPackSize(ConfigOptions.FRIENDERMAN_MAX_SPAWN); + event.setMaxPackSize(ConfigOptions.friendermanMaxSpawn); } } @SideOnly(Side.CLIENT) @SubscribeEvent - public void renderLivingBase(final RenderLivingEvent.Pre event) { + public static void renderLivingBase(final RenderLivingEvent.Pre event) { final RenderLivingBase renderer = event.getRenderer(); - final List> layers = ReflectionHelper.getPrivateValue(RenderLivingBase.class, renderer, ReflectionUtils.determineSRG("layerRenderers")); + final List> layers = renderer.layerRenderers; boolean isEyesLayerAdded = false; boolean isChargeLayerAdded = false; for (final LayerRenderer layer : layers) { @@ -126,10 +125,15 @@ public void renderLivingBase(final RenderLivingEvent.Pre event bipedModel.bipedHeadwear.isHidden = true; } } - if (!isChargeLayerAdded && event.getEntity() instanceof EntityPlayer) { + if (event.getEntity() instanceof EntityPlayer) { final ItemSkullBase skull = EntityUtils.getSkullItem(event.getEntity()); - if (skull == ModItems.SKULL_EVOLVED_ENDERMAN) { - renderer.addLayer(new LayerEntityCharge<>(renderer, renderer.getMainModel())); + if (!isChargeLayerAdded) { + if (skull == ModItems.SKULL_EVOLVED_ENDERMAN) { + renderer.addLayer(new LayerEntityCharge<>(renderer, renderer.getMainModel())); + } + } + else if (skull != ModItems.SKULL_EVOLVED_ENDERMAN) { + removeEntityChargeLayer(event.getEntity(), layers); } } } @@ -142,6 +146,8 @@ public void renderLivingBase(final RenderLivingEvent.Pre event } } if (isChargeLayerAdded && event.getEntity() instanceof EntityPlayer) { + removeEntityChargeLayer(event.getEntity(), layers); + /* final Iterator> iterator = layers.iterator(); LayerEntityCharge layerToRemove = null; while (iterator.hasNext()) { @@ -154,51 +160,70 @@ public void renderLivingBase(final RenderLivingEvent.Pre event if (layerToRemove != null) { layers.remove(layerToRemove); } + */ } } } + private static void removeEntityChargeLayer(final EntityLivingBase entity, final List> layers) { + final Iterator> iterator = layers.iterator(); + LayerEntityCharge layerToRemove = null; + while (iterator.hasNext()) { + final LayerRenderer currentLayer = iterator.next(); + if (currentLayer instanceof LayerEntityCharge) { + layerToRemove = (LayerEntityCharge) currentLayer; + break; + } + } + if (layerToRemove != null) { + layers.remove(layerToRemove); + } + } + @SubscribeEvent @SideOnly(Side.CLIENT) - public void onRenderAfterWorld(final RenderWorldLastEvent event) { + public static void onRenderAfterWorld(final RenderWorldLastEvent event) { ParticleRenderer.getInstance().renderParticles(EasyMappings.player(), event.getPartialTicks()); } @SubscribeEvent - public void onLivingUpdate(final LivingEvent.LivingUpdateEvent event) { + public static void onLivingUpdate(final LivingEvent.LivingUpdateEvent event) { if (event.getEntityLiving() instanceof EntityEnderman) { final EntityEnderman enderman = (EntityEnderman) event.getEntityLiving(); if (enderman.getAttackTarget() == null) { - MCPrivateUtils.setEndermanScreaming(enderman, false); + final DataParameter screaming = EntityEnderman.SCREAMING; + final EntityDataManager dm = enderman.getDataManager(); + dm.set(screaming, Boolean.valueOf(false)); + dm.setDirty(screaming); } } } @SubscribeEvent - public void onEntitySpawn(final LivingSpawnEvent.CheckSpawn event) { + public static void onEntitySpawn(final LivingSpawnEvent.CheckSpawn event) { if (event.getWorld().isRemote || !(event.getEntityLiving() instanceof EntityEvolvedEnderman)) { return; } final World world = event.getWorld(); final int radius = 32; final List endermanList = world.getEntitiesWithinAABB(EntityEvolvedEnderman.class, new AxisAlignedBB(event.getX() - radius, 0, event.getZ() - radius, event.getX() + radius, world.getHeight(), event.getZ() + radius)); - if (endermanList.size() >= ConfigOptions.ENDERMAN_MAX_SPAWN) { + if (endermanList.size() >= ConfigOptions.endermanMaxSpawn) { event.setResult(Result.DENY); } } @SubscribeEvent - public void onSetEntitySpawnGroupSize(final LivingPackSizeEvent event) { + public static void onSetEntitySpawnGroupSize(final LivingPackSizeEvent event) { if (event.getEntityLiving() instanceof EntityEvolvedEnderman) { - event.setMaxPackSize(ConfigOptions.ENDERMAN_MAX_SPAWN); + event.setMaxPackSize(ConfigOptions.endermanMaxSpawn); } else if (event.getEntityLiving() instanceof EntityFrienderman) { - event.setMaxPackSize(ConfigOptions.FRIENDERMAN_MAX_SPAWN); + event.setMaxPackSize(ConfigOptions.friendermanMaxSpawn); } } @SubscribeEvent - public void onTargetSelect(final LivingSetAttackTargetEvent event) { + public static void onTargetSelect(final LivingSetAttackTargetEvent event) { if (event.getEntityLiving() instanceof EntityEnderman && event.getTarget() instanceof EntityPlayer) { final EntityPlayer player = (EntityPlayer) event.getTarget(); final ItemStack stack = player.inventory.armorInventory.get(3); @@ -216,7 +241,7 @@ public void onTargetSelect(final LivingSetAttackTargetEvent event) { } @SubscribeEvent - public void onMobDrop(final LivingDropsEvent event) { + public static void onMobDrop(final LivingDropsEvent event) { if (event.getSource().getTrueSource() instanceof EntityLivingBase) { //only respect death by living entity final World world = event.getEntity().getEntityWorld(); final double x = event.getEntity().posX; @@ -272,7 +297,7 @@ else if (event.getEntity() instanceof EntityEnderman || event.getEntity() instan } @SubscribeEvent - public void onLootTablesLoaded(final LootTableLoadEvent event) { + public static void onLootTablesLoaded(final LootTableLoadEvent event) { if (event.getName().equals(LootTableList.CHESTS_ABANDONED_MINESHAFT) || event.getName().equals(LootTableList.CHESTS_SIMPLE_DUNGEON) || event.getName().equals(LootTableList.CHESTS_DESERT_PYRAMID) || event.getName().equals(LootTableList.CHESTS_NETHER_BRIDGE) || event.getName().equals(LootTableList.CHESTS_STRONGHOLD_LIBRARY) || event.getName().equals(LootTableList.CHESTS_END_CITY_TREASURE)) { final LootPool mainPool = event.getTable().getPool("main"); if (mainPool != null) { @@ -287,7 +312,7 @@ public void onLootTablesLoaded(final LootTableLoadEvent event) { // rainbow colors @SubscribeEvent - public void tickEvent(final TickEvent event) { + public static void tickEvent(final TickEvent event) { ModGlobals.TIME_LONG++; if (ModGlobals.TIME % 0.5 == 0) { @@ -336,10 +361,10 @@ public void tickEvent(final TickEvent event) { @SubscribeEvent @SideOnly(Side.CLIENT) - public void onPlayerTick(final PlayerTickEvent event) { + public static void onPlayerTick(final PlayerTickEvent event) { final EntityPlayer player = event.player; if (player.world.isRemote) { - if (player == Minecraft.getMinecraft().player && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !ConfigOptions.SHOW_SKULL_PARTICLES) { + if (player == Minecraft.getMinecraft().player && Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 && !ConfigOptions.showSkullParticles) { return; } if (EntityUtils.isWearingCustomSkull(player)) { diff --git a/src/main/java/p455w0rd/endermanevo/init/ModGlobals.java b/src/main/java/p455w0rd/endermanevo/init/ModGlobals.java index 753aec4..02c3775 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModGlobals.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModGlobals.java @@ -2,15 +2,17 @@ import java.util.Random; +import p455w0rdslib.LibGlobals; + public class ModGlobals { public static final String MODID = "endermanevo"; - public static final String VERSION = "1.0.19"; + public static final String VERSION = "1.0.30"; public static final String NAME = "Enderman Evolution"; public static final String SERVER_PROXY = "p455w0rd.endermanevo.proxy.CommonProxy"; public static final String CLIENT_PROXY = "p455w0rd.endermanevo.proxy.ClientProxy"; public static final String GUI_FACTORY = "p455w0rd.endermanevo.init.ModGuiFactory"; public static final String CONFIG_FILE = "config/EndermanEvolution.cfg"; - public static final String DEPENDANCIES = "after:enderstorage;after:ironchest;after:jei;after:theoneprobe;after:waila;required-after:p455w0rdslib@[2.0.38,);"; + public static final String DEPENDANCIES = "after:enderstorage;after:ironchest;after:jei;after:theoneprobe;after:waila;" + LibGlobals.REQUIRE_DEP; public static final Random RNG = new Random(); diff --git a/src/main/java/p455w0rd/endermanevo/init/ModItems.java b/src/main/java/p455w0rd/endermanevo/init/ModItems.java index c78ef90..89d9397 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModItems.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModItems.java @@ -1,6 +1,5 @@ package p455w0rd.endermanevo.init; -import java.util.ArrayList; import java.util.List; import com.google.common.collect.Lists; @@ -19,8 +18,6 @@ public class ModItems { - private static final List ITEM_LIST = new ArrayList<>(); - public static final ItemFrienderPearl FRIENDER_PEARL = new ItemFrienderPearl(); public static final ItemSkullBase.Enderman SKULL_ENDERMAN = new ItemSkullBase.Enderman(); public static final ItemSkullBase.Frienderman SKULL_FRIENDERMAN = new ItemSkullBase.Frienderman(); @@ -31,16 +28,6 @@ public class ModItems { FRIENDER_PEARL, SKULL_ENDERMAN, SKULL_FRIENDERMAN, SKULL_EVOLVED_ENDERMAN, ENDER_FLOWER, ENDER_FRAGMENT }; - /* - @SideOnly(Side.CLIENT) - public static void preInitModels() { - for (Item item : ITEM_LIST) { - if (item instanceof IModelHolder) { - ((IModelHolder) item).initModel(); - } - } - } - */ @SideOnly(Side.CLIENT) public static final void initModels(final ModelBakeEvent event) { for (final Item item : ITEM_ARRAY) { @@ -71,4 +58,5 @@ public static final void registerTEISRs(final ModelRegistryEvent event) { public static List getList() { return Lists.newArrayList(ITEM_ARRAY); } + } diff --git a/src/main/java/p455w0rd/endermanevo/init/ModWorldGeneration.java b/src/main/java/p455w0rd/endermanevo/init/ModWorldGeneration.java index 2b0970c..a6fd890 100644 --- a/src/main/java/p455w0rd/endermanevo/init/ModWorldGeneration.java +++ b/src/main/java/p455w0rd/endermanevo/init/ModWorldGeneration.java @@ -13,7 +13,7 @@ public class ModWorldGeneration { private static final EnderFlowerGenerator ENDER_FLOWER = new EnderFlowerGenerator(); public static void init() { - if (ConfigOptions.ENABLE_ENDERFLOWER_WORLDGEN) { + if (ConfigOptions.enableEnderFlowerWorldGen) { GameRegistry.registerWorldGenerator(ENDER_FLOWER, 0); } } diff --git a/src/main/java/p455w0rd/endermanevo/integration/PwLib.java b/src/main/java/p455w0rd/endermanevo/integration/PwLib.java new file mode 100644 index 0000000..be80325 --- /dev/null +++ b/src/main/java/p455w0rd/endermanevo/integration/PwLib.java @@ -0,0 +1,17 @@ +package p455w0rd.endermanevo.integration; + +import net.minecraftforge.common.capabilities.Capability; +import p455w0rd.endermanevo.init.ModConfig.ConfigOptions; +import p455w0rdslib.capabilities.CapabilityLightEmitter; + +/** + * @author p455w0rd + * + */ +public class PwLib { + + public static boolean checkCap(final Capability capability) { + return CapabilityLightEmitter.checkCap(capability) && ConfigOptions.enableColoredLighting; + } + +} diff --git a/src/main/java/p455w0rd/endermanevo/items/ItemSkullBase.java b/src/main/java/p455w0rd/endermanevo/items/ItemSkullBase.java index 4854d79..b083b2d 100644 --- a/src/main/java/p455w0rd/endermanevo/items/ItemSkullBase.java +++ b/src/main/java/p455w0rd/endermanevo/items/ItemSkullBase.java @@ -1,5 +1,7 @@ package p455w0rd.endermanevo.items; +import java.util.List; + import net.minecraft.block.Block; import net.minecraft.block.BlockSkull; import net.minecraft.block.state.IBlockState; @@ -11,11 +13,14 @@ import net.minecraft.init.Blocks; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.*; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.fml.common.Optional; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -25,6 +30,10 @@ import p455w0rd.endermanevo.client.render.ItemLayerWrapper; import p455w0rd.endermanevo.init.ModBlocks; import p455w0rd.endermanevo.init.ModMaterials; +import p455w0rd.endermanevo.integration.PwLib; +import p455w0rdslib.api.client.shader.Light; +import p455w0rdslib.capabilities.CapabilityLightEmitter; +import p455w0rdslib.capabilities.CapabilityLightEmitter.StackLightEmitter; import p455w0rdslib.util.MathUtils; import thaumcraft.api.crafting.IInfusionStabiliserExt; @@ -160,11 +169,52 @@ public EvolvedEnderman() { super("enderman_evolved_skull", ModBlocks.ENDERMAN2_SKULL); } + @Override + public ICapabilityProvider initCapabilities(final ItemStack stack, final NBTTagCompound nbt) { + return new ICapabilityProvider() { + @Override + public boolean hasCapability(final Capability capability, final EnumFacing facing) { + return PwLib.checkCap(capability); + } + + @Override + public T getCapability(final Capability capability, final EnumFacing facing) { + if (hasCapability(capability, facing)) { + if (PwLib.checkCap(capability)) { + return CapabilityLightEmitter.LIGHT_EMITTER_CAPABILITY.cast(new StackLightEmitter(stack) { + @Override + public List emitLight(final List lights, final Entity entity) { + //lights.add(Light.builder().pos(entity).color(0, 0.85f, 0, 0.75f).radius(2.5f).intensity(1).build()); + lights.add(Light.builder().pos(entity).color(0, 0.85f, 0, 0.75f).radius(3.0f).intensity(1f).build()); + return lights; + } + }); + } + } + return null; + } + }; + } + @Override public boolean isEndermanSkull() { return true; } + /*@Override + public void emitLight(final List lights, final Entity e) { + if (e instanceof EntityPlayer) { + final EntityPlayer p = (EntityPlayer) e; + final ItemStack helmet = ItemUtils.getHelmet(p); + if (helmet.getItem() == this) { + lights.add(Light.builder().pos(p).color(0, 0.85f, 0, 0.75f).radius(1.5f).intensity(1).build()); + } + } + else if (e instanceof EntityItem) { + lights.add(Light.builder().pos(e).color(0, 0.85f, 0, 0.75f).radius(1.0f).intensity(1f).build()); + } + }*/ + } public static class Frienderman extends ItemSkullBase { diff --git a/src/main/java/p455w0rd/endermanevo/proxy/CommonProxy.java b/src/main/java/p455w0rd/endermanevo/proxy/CommonProxy.java index 9be97de..3bd532b 100644 --- a/src/main/java/p455w0rd/endermanevo/proxy/CommonProxy.java +++ b/src/main/java/p455w0rd/endermanevo/proxy/CommonProxy.java @@ -11,7 +11,6 @@ public void preInit(final FMLPreInitializationEvent e) { ModBlocks.init(); ModIntegration.preInit(); ModNetworking.init(); - ModEvents.init(); } public void init(final FMLInitializationEvent e) { diff --git a/src/main/java/p455w0rd/endermanevo/worldgen/EnderFlowerGenerator.java b/src/main/java/p455w0rd/endermanevo/worldgen/EnderFlowerGenerator.java index ccf2676..5efdc9b 100644 --- a/src/main/java/p455w0rd/endermanevo/worldgen/EnderFlowerGenerator.java +++ b/src/main/java/p455w0rd/endermanevo/worldgen/EnderFlowerGenerator.java @@ -52,7 +52,7 @@ public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkGen private boolean isValidDimension(World world) { if (validDimenions.isEmpty()) { - for (int dimension : ConfigOptions.ENDERFLOWER_DIM_WHITELIST) { + for (int dimension : ConfigOptions.enderFlowerDimWhitelist) { validDimenions.add(dimension); } } @@ -60,7 +60,7 @@ private boolean isValidDimension(World world) { } private void genFlower(World world, Random rand, int x, int z) { - if (rand.nextFloat() < ConfigOptions.ENDERFLOWER_SPAWN_PROBABILITY) { + if (rand.nextFloat() < ConfigOptions.enderFlowerSpawnProbability) { final int posX = x + world.rand.nextInt(16); final int posZ = z + world.rand.nextInt(16); final BlockPos newPos = getGroundPos(world, posX, posZ); diff --git a/src/main/resources/assets/endermanevo/textures/entity_icon/enderman_evolved.png b/src/main/resources/assets/endermanevo/textures/entity_icon/enderman_evolved.png index 366a4f423bf8a10103e274192086516e78abf8d1..86b16953b993780924b13eeeb0062276a5ce4313 100644 GIT binary patch delta 295 zcmV+?0oeZflL5&WkSq$s000ie0hKEb8?iQB3X_;cEPnv>Nkl*-9flzQRaNcI zZ#*d-1b+d>7}7M|y>wrXx|8|7&pgi;5OiI4YTR$?`~Dga6oLTg_g4Vsw~x((m%Rt} zbNl%d*h6?dCzA=Q!uK;&u+S tEDPf}{t$@Bwoyv{gDxWKk`%rM0Go$(XUy8N7z_Xa002ovPDHLkV1gFwhkgJ6 literal 18938 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 Cl=zSU diff --git a/src/main/resources/endermanevo_at.cfg b/src/main/resources/endermanevo_at.cfg index 27520f3..793e757 100644 --- a/src/main/resources/endermanevo_at.cfg +++ b/src/main/resources/endermanevo_at.cfg @@ -2,4 +2,11 @@ public net.minecraft.client.gui.GuiScreen func_146283_a(Ljava/util/List;II)V # drawHoveringText public net.minecraft.client.entity.EntityPlayerSP field_71156_d # sprintToggleTimer -public net.minecraft.entity.EntityLivingBase field_70773_bE # jumpTicks \ No newline at end of file +public net.minecraft.entity.EntityLivingBase field_70773_bE # jumpTicks +public net.minecraft.entity.EntityLivingBase field_189750_bF #lastDamageSource +public net.minecraft.entity.EntityLivingBase field_189751_bG #lastDamageStamp +public net.minecraft.entity.monster.EntityEnderman field_184719_bw #SCREAMING +public net.minecraft.client.model.ModelBox field_78254_i #quadList +public net.minecraft.client.renderer.entity.RenderLivingBase field_177097_h #layerRenderers +public net.minecraft.client.entity.AbstractClientPlayer func_175155_b()Lnet/minecraft/client/network/NetworkPlayerInfo; #getPlayerInfo +public net.minecraft.client.network.NetworkPlayerInfo field_187107_a #playerTextures \ No newline at end of file