Jump to content

Possible to make a block that adds the wither affect upon entity collision?


Recommended Posts

Posted

Just like the title says, is it possible to make a block that adds the wither status effect upon entity collision? I'm assuming that something would be added to the block constructor, but I'm not entirely sure what the correct terminology is. Can someone point me in the right direction? Thank you!

Posted

Define "access."  If you want to look at it, like Lex said, then open up the Forge-src jar in the project hierarchy and browse down to net -> minecraft -> blocks -> BlockSoulSand.java

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
  On 4/27/2016 at 2:55 PM, Draco18s said:

Define "access."  If you want to look at it, like Lex said, then open up the Forge-src jar in the project hierarchy and browse down to net -> minecraft -> blocks -> BlockSoulSand.java

So I looked at the code, and it doesn't seem like there's any explicit method call to make entity collision instantiate the wither effect.

Posted
  On 4/27/2016 at 3:02 PM, Aideux said:

  Quote

Define "access."  If you want to look at it, like Lex said, then open up the Forge-src jar in the project hierarchy and browse down to net -> minecraft -> blocks -> BlockSoulSand.java

So I looked at the code, and it doesn't seem like there's any explicit method call to make entity collision instantiate the wither effect.

 

Soul Sand doesn't apply the Wither effect, it slows down entities.

 

There are only two methods in

BlockSoulSand

excluding the constructor: one defines the bounding box (so entities can collide with it), the other slows down entities when they collide with the block.

 

When an entity collides with your block, check if it's an

EntityLivingBase

and then use

EntityLivingBase#addPotionEffect

to apply the Wither effect to it.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 4/27/2016 at 3:18 PM, Choonster said:

  Quote

  Quote

Define "access."  If you want to look at it, like Lex said, then open up the Forge-src jar in the project hierarchy and browse down to net -> minecraft -> blocks -> BlockSoulSand.java

So I looked at the code, and it doesn't seem like there's any explicit method call to make entity collision instantiate the wither effect.

 

Soul Sand doesn't apply the Wither effect, it slows down entities.

 

There are only two methods in

BlockSoulSand

excluding the constructor: one defines the bounding box (so entities can collide with it), the other slows down entities when they collide with the block.

 

When an entity collides with your block, check if it's an

EntityLivingBase

and then use

EntityLivingBase#addPotionEffect

to apply the Wither effect to it.

 

So here's what I've come up with, but it still doesn't work! Can you please help me out? I'm really confused.

package com.aideux.cursedblock;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class BlockCursed extends Block 
{
public final String name = "cursedBlock";

public BlockCursed()
{
	super(Material.rock);
	GameRegistry.registerBlock(this, name);
	setUnlocalizedName(CursedBlock.MODID + "_" + name);
	setCreativeTab(CreativeTabs.tabMisc);
}
public void onEntityWalking(World world, int par2, int par3, int par4, Entity entity)
{
	if(entity instanceof EntityLivingBase)
	{
		((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.confusion.getId(), 100, 1));
	}
}

}

Posted

There is no

Block#onEntityWalking

method in 1.8+, so your method doesn't override a super method and is never called. This is why you should always use the

@Override

annotation, you would have gotten a compilation error telling you this.

 

Use your IDE to auto-generate override methods.

 

Block#onEntityCollidedWithBlock(World, BlockPos, Entity)

is called when an entity that can trigger walking (i.e. returns

true

from

Entity#canTriggerWalking

) walks on top of the block.

 

Block#onEntityCollidedWithBlock(World, BlockPos, IBlockState, Entity)

is called when an entity collides with the block in any direction.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

Note that the block boundary must be smaller than 1x1x1 in the direction you wish for collisions to occur in.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
  On 4/28/2016 at 4:42 AM, Draco18s said:

Note that the block boundary must be smaller than 1x1x1 in the direction you wish for collisions to occur in.

Hey, I got it to work, thank you! For some reason, however, the wither effect is only added when the entity collides with the top of the block. This may have to do with the fact that I just copied and pasted the collision bounds from the soul sand class, so is there any way I can fix this? Thank you again, I really appreciate you helping me out!

Posted

An entity can only collide with a block on a given side if the block's bounding box is inset by a small amount on that side. Soul Sand is only inset on the top (i.e. the maximum y coordinate is less than 1), so entities will only collide on the top.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 4/28/2016 at 12:42 PM, Choonster said:

An entity can only collide with a block on a given side if the block's bounding box is inset by a small amount on that side. Soul Sand is only inset on the top (i.e. the maximum y coordinate is less than 1), so entities will only collide on the top.

 

So now the player can collide with the top and two sides to produce the wither effect, but the bottom and the remaining two sides do nothing... I'm sorry for being so persistent, but could you please point me in the right direction? Here's my code:

float f = 0.125F;
return new AxisAlignedBB((double)pos.getX(), (double)pos.getY(), (double)pos.getZ(), (double)((float)(pos.getX() + 1) - f), (double)((float)(pos.getY() + 1) - f), (double)((float)(pos.getZ() + 1) - f));

Posted

If you want entities to be able to collide on all sides, call

Block#setBlockBounds

in the constructor with

OFFSET

as the minimum coordinates and

1 - OFFSET

as the maximum coordinates (where

OFFSET

is some small value like 0.125). This removes the need to override

Block#getCollisionBoundingBox

.

 

In 1.9, create a static final

AxisAlignedBB

field with these coordinates instead and override

Block#getCollisionBoundingBox

to return it.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

0.125 is a fairly substantial amount: 2 pixels!

 

If you want something that looks like a full block you can have an offset amount of 0.0001 which IIRC is sufficient for collisions, but small enough that after being rendered you can't tell.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

I just tested this here, the smallest possible offset (to 4 decimal places) is 0.0011. With an offset of 0.0010, the player can only collide by walking into a corner of the block rather than anywhere on any face.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

I typed that and had the sneaking suspicion that I may have added too many zeros.  The last time I futzed around with it (needing a full-cube block that was collidable from all sides) was in 1.6.4

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
  On 4/28/2016 at 5:00 PM, Choonster said:

I just tested this here, the smallest possible offset (to 4 decimal places) is 0.0011. With an offset of 0.0010, the player can only collide by walking into a corner of the block rather than anywhere on any face.

So I gave your test code a shot and now I just fall through the block. I do get withered though haha, but I'm passing right through it like it doesn't exist.

Posted
  On 4/29/2016 at 2:33 AM, Aideux said:

  Quote

I just tested this here, the smallest possible offset (to 4 decimal places) is 0.0011. With an offset of 0.0010, the player can only collide by walking into a corner of the block rather than anywhere on any face.

So I gave your test code a shot and now I just fall through the block. I do get withered though haha, but I'm passing right through it like it doesn't exist.

 

Are you using 1.8.9 or 1.9? My code is for 1.9, for 1.8.9 you'd need to call

Block#setBlockBounds

with the coordinates instead of creating a static field and overriding

Block#getCollisionBoundingBox

.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
  On 4/29/2016 at 9:34 AM, Choonster said:

  Quote

  Quote

I just tested this here, the smallest possible offset (to 4 decimal places) is 0.0011. With an offset of 0.0010, the player can only collide by walking into a corner of the block rather than anywhere on any face.

So I gave your test code a shot and now I just fall through the block. I do get withered though haha, but I'm passing right through it like it doesn't exist.

[/quot

Are you using 1.8.9 or 1.9? My code is for 1.9, for 1.8.9 you'd need to call

Block#setBlockBounds

with the coordinates instead of creating a static field and overriding

Block#getCollisionBoundingBox

.

 

I'm using 1.8.9. What's the syntax look like for setBlockBonds as opposed to getCollisionBounding?

Posted
  On 4/29/2016 at 2:16 PM, Aideux said:

I'm using 1.8.9. What's the syntax look like for setBlockBonds as opposed to getCollisionBounding?

 

Call

setBlockBounds

in your constructor. Look at the method definition in the

Block

class for the arguments.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

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

    • Working $200 Off Temu Coupon Code [acu639380] First Order Exclusive Temu Coupon Code (acu639380) – Save Big on Your Shopping! Temu has become a go-to online marketplace for shoppers looking for high-quality products at unbeatable prices. With millions of trending items, fast delivery, and free shipping available in 67 countries, Temu ensures a seamless shopping experience for its users. Now, you can make your purchases even more rewarding by using the Temu coupon code (acu639380) to unlock huge discounts of up to $200 and exclusive deals. Why Use the Temu Coupon Code (acu639380)? By applying the Temu discount code (acu639380) at checkout, you can enjoy massive savings of up to $200 on a wide range of categories, including electronics, fashion, home essentials, beauty products, and more. This special offer is available to both new and existing users, ensuring that everyone gets a chance to save big on their favorite items What Discounts Can You Get with Temu Coupon Code (acu639380)? Here’s what you can unlock with the Temu promo code (acu639380): $200 Off for New Users – First-time shoppers can enjoy a flat $200 discount on their initial order. $200 Off for Existing Users – Loyal customers can also claim $200 off their purchases with the same code. Extra 40% Off – The Temu discount code (acu639380) provides an additional 40% off on select items, maximizing your savings. $200 Coupon Bundle – Both new and existing users can receive a $200 coupon bundle, perfect for future purchases. Free Gifts for New Users – If you’re shopping on Temu for the first time, you June receive free gifts with your order. Temu Coupons for Different Countries Temu caters to shoppers worldwide, offering incredible discounts based on your location. Here’s how the Temu coupon code (acu639380) benefits users across different regions: United States – Get $200 off your first order using the Temu coupon code (acu639380). Canada – Enjoy $200 off on your first-time purchase. United Kingdom – Use the Temu promo code (acu639380) to get $200 off your first order. Japan – Japanese shoppers can claim $200 off their initial purchase. Mexico – Get an extra 40% discount on select products with the Temu coupon (acu639380). Brazil – Shoppers in Brazil can also save 40% on select items. Germany – Receive a 40% discount on eligible products with the Temu promo code (acu639380). How to Use the Temu Coupon Code (acu639380)? Applying the Temu discount code (acu639380) is simple and hassle-free. Follow these easy steps to redeem your discount: Sign Up or Log In – Create a new account or log in to your existing Temu account. Shop for Your Favorite Items – Browse through Temu’s vast collection and add products to your cart. Enter the Coupon Code – At checkout, apply the Temu promo code (acu639380) in the designated field. Enjoy Your Discount – See the discount applied to your order and proceed with payment. Why Shop on Temu? Apart from huge discounts, Temu offers several benefits that make shopping more exciting and budget-friendly: Up to 90% Off on Select Products – Temu regularly offers massive discounts on top-selling items. Fast & Free Shipping – Get your products delivered quickly with free shipping to 67 countries. Wide Product Selection – Shop from a vast range of categories, including electronics, fashion, home essentials, and more. Safe & Secure Payments – Temu ensures a secure checkout process for a smooth shopping experience. Exclusive App Deals – Download the Temu app for extra discounts and app-only promotions. Final Thoughts With Temu’s exclusive coupon code (acu639380), you can unlock huge savings and enjoy a premium shopping experience at an affordable price. Whether you are a new user looking for a $200 discount or an existing customer wanting an extra 40% off, Temu has something for everyone. Don't forget to claim your $200 coupon bundle and free gifts before these amazing deals expire! Start shopping today on Temu and use the Temu coupon code (acu639380) to maximize your savings!  
    • Temu Coupon Code $100 Off [acu639380] First Time User Unlock Huge Savings: Temu Coupon Code (acu639380) for June 2025 Temu is transforming the way the world shops—and June 2025 delivers its boldest offers yet. With the exclusive Temu coupon code (acu639380), you're entering a world of rewards: from a $100 discount to premium coupon bundles, it's your passport to smart, stylish savings. The Temu Advantage in June 2025 Temu is known for redefining affordability and access. With unbeatable prices across trending categories—from fashion to electronics—it now delivers to 67 countries with speed and reliability. But this month, it’s not just about what you buy. It’s about how much you save. With Temu coupon code (acu639380) in hand, your savings soar. Instant Rewards with Temu Coupon Code (acu639380) If you haven't activated this exclusive code, here's what you're missing: $100 Off for first-time users $100 Off for returning customers 40% Off on sitewide items Free gifts for new sign-ups $100 Coupon Bundle available for all users What Makes Temu Coupon Code (acu639380) Unique? This code is designed to reward all shoppers—first-timers and loyal fans alike. Here’s how each discount delivers: Temu coupon code (acu639380) $100 off: Best for newcomers stocking up. Temu coupon code (acu639380) $100 off for existing users: Returning shoppers save big. Temu coupon code (acu639380) 40% off: Big savings on trending picks. Temu $100 coupon bundle: Split savings across several purchases. Temu first time user coupon: Ideal to kickstart your shopping spree. Global Value, Personalized Access Temu isn't just generous—it’s international. Whether you're in a Toronto high-rise or a Yorkshire farmhouse, the Temu promo code (acu639380) unlocks smart deals and chic finds. Coupon Code Highlights by Country Temu coupon code $100 off for USA – (acu639380) Temu coupon code $100 off for Canada – (acu639380) Temu coupon code $100 off for UK – (acu639380) Temu coupon code $100 off for Japan – (acu639380) Temu coupon code 40% off for Mexico – (acu639380) Temu coupon code 40% off for Brazil – (acu639380) Why Temu is the Marketplace of the Moment Unbeatable prices: Save up to 90% every day Worldwide reach: Ships to 67 countries New promotions: Fresh Temu new offers in June 2025 Fast, free delivery: No matter where you are FAQ: Maximize Your Temu Experience What’s the best Temu discount in June 2025? The top offer is Temu coupon code (acu639380) $100 off, for both new and existing users. Can I use these deals worldwide? Yes. The Temu discount code (acu639380) for June 2025 is valid in North America, South America, Europe, and Asia. Can I combine discounts? Absolutely. Pair your Temu $100 coupon bundle with seasonal deals for extra savings. Final Takeaway Smart shopping isn’t just about what you add to your cart—it’s about how you unlock value. With Temu coupon codes for new users, Temu coupon codes for existing users, and exciting June 2025 promotions, the best time to save is now. Don’t wait. Use Temu coupon code (acu639380) today to claim your rewards and transform the way you shop. New offers, global access, and exclusive savings await.  
    • Maybe it refers to an issue with the system - check for CPU/GPU driver updates
    • I haven't tried any other launchers, but I was getting the same results when I tried using forge with the vanilla launcher.
    • Make a test without sodiumextras
  • Topics

×
×
  • Create New...

Important Information

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