Jump to content

Recommended Posts

Posted

Alright, the method I have is public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack), but I want it to also check for a block that the player is on, so I'm using world.getBlockID(par2, par3, par4), but how do I correctly add the par2, par3, par4 into the method?

Posted
  On 4/20/2014 at 4:47 PM, coolboy4531 said:

You can get those coords by getting the players position - use casting if required.

player.posX, player.posY, player.posZ

 

I tried that, it didn't do anything :/

Posted

public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)

    {

super.onArmorTickUpdate(world, player, itemStack);

ItemStack boots = player.getCurrentArmor(0);

ItemStack legs = player.getCurrentArmor(1);

ItemStack chest = player.getCurrentArmor(2);

ItemStack helm = player.getCurrentArmor(3);

// legs = 1, chest = 2, helm = 3

 

 

if (boots != null && boots.getItem() == CanadianMod.skates && legs != null && legs.getItem() == CanadianMod.hockeyPants

&& chest != null && chest.getItem() == CanadianMod.hockeyChest &&  helm != null && helm.getItem() == CanadianMod.hockeyHelmet && world.getBlockId((int)player.posX, (int)player.posX, (int)player.posX) == Block.ice.blockID){

 

 

player.motionX *= 1.1D;

player.motionZ *= 1.1D;

 

}

 

}

Posted

Here you go, keep in mind I'm in 1.6.4 :)

 

public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)

    {

super.onArmorTickUpdate(world, player, itemStack);

ItemStack boots = player.getCurrentArmor(0);

ItemStack legs = player.getCurrentArmor(1);

ItemStack chest = player.getCurrentArmor(2);

ItemStack helm = player.getCurrentArmor(3);

// legs = 1, chest = 2, helm = 3

 

 

if (boots != null && boots.getItem() == CanadianMod.skates && legs != null && legs.getItem() == CanadianMod.hockeyPants

&& chest != null && chest.getItem() == CanadianMod.hockeyChest &&  helm != null && helm.getItem() == CanadianMod.hockeyHelmet && world.getBlockId((int)player.posX, (int)player.posY, (int)player.posZ) == Block.ice.blockID){

 

 

player.motionX *= 1.1D;

player.motionZ *= 1.1D;

 

}}

 

 

The player.motionX and Z will change to probably a speed potion effect when on ice, since currently that has some weird effects when on ice :P

Posted

Check the block below you by doing player.posY-1 :)

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

Do a System.out.println("Working")  after the check to test it because I think I remember trying motion.x +=1 or something like that, but it didn't work.

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted
  On 4/20/2014 at 9:13 PM, Mecblader said:

Do a System.out.println("Working")  after the check to test it because I think I remember trying motion.x +=1 or something like that, but it didn't work.

 

The problem isn't in the motion.x, that works fine without looking for a block. The problem itself is looking for a block :P

Posted

I think I figured it out, for some reason if you get the player y coord from the server it outputs a different coord than if it is client. Just add a check before looking for the block to see if the world is not remote because you want to do the checking on the server. (!Remote = Server, Remote = Client).

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

It's still not working:

 

public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)

    {

 

ItemStack boots = player.getCurrentArmor(0);

ItemStack legs = player.getCurrentArmor(1);

ItemStack chest = player.getCurrentArmor(2);

ItemStack helm = player.getCurrentArmor(3);

// legs = 1, chest = 2, helm = 3

 

if (!world.isRemote){

 

if (boots != null && boots.getItem() == CanadianMod.skates && legs != null && legs.getItem() == CanadianMod.hockeyPants

&& chest != null && chest.getItem() == CanadianMod.hockeyChest &&  helm != null && helm.getItem() == CanadianMod.hockeyHelmet && world.getBlockId((int)player.posX, (int)player.posY-1, (int)player.posZ) == Block.ice.blockID){

 

 

player.motionX *= 1.1D;

player.motionZ *= 1.1D;

 

}

}

    }

Posted

I'm not sure about your experience, but I've had Bette luck with .equals instead if == for forge.

 

Also on your coords, I'd use a floor before the int cast.  I've had issues with neg coords before.

Long time Bukkit & Forge Programmer

Happy to try and help

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hey guys, i'm currently developping a mod with forge 1.12.2 2860 and i'm using optifine and gradle 4.9. The thing is i'm trying to figure out how to show the player's body in first person. So far everything's going well since i've try to use a shader. The player's body started to blink dark when using a shader. I've try a lot of shader like chocapic, zeus etc etc but still the same issue. So my question is : How should i apply the current shader to the body ? At the same time i'm also drawing a HUD so maybe it could be the problem?   Here is the issue :    And here is the code where i'm trying to display the body :    private static void renderFirstPersonBody(EntityPlayerSP player, float partialTicks) { Minecraft mc = Minecraft.getMinecraft(); GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); try { // Préparation OpenGL GlStateManager.enableDepth(); GlStateManager.depthMask(true); GlStateManager.enableAlpha(); GlStateManager.alphaFunc(GL11.GL_GREATER, 0.1F); GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // Éclairage correct pour shaders GlStateManager.enableLighting(); RenderHelper.enableStandardItemLighting(); GlStateManager.enableRescaleNormal(); // Active la lightmap pour les shaders mc.entityRenderer.enableLightmap(); // Position de rendu interpolée double px = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; double py = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; double pz = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; GlStateManager.translate( px - mc.getRenderManager().viewerPosX, py - mc.getRenderManager().viewerPosY, pz - mc.getRenderManager().viewerPosZ ); // Rendu du joueur sans la tête Render<?> render = mc.getRenderManager().getEntityRenderObject(player); if (render instanceof RenderPlayer) { RenderPlayer renderPlayer = (RenderPlayer) render; boolean oldHeadHidden = renderPlayer.getMainModel().bipedHead.isHidden; boolean oldHeadwearHidden = renderPlayer.getMainModel().bipedHeadwear.isHidden; renderPlayer.getMainModel().bipedHead.isHidden = true; renderPlayer.getMainModel().bipedHeadwear.isHidden = true; setArmorHeadVisibility(renderPlayer, false); renderPlayer.doRender(player, 0, 0, 0, player.rotationYaw, partialTicks); renderPlayer.getMainModel().bipedHead.isHidden = oldHeadHidden; renderPlayer.getMainModel().bipedHeadwear.isHidden = oldHeadwearHidden; setArmorHeadVisibility(renderPlayer, !oldHeadwearHidden); } // Nettoyage post rendu mc.entityRenderer.disableLightmap(); GlStateManager.disableRescaleNormal(); } catch (Exception e) { // silent fail } finally { GlStateManager.popAttrib(); GlStateManager.popMatrix(); } }   Ty for your help. 
    • Item successfully registered, but there was a problem with the texture of the item, it did not insert and has just the wrong texture.     
    • Keep on using the original Launcher Run Vanilla 1.12.2 once and close the game Download Optifine and run optifine as installer (click on the optifine jar) Start the launcher and make sure the Optifine profile is selected - then test it again  
    • Hi everyone, I’m hoping to revisit an old version of Minecraft — specifically around Beta 1.7.3 — for nostalgia’s sake. I’ve heard you can do this through the official Minecraft Launcher, but I’m unsure how to do it safely without affecting my current installation or save files. Are there any compatibility issues I should watch out for when switching between versions? Would really appreciate any tips or advice from anyone who’s done this before! – Adam
    • hello! i was trying to recreate item-in-hand feature for my custom mob. i figured out that my mob needs a custom iteminhandlayer. i created it - but the main problem is.. well.. you can see all on screenshots any idea how i can fix that? is there any implemented method to render the item perfect to hand? public void render(@NotNull PoseStack pPoseStack, @NotNull MultiBufferSource pBufferSource, int pPackedLight, @NotNull TuneGolemRenderState pRenderState, float pYRot, float pXRot) { ItemStackRenderState item = pRenderState.heldItem; if (!item.isEmpty()) { pPoseStack.pushPose(); ModelPart leftArm = this.getParentModel().leftArm; pPoseStack.translate(0.35,0.5,-1.25); pPoseStack.mulPose(Axis.XP.rotationDegrees(180.0F)); pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); leftArm.translateAndRotate(pPoseStack); // pPoseStack.translate(0,0,0); leftArm.translateAndRotate(pPoseStack); if (TuneGolemRenderState.hornPlaying) { pPoseStack.translate(0, -0.5, 0.65); pPoseStack.scale(1.25F,1.25F,1.25F); } // Minecraft.getInstance().player.displayClientMessage(Component.literal(leftArm.xRot + " " + leftArm.yRot + " " + leftArm.zRot), true); item.render(pPoseStack, pBufferSource, pPackedLight, OverlayTexture.NO_OVERLAY); pPoseStack.popPose(); // -1.0F, -2.0F, -3.0F } }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.