Highly untested and may break world
Current release unspecified
- Sync
- Reworked radiation pathing and math
Fixes a lot of issues and improves handling of radiation
- Changed water radiation negation from 10% to 15%
- Changed reactor recipe to use fluid cell
- Changed wrench shift check to use GuiScreen.isShiftKeyDown()
- Created fluid blocks, Set steam to register late
This should in theory fix issues with some mods that expect steam to work in a set way.
- Fixed potential NPE when handling mouse packet
- Moved network code up a package
Was having a hard time finding it
- Added code to scan map data after being cleared
- Added temp fix to reset radiation
Fixes changes in the environment that will affect the path of radiation.
- Implemented ray trace radiation calculations
Radiation will decrease as it passes through walls. At the moment this is done using % of the base value. In the future each block will have a set % or flat block rate.
- Added potion effects for radiation
- Disabled radiation in creative mode
- Added missing in input + output checks on extractor & centrifuge
- 3.0.4
- Fixed map data unloading when a player dies
Is going to need more work as MC is unloading chunks on death. Which is clearing out the data (which it should do). However, the map is not designed to reload data on its own.
What is needed is to recycle the radiation sources on chunk data change (load, unload, blocks). This way the map state updates correctly.
- Toy around with fixing radiation not resetting on death
This seems to be a client side only problem. However, on death no radiation is applied cause the player to become immune to damage.
- Fixed ThermalExpansion support loading without the mod
Mistakenlly placed the code in the RF support think it was the same thing. When RF can load so long as the RF API exists which is often shipped with other mods.
- Added death mechanic to readiation
Entity will take a few HP damage per tick until dead
- Added fluid wrench support to other processing machines
- Renamed MachineSlot to SlotMachine
Was messing with my OCD to have prefixes
- Added slot validation to other processing machines
- Fixed slot validation on boiler
- Worked on readme
Added a bit of info but more work is needed. Likely needs a strong pass for spelling and grammer as I'm half asleep.
- Fixed markup formatting for change log
- Added recipes for thermal expansion, Added setting to disable base recipes
- Added wrench recipe
- Fixed NEI showing 16 turbines
- Added tooltips for input & output slots
Not needed but might as well just to keep things consistent. As most slots have tooltips and it feels odd to hover over one without.
- Set slot types and slot tooltips for all processing machines
- Added colors to slots for all processing machines
- Fixed machines being slightly in the ground when placed
No clue why the models are made this way. These badly needed to be fixed to solve all these position problems.
- Added tool tips for slots
- Toying around with slots and limited inputs
- Improved tooltip system, Added dynamic tooltip for fluid tanks
- Renamed tanks to reduce confusion, Added GUI edge colors for tanks/slots
Colors should help understand how to configure machines.
Renamed tanks and settings objects to match colors. This should reduce confusion, as this has already caused one bug were water and waste look about the same.
- Added input tank settings for boiler, Abstracted side settings as an object
SideSettings object should make it easier to implement the feature over all machines. Though it likely I will have to build this into tank object and maybe an inventory object. That way the code simplifies and makes it easier to implement.
- Fixed wrench not having feedback
- Finished wrench
Textures, localization, registered, and some minor fixes to logic.
- More work on wrench
- Added save/load for boiler tank output settings
- Started work on a wrench to config machines
- Change log
- Fixed boiler waste recipe using wrong volume
Simple mistake, value was set to 1 instead of 1000 due to using wrong field.
- Fixed fluid/item input for processing machines, Fixed boiler waste recipe
Created a system to check if any recipe supported a component. This is then used by inventory and fluid input to check if something should be allowed inside the machine.
Added to this fixed boiler trying to output 100 buckets of fluid of contaminated water. Small error due to configuration bug
- Added particle effects to reactor while running
- Added configs to disable particle effects
- Fixed fuel rod damage display being inverted
Didn't even notice until now. Easy fix
- Added particle effects to machine processing
Running effect that generates randomly every tick
Complete effect that generates when recipe finishes
- Fixed inventory size on reactor
Set to 1 instead of 64, this was causing issues with pipes overflowing and more than 1 rod being used.
- Implemented ISidedInventory for reactor core, Added more settings for fuel rods
- Created quick change log
- Added settings for disabling more radiation mechanics
Not all are implemented
- Fixed GUI localizations
- Fixed NPE when checking if can output fluid
- Slight improvement to radioactive entity item handling
Should solve issues were mods use an entity item instance to do rendering.
- Renamed config loader, Added thermal config, Added settings/fields/API for item radioactive in reactor
- Started on recipe config
- Added ways to disable radiation system
This allows turning off entities taking damage and radiation being tracked at all.
- Implemented more configs
Only have recipes left to finish. Though will add more settings later.
- Added recipes for most of the content
- Started on recipes
- Migrated centrifuge recipes to new system
- Migrated boiler recipes to new system
- Organized centrifuge package
- Organized boiler package
- Created recipe system for processing machines, Migrated extractor recipes
Simple but should work for generating new recipes in the future. Also simplifies some of the code of the processor. As all machines do not need to implement sub methods for canProcess() and doProcess()
- Set more dust default drop rates (mostly TE dusts)
- Added config for dust loot table and set some default values
Also set the system to ignore values zero and bellow
- Fixed dust loot table not loading
- Fixed config path
- Fixed config ore not saving
- Cleaned up and abstracted some logic for loot tables
- Started work on extractor recipes, Added random weight system for dust drops
Weight system works roughly the same as loot tables in MC. Though it seems to be upside down so might need more work.
- Added world gen settings, Moved extractor clases to sub packages
- Made configs use the content proxy system
Temp solution since 1.7 doesn't have the nice config annotations
- Added world generator for ore
- Added item renders for blocks using 3D models
- Added unique textures for U238, Toxic Waste, and Processing Waste
Previously each was using U235 texture
- Fixed power cell using fluid cell localizations
- New lined fluid amount for cell info
- Fixed proxy running before items breaking cell render
- Add english localizations for most content
- Added centrifuge
basically done short of polish
- Added loadComplete() to proxy, Fixed randomized dust output for waste processing
- Reworked registry handling to use proxy system
Will make life easier
- Boiler works and supports all needed recipes
Might need more polish later, but recipes are working. Boiler can turn ore into hex fluid and turn mineral waste into its sub parts.
- Moved some processing code to a prefab, Started work on boiler
- Renamed cell renderer
To reduce confusion as it was prefixed Item. While I was looking for Prefix of Renderer
- Added a dev only creative tab for fluid cells
Might add a config later to enable but want to leave it off to reduce clutter. Only added it to check rendering of cells.
- Fixed cell render being upside down
- Created a dynamic fluid renderer for cells
Sorta works, not well but it does work. Credit to stackoverflow + CoFH code to figure out the solution.
- Fixed issues with fluid containers that are stacked
- Created textures for fluids
Water + noise + color
Will need better textures down the road.
- Added extractor model and animation
- Fixed output compare and process not restarting
- Added packet handling for GUI
Untested but unlikely to fail in a major way
- Completed basic layout of extractor GUI
- Copied over GUI code from VE
Not 100% match as I removed some junk that will not be used. Very likely will strip a lot more as I go to customize the classes to the mod.
- More work on power and machines
- Most of the wire code is completed
Still needs to be tested heavily.
- Started on processing machines
- Smoothed rotate of turbine
Previous rotation was having a slight snapping when cycling back around to 360. Well not so much a snap but a slow down. Not entirely sure it was due to 360 wrap around or frame rate issues. Either way a lerp has been added and a synced rotation to tick rate to lerp towards.
- Fixed concurrent modification error
Issue with adding changes to map while at the same time looping steam sources.
- Added model for turbine
- Fixed reactor connection state not updating
- Added some configs for steam generation, power, and effect generation
- Renamed tiles package to machines package
Easier to find
- Registered steam turbine block & tiles
- Implemented tile switching on steam gen for power APIs
- Created framework for a proxy and power system
Proxy system works the same as VE but is simplified. As it only needs to call init on each proxy and not handle breakage from sub-mods.
The power system is similiar to the 1.12 power handler for ICBM-Classic. Very simple wrapper to handle adding and removing energy from tiles.
- Added RF power API
- Moved particles randomization client side
Means 1 packet instead of a dozen per tile. Also added better randomization and improved handling.
- Added texture for steam
Will need to replace as the one from Resonant Inductions is too high res and looks bad. Plus animation would be nice.
- Finished basic version of steam funnel
Needs some visuals and maybe a bit more work for usability.
- Fixed effects for showing water boiling
- Reworked heat spread again, Started on vaporization mechanics
While starting on generating steam I noticed heat was not spreading correctly. To fix this I start implement actual heat transfer values. This didn't go as expected but after fudging the numbers has resulted in a better system. Now blocks have a transfer rate seperate from heating rate. In addition to this the rate is used to calculate % of heat movement. This allows blocks with high heat transfer to get more heat than other blocks.
- Increase heat output of reactor
- Allowed heat to spread to corners
- Allowed placements to be delayed
- Fixed overflow issue causing heat to go negative
- Increase heat output of reactor by x10
- Derp on not setting starting heat, Also fixed data pos not being recycled
- Added heat consumption for spread
In theory, this should allow high heat values to be used for output. While ensuring the heat actually spreads and acts like it moved around. This should fix high heat points (on source) and allow insulation to work.
- Fixed thread setting low heat values
another conversion error -.-
- Fixed some conversion errors
KJ -> J errors
Likely there are more of these but so far caught a few noticeable ones
- Added thermal probe to check heat energy and temp
Simple right click chat message item to display data about heat map
- Fixed environmental heat not being used
- Heat spread pathfinder works
Few minor oversights in implementing the pathfinder from memory. Not bad considering I rarely implement iterative pathfinders. From what I can see it is working though I have a feeling its not 100%. Main concern is that heat is not spreading to each tile correctly. This is due to the nearest neighbor check. Which checks all 6 sides for heat movement. Then it estimates how much heat would move to the current pathed tile. The problem is we only do this once per tile. So if a high value was set next to the tile after it ran. Then it would not get that heat value resulting in incorrect values. This is a minor issue as it shouldn't break the system. However, might result in cold spots on the map.
- Finished converting over thermal system to pathfinder
- Finished off boiler plate for pathfinder
Still needs tested and data needs to be set to map
- Reworked thermal system to use a pathfinder
- Created object to handle pool of data, Added DataPos (iii) for storing location
- Implemented changes to reduce memory usage
Problem is still not solved. Issue is just too much data being generated to be processed in time.
Solutions:
A) Reduce area of effect (aka limit max distance of heat movement)
B) Static cache every and remove real time updates
- Thermal system works but has a memory leak
System is working and CPU usage is fine from the thread itself. Issue is that a memory leak is happening due to the number of updates happening per cycle. This then is causing the GC to run often and destroy TPS of the game.
- More work on thermal system & fixed issues
Fixed some minor issues and started testing
- Moved placement call to BlockPlacement, Added thermal placement
thermal placement will allow consuming energy and enforcing state change based on energy level. Should solve issues were thread doesn't match world state.
- More work on thermal system
- Added placement queue, Added init calls on handlers
- Toyed around with thermal math
Not entirely sure if this will work as expected. Not only have I not tested the code but am unsure if the math is correct. What is even more concerning is the unit scales. As kilo-joules might be too small a unit to store inside of a integer. Especially since some blocks will take millions of kilo-joules to change states.
- Implemented event triggers for thread
- Created thread for handling heat movement
- Abstracted thread logic for reuse
- Moved thermal map to its own package
- [unfinished] Created wrapper for player
Still needs to be completed but the bulk of the code is there.
- Moved rad item check to its own class
The plan is to implement several checks for radiation. That way items can be implemented without the radiation interface.
- Increase rad values on items
Will need more balance, Might be too high for items now. However, the value does work well for reactors. As it needs to be super height due to unshielded design of the reactor core.
- Reduced code needed for thread, Fixed events firing client side
- Re-added reactor structure update when block is removed
- Fixed reactor not adding as source on init
- Added block exist checks to data map
- Fixed all items being added as rad sources, Fixed items not being removed
- Fixed reactor using fuel timer as its radiation output
- Simplified chunk layer logic
Originally, it expanded as it was used. Now its initialized to 256 since this will only take 256 bytes
- Fixed radiation map not updating correctly for items
- Removed trying to render the rod as a normal block
Will switch over to a TESR
- Made radiation scale with stack size
- Registered tile entity
- Moved rad exposure class to there own package, Reworked item radiation handling, Started on radiation source tracking system
Radiation sources will be tracked and updated over time. This will allow anything to act as a source (item, entity, tile, etc) while being separated from the material map system.
- Created APIs and setup map systems to be exposed to API
Still needs work
- Added fuel consume and heat output to reactor
- Little work on thermal system
- Added method that is called when stack changes in slot
basically the same thing we have for VE, but untested as it was created from memory.
- Added interaction to insert and remove rod, Setup rod to render as a block
Rod will render as a normal block to save time. As well this will act as a range indicator were the reactor core is located.
- Worked on reactor getting basic code out of the way
- Created simple fuel rod interface and class
Will need more work in the future.
- Renamed packet#data() to dataToRead() in
Should reduce confusion
- Implemented network helpers in TileMachine
- Added inventory code
- Adjusted cell render to connect to each other
Didn't notice this in the old code. Seems the models are designed to scale. I will need to remake these models to remove the need. As it makes the models look a little bad. As well z-fighting happens a bit on some parts. I remove as much z-fighting as possible. However, the bottom cell has z-fighting due to the model itself.
- Started on fission reactor core
- Fixed chunk NPE during save
- Finished cleanup of split maps, Added events for map chunks
Add chunk event
Remove chunk event
Minor fixes for issues with port
- Separated radiation exposure from radiation material map
Separated both maps into different classes.
Made map system generic for reuse. Still needs more work to remove map specific triggers.
Started on thermal system
- Renamed rad map to data map and move to its own package
- Changed overlay to make it easier to understand
- Fixed rad display showing wrong color
- Fixed overlay rendering NaN
Still unsure exactly why this was happening. However, the interpolate code will detect and reset the value.
- Fixed radiation remove timer
- Improved overlay, Added color scale, Added interploation for numbers
Color scale will go from green to red as the player is closer to danager.
Numbers will move slowly over time to prevent instant spikes. Helps provide a much smoother transition and give an impression of movement.
Added remove timer for debug, might add a graphic later to replace it for users. As the information is useful but I don't want a raw tick value shown.
- Fixed negative positions not working
- Added more debug to thread
- Cleaned up and centerialized radiation entity handling to one class
- Worked on radiation handling
- Fixed a few minor issues
Fixed chunk not being marked as changed
Fixed a few NPEs
- Fixed thread not cleaning up correctly
- Added handling for chunk load and unload to update exposure map
- Added missing matieral change packet fire
- Added exposure to UI packet
- Fixed commands prefix with help
- Added commands to check exposure and set material values
- Created thread to calculate REM at location
- Added an event for radiation
- More work on radiation system
- Finished save/load test for RadiationChunk, Fixed a few issues
- Started unit testing RadiationChunk, Fixed several issues
Unit test FTW, already found and corrected several issues
- Added junk test, Fixed chance index could return wrong value
This issue would only happen if someone inserted bad data into the method. However, now it is not possible for bad data to result in a valid insert.
- Added unit test for RadiationLayer
Should cover everything but junk data
- Worked on radiation map
- Worked on radioactive blocks
- Fixed packets not working, Renamed again to properly match usage
- Added overlay render for rads and rems
- Renamed packet classes
- Added method to get and set radiation on entity
- Finished implementing get and set rad commands
- Started on command to test and set rad values
- [Untested] Implemented rad packet sync
- Added player to error debug of IPacket
- Created events for indirect effects
- Created packet to sync rad value to client for display
- Registed packet system
- Copied over network and transform lib code from VE
- Added logger and dev mode check
- Minor changes
- More work on radiation
- Worked on a lot of math to get RAD per tick
- Started on tracking living updates to apply damage
- Added reference class to register effects, Added simple value to track rads
- Armor protect checks work
- Worked on indirect effect systems (radiation)
Still needs more work but this should provide a concept point to build onto.
- Added some parts of coding lib
- Fixed getIcon(ItemStack, pass) not being called
Simple fix, set item to require multiply passes which will then trigger the code.
- Close #4 , Implemented generic items, Added fluids
All basic items short of tools have been implemented. Any cell that contained a fluid like object has been implemented as a fluid container. This will provide the option to expand fluid list in the future
- Added creative tab
- textures
- Mod loads, Hazmat suit half works
- Trashed existing code save a few seed classes
Going to rewrite one item at a time from the old source. This will provide a few benifits.
A) No fear of copy right issues as the code will be 100% fresh
B) I will understand the code
C) New clean code with less junk and bugs
- Changed package to java
- Not sure why we have two copies
- Added build scripts
- More porting works, import fixes, added missing class files etc.
There is still a lot more work to be however!
- More work, will come back to this later
- Cleared errors and updated nuclear boiler
- Cleared errors and updated centrifuge
- Added missing settings class (Will need stripped of non-used data), Removed all errors in chemical extractor classes, Implemented GUI & container, Moved over render code
- Removed errors from fulmination chamber, It will need recoded to work
- Moved files around to improve navigation and to place same files near each other
- More work, few classes error free
- Removed a few unneeded classes
- Updated schematic code and reactor explosion code
- Started work on main class
- Updated packages