Jump to content

Recommended Posts

Posted

Greetings people from... somewhere.

 

I am currently facing an issue that I have given up on how to address it and I am unable to find the information I really want, so I ended up here.

 

For simplicity and to better allow understanding on the issue, I will break it up on parts; however, it is all regarding the edition of blocks that are already on the game, like dirt.

 

  1. Make blocks fall

 

I remember trying this long ago. Back then I could simply change the line for the block and make it say extend BlockFalling instead of Block. However, in this new version I am not allowed to touch the vanilla code. The question would be, how can I do such thing?

I could create a custom event to make them fall on update I suppose, but for something of this scale (every measly block) I don't think this would be the best approach, so I haven't really tried this approach. If it is, then I guess this is problem solved...

 

  2. Changing the drops

 

I have added custom blocks and I am able to make them drop what I want, yet again, I can't figure out how to edit those that are already on the game. I have yet to exhaust all my options here yet, but I am asking in case none of them works. Also because a different approach could help me see things in a different way.

 

  3. Adding a custom function and extra variable

 

This one is a bit unusual, yes. It is tied with the first point in regards that I want to use a function to make the block fall under certain circumstances using a new variable.

Here is the big issue. Using metadata would not work apparently. I have been looking around and it seems this only have 16 bits of information, making it only able to store an integer of up to 16. I want to store an integer that could go to up 30, not to mention that existing block are probably making use of some of this already very limited space. Also, I have read somewhere (can't remember where) that using an NBT tag is not recommendable at all for common blocks since it could make a world's save file to just shoot to astronomical sizes.

 

  Request

 

Although information directly about any of the three point above would be appreciated and very helpful, general information on how to edit, twinkle, mess with, touch,  ;), or modify with existing blocks would work as well. I think I could work my way around with it.

 

 

 

In case it is of any help on how to help me or point me in a direction, I do have some programming experience; although not much in Java, I can hold my own. However, dealing with code that not only I have not written, but I can't edit is giving me problems. I learn a lot more by trial and error, so breaking things up is my way to go... my specialty? ... my dream?... I really would need to think in a way to properly put that. HAIL ENGLISH!

I have also done this on an earlier version (1.6) and it did work, all of these issues were not issues (I had to deal with storing the extra info though), but since I can't touch the vanilla code anymore, I am at a loss and I can't find a good source of information, tutorial or guide for this.

QUACK!

Posted

1) http://www.minecraftforge.net/forum/index.php/topic,29341.0.html

 

2) Subscript to the LivingDropsEvent or the BlockHarvestEvent

 

3) Yeah, no.  You're not going to manage that in anything less than a mess.

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

My guess is that he wants that data to track his collapse physics, that is, how far away a given block is from downward support.  Which is functionally equivalent to turning the whole world into redstone.

 

It's not the space-efficiency that's the issue, its the management.

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/9/2015 at 12:27 PM, Draco18s said:

1) http://www.minecraftforge.net/forum/index.php/topic,29341.0.html

 

2) Subscript to the LivingDropsEvent or the BlockHarvestEvent

 

3) Yeah, no.  You're not going to manage that in anything less than a mess.

 

 

Thanks a lot for the info. I will see those 2 events you mentioned. I saw that post earlier. I will have to read it in more detail. It was awfully similar to what I want to accomplish.

 

 

  Quote

  Quote

3) Yeah, no.  You're not going to manage that in anything less than a mess.

Not all that true, really. You can do pretty space-efficient things using a ChunkDataEvent.

 

 

So, saving extra data in blocks can be done with that event? I will have to check that one as well. Thanks for the info.

 

 

  Quote

My guess is that he wants that data to track his collapse physics, that is, how far away a given block is from downward support.  Which is functionally equivalent to turning the whole world into redstone.

 

It's not the space-efficiency that's the issue, its the management.

 

 

Half true. The extra variable I want to add is to actually avoid keeping track of the supports.

QUACK!

Posted
  On 4/9/2015 at 3:39 PM, Quack Man said:
So, saving extra data in blocks can be done with that event? I will have to check that one as well. Thanks for the info.

 

A few things I've learned having to deal with these events:

  • There's four events you need to be concerned with.

  1. Chunk generation.  There's a thousand different events here, you'll need to figure out which one you need, if any
  2. ChunkSave.  Save the data, duh
  3. ChunkLoad.  Read the data
  4. ChunkUnload.  Cleaning up your data so you don't have a memory leak.

[*]#4 there is not strait forward.  ChunkSave will run after ChunkUnload, so you should either a) keep a Weak reference to the chunk object itself for mapping your data in a HashMap<Chunk, MySpecialData> or b) use the event to note which chunk has been unloaded, and then when ChunkSave happens, also remove the data from memory.

[*]Chunk NBT is just like any other NBT, you can read and write to it very easily, you just have to translate your data structure into primitive types.

 

  Quote

Half true. The extra variable I want to add is to actually avoid keeping track of the supports.

 

You can actually cheat and just look at the world when the block updates.  Examining the world doesn't take that much CPU time (I've clocked it: examining an entire chunk takes about 0.6 milliseconds even when using world.getBlock instead of directly accessing the chunk block arrays).  You'll lose a small portion of realism by taking shortcuts, but it'll be easier to code.  e.g. searching NSEW in straight lines will be easier to write (but less accurate) than trying to A* to bedrock.

 

This is based on my own code and using Time.getNano().

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

Whenever you want to change vanilla stuff, I recommend looking for solutions in this order:

 

1) Check if the vanilla classes have public fields or methods you can access directly. It is very inconsistent, but there are lots of public stuff -- for example, entity AI is contained in a public task list that you can fully edit.

 

2) Look for events. Forge and FML have provided a lot of events that intercept vanilla functionality that is interesting to modders. Furthermore, many events are cancelable, meaning that you can fully replace the vanilla behavior.

 

3) Use Java reflection to access private/protected fields and methods. You can't change the code itself with reflection, but can often affect it's execution or monitor for a field to hit a certain value.

 

4) Consider replacing the vanilla classes entirely with your own. This doesn't always work, but for example you can change the crafting recipes to output your stuff instead of the vanilla, or you can intercept all entity spawns (with an event) and replace it with your own version.  The main problem with this is that in several places in the Minecraft code they compare against specific instance instead of using instanceof. In other words, even if you extend BlockLadder there are places in the code where it looks for Blocks.ladder which will be false for your extended class. If they were more consistent with using instanceof, this would actually be one of the most powerful techniques...

 

5) Advanced techniques like ASM.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

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

    • Short Term Loans Online: A Reliable Source of Fast Cash   If you are experiencing financial difficulties, you don't have to worry about this challenge. This is the quickest and best method for handling financial catastrophes. You can pick short term loans online without reluctance, and you can apply for the payday loan you want online and have it the same day without any issues. With two to four weeks to repay the loan, you may often borrow between $100 and $1000 without having to offer any collateral.   As implied by the title, those with bad credit histories—defaults, arrears, foreclosure, late or missed payments, judgments against you, insolvency or IVA, etc.—are welcome to apply for online short term loans without having to go through any challenging procedures. Interest rates are a bit high in comparison to other loans. A thorough internet search can be used to determine the greatest rate for a financed loan.   You don't have to waste your precious time searching the internet for short term funding payday loans. In just a few minutes, you can apply for the finance you desire by completing a brief online application. The lender will approve the loan once he has verified that you have provided accurate information on this brief form. This loan is carefully deposited into your bank account in the least amount of time. You can utilize the money in a number of ways without running into any problems. Usually, the money can be used to settle debts like credit card balances, overdue bank overdrafts, tuition or school fees for children, energy bills, housing costs, and more.   Loans Lucre makes it simple to apply for short term loans online, so there's no need to drive across town. Additionally, you won't have to wait weeks for a response from us. Additionally, having bad credit shouldn't be a deal-breaker. We evaluate your entire financial history rather than just your FICO score. We approve many debtors who had been rejected by banks.   Once you are approved, Loans Lucre puts your online installment loans directly into your bank account, giving you instant access to your funds. The repayment plan is broken down into simple, reasonably priced monthly installments. Loans Lucre also rejects rollovers. Instead, we help borrowers get back on track when they encounter difficulties with the repayment process. Borrowers who regularly make their payments on time are eligible for lower annual percentage rates (APRs) on their subsequent these loans. That is truly win-win!   You will be communicating with the lender whether you apply for online personal loans through a cash advance broker or directly from the lender. The cost and duration of the transaction will be increased by any third parties you deal with through the direct lender. This will lead to a faulty perception of the "instant approval" of your payday loan, in addition to raising the cost of your transaction. When asking for a payday loan, it is therefore essential that you work with a trustworthy direct lender; a lender with a solid online reputation and satisfied clients is a wise choice.   You can apply for a short term loans online through internet platforms in addition to conventional lenders. A quicker and more convenient application process is frequently provided by these platforms. In the end, it is feasible to get a $500 loan with low credit or no credit at all, but it will need effort and careful evaluation of your financial possibilities. The lender's requirements will always determine approval, so be careful to give accurate information and look into several lenders to determine which one best suit your needs. https://loanslucre.com/  
    • Apply For Fast Cash Loans Online Today To Get Money Right Away   Do you have to deal with your money issues right away? You don't need to go anywhere because you can get fast cash loans online with just a computer and an internet connection. This suggests that you don't need to waste any time applying for these loans. All you have to do is fill out the form accurately and submit it to the lender online. They will check it and determine whether to approve the loan within the specified time frame. The money is moved to your bank account shortly after approval.   The same-day financing loan facility offers the most beneficial cash assistance in quantities ranging from $100 to $1000, with a flexible payback period of 2-4 weeks from the date of acceptance. You can use the borrowed funds to cover your child's tuition or school fees, small vacation expenses, past credit card payments, laundry costs, minor house repairs, your mother's checkups, and other emergencies.   To be qualified for same day funding loans, you must meet specific conditions regardless of your credit score—fair or low. A valid proof of domicile and proof of residence for the last 12 months, a current bank account with an SSN, being employed permanently with a monthly wage of at least $1000, and being at least eighteen years of age are prerequisites. If you satisfy the qualifications, you can apply for same-day payday loans directly without undergoing a credit check if you have bankruptcy, CCJs, IVAs, foreclosure, arrears, or defaults. As a result, getting a loan is fairly easy in the current credit market.   You must complete an application with information about your bank account and job in order to apply for a fast cash loan online from a physical payday lender. You also need to provide the lender with postdated checks that will be deposited on the scheduled repayment date. In return, you get paid right away.   Applicants can apply for same day payday loans at any time, from the comfort of their homes, eliminating the need to travel across town to a payday loan outlet. However, online payday lenders do not frequently provide same-day loans. Instead, payouts are made straight into borrowers' bank accounts via the Automated Clearing House (ACH) system; processing for this method takes at least one business day.   You must think about if you can pay back the loan in full within the allotted time because same day payday loans may have payback periods as little as one week or ten days. If you are unable to pay the full amount due, the lender might accept a token payment from you. The remaining sum will be restructured as a rollover, which is a new loan with fresh interest and administrative costs and the same short payback period. After a few rollovers, a significant number of little payday loans accumulate to the point that debtors still owe more than they originally borrowed, even after making consistent payments for months or years.   You should be ready to submit the required paperwork and supporting proof when applying for a payday loans online same day with bad credit. Usually, lenders will evaluate your present financial state, work status, and loan-repayment capacity. Many lenders specialize in bad credit loans and are willing to take on the risk of lending to those with poor credit, despite the difficulties presented by a low credit score. This implies that you are not automatically denied a loan because of poor credit or no credit at all. https://nuevacash.com/
    • I have removed stevekunglib and it is still crashing again https://pastebin.com/9vE8pji0
    • It looks like an issue with stevekunglib or a mod requiring it
  • Topics

×
×
  • Create New...

Important Information

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