Jump to content

Recommended Posts

Posted

 

For example:

In your preInit event (FMLPreInitializationEvent )

    GameRegistry.registerBlock(blockTileEntityData, "mbe20_tileentity_data_block");
    GameRegistry.registerTileEntity(TileEntityData.class, "mbe20_tileentity_data_te");

 

-TGG

Posted

(I actually stumbled upon the idea to mimic the vanilla spawner code and came up with this.)

 

The stacktrace:

"Something must be wrong with the AABB algorithm in the TE / Detection class."

Posted

If you really want that stacktrace...

(The "problem" was resolved (EDIT: thanks diesieben for the help!!!), but there is another one.)

There is another problem:

I intended to use some DIY funcs to print info for either debug or implementation.

But it seems the Detection / TE cant print them properly.

I mean, everytime it would just be like Radar at 0 0 0 detects 0 (this is OK) nearby.

I am not testing this at the origin point.

 

Detection:

http://pastebin.com/aysAtXB1

 

TE:

http://pastebin.com/RsJU4NBv

 

BTW, why there was 503 error just now?

Posted

int RadarRange; Range of radar (in blocks)

RadarRangeHoriz and RadarRangeHorizontal is same (did not clean up)

the same applies to RadarRangeVerti

 

public void updateRadar(int range) {...}

called every tick from mother TE class.

is it possible tha there is problem in line 39-41?

 

Line 50: DEBUG use only

 

public boolean getDanger() {...} and public int getEntityCount() {...}

called when nessesary from mother TE class to collect info

 

EDIT: The code may be messy, but I am trying to list out everything I was doing before simplifying the code into smaller functions. (and also try to construct a usable class.)

Posted

  • Don't implement
    ITileEntityProvider

    . Override

    hasTileEntity(int meta)

    .

Any particular reason why not?  They look equivalent to me in this case?

 

The javadoc from hasTileEntity() looks like it was written many versions ago and is no longer true.

    * Called throughout the code as a replacement for block instanceof BlockContainer

    * Moving this to the Block base class allows for mods that wish to extend vanilla

    * blocks, and also want to have a tile entity on that block, may.

 

The only reason now is to allow you to have TileEntity or not depending on the block metadata (block state)?

 

-TGG

Posted

The root for "does this block+meta have a TE" is forge's hasTileEntity(World, int). If you implement ITileEntityProvider (or extend BlockContainer, comes down to the same thing) the default implementation for hasTileEntity checks that.

I understand that; my question was regarding your statement "Don't implement ITileEntityProvider" - if you don't, then your Block will not have a TileEntity regardless of what you return for hasTileEntity, so you are still stuck with either implementing ITileEntityProvider or overriding Forge's Block#createTileEntity method to return a valid TE, are you not?

 

Is there a reason, then, NOT to implement ITileEntityProvider?

Posted

So:

This newb requests a summarised answer.

This newb wants a block that only checks if there are nearby entities.

If there is some, this newb wants the block to print its location and the count of entities.

This newb wants just that.

Posted

You already have the logic part of it handled in your radar class, it looks like, though you shouldn't use Minecraft.getMinecraft().thePlayer - that's CLIENT side only player and will crash your game when run on a server.

 

So how is your block supposed to work? What I mean is, if I place one of these blocks, the way you have it now it will be alerting EVERY player in the game when entities get close to that block. Shouldn't it only alert me or some other player who activates the block at least?

 

What I would suggest is overriding onBlockPlacedBy in your Block class and storing the player who placed the block in your tile entity class, then you have a server side instance (which you can also send chat messages to, btw) and your block will only notify that one player. If you want, you could make it store a list of players and activating the block (right click) would add or remove you (the player) from the list.

 

Anyway, if you registered your TileEntity / Block classes and your Block overrides both hasTileEntity and createTileEntity (both Forge methods), then you should be golden.

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



×
×
  • Create New...

Important Information

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