Posted December 26, 20222 yr good days i try to make the question shortest possible i redooo mi bow|crossbow|arrow to 1.19 version this costume arrow has 2 particularities, * when hit something it rolls a d20 int d20 = (1 + ((int) (Math.random() * 20))); and if its more than 17 doubles the damage * using math detects if the hits its a head-shoot and if it is it also doubles damage so i made code way if head-shoot at same times than critical does one shoot kill for anything under 26hp like witches way it has not effect on guardians brutes or custom bosses ##### now obviously i wanna has some kind mark to indicator wheres is a critical headshoot soo i made a custome SKULL_PARTICLE Is nice and all it glows soo is visible in the dark and fade away # but has a problem it just spawns wherever it feels like like 70% of the time don't works so i try to spawn it multiple times for( int i = 0 ; i < 5 ; i++ ) { this.level.addAlwaysVisibleParticle(ParticleInit.SKULL_PARTICLE.get(), eye.x, eye.y, eye.z, 0.0D, 0.0D, 0.0D); } but it has a ugly washed away looks and thats when it feels like spawning first 3 times it works last 2 dont's works #################### i get boored and change of tactic i take the arrow render class twerkit change texture and create an icon-entity only for the sole purpose of showing and skull when critical head-shoot this one works 100% of times also the true was easy to make the icon-entity than the skull-particle the problem whit this one is i dont know how to make it glow or fade away this one just dissapears ############################################################################################################ ############################################################################################################ ############################################################################################################ if do you reach to this point thanks for you time this posted question has two possible solutions one is to find a way to force the particle to spawn one time something like //try 10 times to spawn the particle for( int i = 0 ; i < 10 ; i++ ) { if( this.level.addAlwaysVisibleParticle(ParticleInit.SKULL_PARTICLE.get(), eye.x, eye.y, eye.z, 0.0D, 0.0D, 0.0D) ){ //if particle spawn stop trying break; } } Can you guide me whit this the other way be made the icon-entity Glow in the dark and fade away Spoiler package mercbow.entity; import mercbow.item.ingot.red_hot_iron; import mercbow.util.Postate; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.protocol.Packet; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; public class icon_entity extends Entity { private int tick; private Entity target_entity = null; public icon_entity(EntityType<?> w_entity, Level warudo) { super(w_entity, warudo); } public icon_entity(EntityType<?> w_entity, Level warudo, Entity target_entity) { super(w_entity, warudo); this.target_entity = target_entity; } public icon_entity(EntityType<?> w_entity, Level warudo, Vec3 vi) { super(w_entity, warudo); this.setPos(vi); } public void set_target_entity(Entity target_entity) { this.target_entity = target_entity; } // #################### #################### #################### private boolean mustdie() { //life limit if( this.tick > 40 ) { System.out.println( "icon_entity.mustdie( time limit ("+this.level.isClientSide+ "," + this.position() + ") )" ); this.kill(); return true; } if (this.target_entity == null || !this.target_entity.isAlive()) { // System.out.println("\nWatcher Entity has dye\n"); //this.kill(); } return false; } @Override public void tick() { mustdie(); // every 5 ticks check if target_entity is alive and update the pos of watcher // entity //if ((tick % 1 == 0)) { // reset position to match target entity if (this.target_entity == null || !this.target_entity.isAlive()) { // System.out.println("\nWatcher Entity has dye\n"); //this.kill(); } else { Vec3 eye = this.target_entity.getEyePosition(); this.setPos(eye); //this.setPos(eye.x, eye.y, eye.z); this.setXRot( this.target_entity.getXRot() ); this.setYRot( 90.0F ); } } if (tick % 20 == 0) { Level warudo = this.level; BlockPos pos = new BlockPos(this.getX(), this.getY(), this.getZ()); //BlockState blkstate = warudo.getBlockState(pos); } this.tick++; } @Override protected void defineSynchedData() { // TODO Auto-generated method stub } @Override protected void readAdditionalSaveData(CompoundTag p_70037_1_) { // TODO Auto-generated method stub } @Override protected void addAdditionalSaveData(CompoundTag p_213281_1_) { // TODO Auto-generated method stub } // comunications // in ExplosiveArrowEntity.java @Override public Packet<?> getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); } } package mercbow.entity; import mercbow.mercbow; import net.minecraft.client.renderer.entity.ArrowRenderer; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; public class icon_entity_renderer extends icon_entity_model<icon_entity> { //public static final ResourceLocation TEXTURE = new ResourceLocation(mercbow.MOD_ID, "textures/entity/mercenary_arrow.png"); public static final ResourceLocation TEXTURE = new ResourceLocation(mercbow.MOD_ID, "textures/entity/skull_particle.png"); public static final ResourceLocation TRANSPARENT = new ResourceLocation(mercbow.MOD_ID, "textures/entity/transparent.png"); public icon_entity_renderer(EntityRendererProvider.Context context) { super(context); } @Override public ResourceLocation getTextureLocation(icon_entity arrow) { int tick = arrow.tickCount; if (tick < 2 ){ return TRANSPARENT; } return TEXTURE; } } package mercbow.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Matrix3f; import com.mojang.math.Matrix4f; import com.mojang.math.Vector3f; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public abstract class icon_entity_model<T extends icon_entity> extends EntityRenderer<T> { public icon_entity_model(EntityRendererProvider.Context contex) { super(contex); } public void render(T entity, float p_225623_2_, float p_225623_3_, PoseStack matrixstack, MultiBufferSource irendertypebuffer, int p_225623_6_) { //public void render(T entity, float p_225623_2_, float p_225623_3_, MatrixStack matrixstack, IRenderTypeBuffer irendertypebuffer, int p_225623_6_) { int tick = entity.tickCount; matrixstack.pushPose(); matrixstack.mulPose(Vector3f.YP.rotationDegrees(Mth.lerp(p_225623_3_, entity.yRotO, entity.getYRot()) - 90.0F)); matrixstack.mulPose(Vector3f.ZP.rotationDegrees(Mth.lerp(p_225623_3_, entity.xRotO, entity.getXRot()))); int i = 0; float f = 0.0F; float f1 = 0.5F; float f2 = 0.0F; float f3 = 0.15625F; float f4 = 0.0F; float f5 = 0.15625F; float f6 = 0.15625F; float f7 = 0.3125F; float f8 = 0.05625F; float f9 = 0.0F;// (float)entity.shakeTime - p_225623_3_; if (f9 > 0.0F) { float f10 = -Mth.sin(f9 * 3.0F) * f9; matrixstack.mulPose(Vector3f.ZP.rotationDegrees(f10)); } matrixstack.mulPose(Vector3f.XP.rotationDegrees(0.0F));// rotation del modelo float scale = 0.03F; //1 is like one chunck matrixstack.scale(scale, scale, scale); matrixstack.translate(0.0D, 0.0D, 0.0D); VertexConsumer ivertexbuilder = irendertypebuffer.getBuffer(RenderType.entityCutout(this.getTextureLocation(entity))); PoseStack.Pose matrixstack$entry = matrixstack.last(); Matrix4f matrix4f = matrixstack$entry.pose(); Matrix3f matrix3f = matrixstack$entry.normal(); // el que se desde atraz x this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, -10, 0.00F, 1.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, 10, 1.00F, 1.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, 10, 1.00F, 0.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, -10, 0.00F, 0.00F, -1, 0, 0, p_225623_6_); // el que se ve desde adelante x this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, -10, 0.00F, 0.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, 10, 1.00F, 0.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, 10, 1.00F, 1.00F, -1, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, -10, 0.00F, 1.00F, -1, 0, 0, p_225623_6_); // el que se ve desde arriba y this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, 10, 1.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, -10, 0.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, -10, 0.00F, 0.20F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, 10, 1.00F, 0.20F, 0, 0, 0, p_225623_6_); // el que se ve desde abajo y this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, -10, 0.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, 10, 1.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, 10, 1.00F, 0.20F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, -10, 0.00F, 0.20F, 0, 0, 0, p_225623_6_); // el que se ve desde izquierda east z this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, -10, 0.20F, 1.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, -10, 0.20F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, -10, 0.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, -10, 0.00F, 1.00F, 0, 0, 0, p_225623_6_); // el que se ve desde derecha west z this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, -10, 10, 0.20F, 1.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 10, 10, 10, 0.20F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, 10, 10, 0.00F, 0.00F, 0, 0, 0, p_225623_6_); this.vertex(matrix4f, matrix3f, ivertexbuilder, 9, -10, 10, 0.00F, 1.00F, 0, 0, 0, p_225623_6_); //ModelHelper.setLightmapTextureCoords(ModelHelper.lightmapTexUnit, (float)j, (float)k); matrixstack.popPose(); super.render(entity, p_225623_2_, p_225623_3_, matrixstack, irendertypebuffer, p_225623_6_); } public void vertex(Matrix4f p_113826_, Matrix3f p_113827_, VertexConsumer p_113828_, int p_113829_, int p_113830_, int p_113831_, float p_113832_, float p_113833_, int p_113834_, int p_113835_, int p_113836_, int p_113837_) { p_113828_.vertex(p_113826_, (float)p_113829_, (float)p_113830_, (float)p_113831_).color(255, 255, 255, 255).uv(p_113832_, p_113833_).overlayCoords(OverlayTexture.NO_OVERLAY).uv2(p_113837_).normal(p_113827_, (float)p_113834_, (float)p_113836_, (float)p_113835_).endVertex(); } } the glow effect must be applied to the icon_entity_model class i don't have idea how to do it and i alredy ask this before without avail over the two i would prefer to fix the icon-entity and make it glow, this one would work even if the user disables the particles thanks for your time
December 27, 20222 yr Author yesterday night i made some other post and they give me the render class for the fireball so i get know how to make the icon entity glow in the dark just add this two methods to the icon_entity_renderer class @Override protected int getBlockLightLevel(T icon_entity, BlockPos pos) { return this.fullBright ? 15 : super.getBlockLightLevel(icon_entity, pos); } @Override protected int getSkyLightLevel(T icon_entity, BlockPos pos) { return icon_entity.level.getBrightness(LightLayer.SKY, pos); //return 15; } its just not what i spected i just make the skull texture glow and are visible in dark and all but it don't emit any light soo i bring in a blaze and its the same thing is visible but don't shines anyway being visible in the dark is enough for this case
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.