- Removed nbt side-effects of the fan processing recipe check for ground items
- Fixes intersecting fan streams making passing ground items unable to be processed
- Refactored Stations and Signals into a more unified and expandable edge point abstraction
- Trains no longer depart a station when a red signal is close by
- Fixed inconsistent pathfinding when stations, signals and trains are sharing a graph edge
- `#create:blaze_burner_regular_fuel`: these items are treated like coal
by the blaze burner if they cannot be used as fuel in a furnace
- `#create:blaze_burner_special_fuel`: these items cause the blaze
burner to become superheated
- Fix equipable item attribute
- Fix SandPaperItem overriding both getItemEnchantability and
getEnchantmentValue
- Update Flywheel and add support for unshaded quads
- Fix models marking shafts and other parts as unshaded
- Refactor SchematicRenderer buffer building
- Improve block entity render bounding box caching
- Fix#2785
- Added Signals
- Nixie tubes no longer have a base plate
- Nixie tubes can now mount to walls
- Nixie tubes display signal info when mounted to a signal box
- Train speeds are now configurable
- More Jank patrol
- Track debug now on 'H' & 'J'
- Fix sequenced assembly scene in newer JEI versions; Fix#2779
- Fix inconsistent JEI fan scenes; Fix#2748
- Fix glowing RenderTypes not respecting lightmap values
- Add ForcedDiffuseState to push/pop forced diffuse calculators
- Transform the SBB instead of the global PoseStack when applying ponder
transforms
- Tweak used shaders in RenderTypes
- Rename LerpedFloat.Interpolater to Interpolator
- Update Flywheel
- Copied over the condition functions from ProcessingRecipeBuilder
- Added recipeConditions variable
- Copied over json section for dealing with conditions from ProcessingRecipeBuilder
- Improvements to graph building
- Fixed a number of issues caused by junctions and inconsistent track propagation
- Trains no longer disassemble with reversed carriage spacing
- Trains can no longer jump to perpendicular tracks on an intersection
- Girders can now connect to brackets vertically
- Fixed girders not updating connections when built with placement assist
- Tracks now actively update girder shapes placed beneath the ties
- Fixed bezier girder texture inconsistencies to the block models
- Fixed flywheel rendered tracks creating headless instances
- Fixed track not removing its tileentity properly when changing to basic state
- Fixed track rendering not using the correct normals for diffuse
- Fixed tracks not rendering in schematic previews
- Tracks now transform correctly in schematics
- Fixed tracks not validating for target track after placement via schematic
- Tracks can now merge TE data when placed into each other via schematic
- Fixed junctions not working correctly with graph building
- Fix ponder diffuse when using shaders
- Partially fix incorrect diffuse formula being used in the nether
- Invalidate schematic renderers at the appropriate time
- Added track junctions
- Girder block pillars now connect textures
- Girders now render a panel towards connected solid blocks and chutes
- Shafts can now be encased with girders
- Added placement assist for girders
- Reverse steering is no longer inverted
- Fixed previous passengers not being removed from seat when player uses it
- Trains with two mounted controls/conductors can now pathfind backwards out of a station
- Fixed auto-approach not working properly while reversing or controlling a dual powered train the opposite direction
- Fixed icon display order and disassembly location of reversed trains in a station
- Fixed inaccurate train length()
- Blaze burners can now drive a train
- Non player train drivers are now required to sit in front of a controls block
- Schedule now interrupts when no conductors are found
- Fixed reversing trains not iterating carriages in the correct direction
- address some bezier track z fighting
- portable storage interfaces now stay connected until a contraption departs
- seats can now collect entities when collided with on a contraption
- clicking on seats now tries to mount any leashed mobs first
- fixed seated entities not staying on seats on disassembly. this probably also fixed issues with sub-contraptions (oops)
- fixed portable storage interface not working on train contraptions
- Trains can now travel backwards through the graph
- Controls are now a requirement for assembly
- Double-endedness now depends on two opposite controls blocks anywhere on the train
- Players can now manually control trains via a mounted controls block
- Trains no longer disappear when a new train is created
- Trains now crash into other trains
- Fixed navigation complaining when schedule starts at current station
- Fixed contraption interaction not iterating all potential colliders
- Hovering tooltip for derailed trains
- Trains can now be relocated using a wrench
- added "/create dumpRailways" command
- trains now react to changes of the graph beneath them
- trains now notify owner of unexpected issues
- filtered navigation wildcard works now
- navigation now smarter I guess
- navigation cancelled when track path gets disconnected
- stations and trains no longer disassociate when graph is edited
- schedule no longer skips entry when navigation gets interrupted
- trains can now be in a "de-railed" state
- Cannot send train off while still in assembly mode
- Missing shafts in bogey render
- Moving to Lang keys
- Fix diagonal bends using weird constraints
- Cannot assemble tracks and stations on contraptions
- Track placement now helpful with 45° slope tracks
- Stations on Diagonal tracks can now be navigated to
- Stations no longer crash when target track missing
- Reduced Trackpropagator network traffic
- Stations now migrate to newly created trackgraphs/edges when network changes
- Stations now distribute properly to trackgraph segments that got split apart
- Client thread no longer creates stations
- Bump forge
- Mechanical Harvester no longer crashes the game on newer forge versions
- Fixed Cocoa Beans being harvested too early
- Fixed incompatibility with Abnormals' custom tree types
- Fixed incompatibility with Serene Seasons
- Fixed incompatibility with Terralith
- Added a couple of Raw Ore compatibility recipes
CopperBlockSet has many useful functionalities that addons could use for their own metals that also oxidize. It'd be nicer and more intuitive for anyone going through our github, however, if they could be in their own separate directory.
- Fix lit soul blaze burner providing smoking instead of haunting
- Fix horses displaying soul particles even when not being haunted
- Add hauntable item attribute
- Re-add right clicking lit blaze burner with shovel to extinguish it
- Move most fan type functionality to abstract methods in the enum
constant
- Rework FurnaceEngineModifiers
- Fixed Client-side TileEntities ignoring data packets with empty compound tags
- Fixed Stickers not visually updating when powered
- Fixed Cocoa pods colliding with piston/pulley/gantry harvesters
- Fixed Bulk Smoking using Haunting particles
- Unified particle emission locations between depot and belt fan processing
- Updated Haunting recipes
- Fixed Brass funnels with configured amounts inserting partial stacks when target inventory is almost full #2589
- Fixed toolbox not marking a chunk for saving when contents change #2574
- Fixed Contraptions no longer sending disassembly packets and thus dropping players through blocks #2538
- Wrap ConnectedTextureBehaviour and AllSpriteShifts instances in
Suppliers where necessary
- Use client connection's instead of level's RecipeManager when finding
recipes for JEI
- Add missing override annotations in SymmetryEffectPacket
- Organize imports
Adds the abillity to register any block as a power source to the furnace engine. This will allow for more flexability and remove the need to implement AbstractFurnaceBlock and AbstractFurnaceBlockEntity.
- Fixed Harvesters hard-colliding with leaves when used with pistons, pulleys or a gantry carriage
- Fixed kinetic tiles not marking chunks for saving when speed or stress changes
- Dedicated Servers no longer create a resourcepack folder
- VAO state is now handled by GlVertexArray objects
- IndexedModel no longer inherits from VBOModel
- BufferedModel doesn't need #clearState
- Likely fixes crash on intel drivers
- Sort of get the batching engine working for contraptions but this feels wrong
- TaskEngine gets passed in methods
- Better naming for TaskEngines
- Do BufferSource ourselves
- Change BufferBuilderMixin to allow for injection into BufferBuilder objects
- true to false for Pepper
- IBufferedModel -> BufferedModel
- VertexFormat -> BufferLayout
- Use ImmutableList in BufferLayout
- LayoutItem naming consistency
- Try to reduce usage of raw BufferLayouts
- Move vertex interfaces to api package
- #createWriter and #createReader in VertexType
- Some documentation
- Fix bracket contraption rotation; Fix#1856
- Make sure KineticTileEntityRenderer only renders once
- Make use of new ModelUtil method in BakedModelRenderHelper
- Clear up BracketedKineticBlockModel and PipeAttachmentModel logic
- Replace ISimpleReloadListener usage with ResourceManagerReloadListener
- Pulleys are now able to extend below Y=0
- Super Glue can now be placed above Y=256, all the way up to the new world height limit of 320
- Fixes#2421, fixes#2426, fixes#2427
- Clean up SyncedTileEntity and SmartTileEntity
- Allow schematicannons to be rotated based on placement angle
- Fix DirectionalExtenderScrollOptionSlot rotation
- Remove deprecated usage of JsonReader and LazyLoadedValue
- Move ToolSelectionScreen to content.schematics.client
- Organize imports
- Update to 1.18.1
- Move most user facing interfaces to flywheel.api package
- Refactor InstanceData to have no package private classes
- Remove 'I' prefix from many interfaces
- ILightUpdateListener -> LightListener
- IMultiProgram -> ContextAwareProgram
- IFlatLight -> FlatLit
- All materials use the same vertex format: UNLIT_MODEL
- An Engine is a MaterialManager and a RenderDispatcher
- Refactor InstanceManager's ctor to use the MaterialManager interface instead of the concrete type
- MaterialManagerImpl -> InstancingEngine
- Add skeleton for BatchingEngine
- Hack in InstanceWorld to switch between the 2
- Rename/move existing MaterialManager impl to new package
- Port to 1.18
- ChunkUtil discontinued
- SmartTileEntities write to metadata
- Features generate from -64 up
- World Wrappers weren't convoluted enough
- Haunted bell considers >0 safe
- Missing GuiUtils methods continued in RemovedGuiUtils
- Double chests no longer split when moved on a contraption
- Changed the way contraption storage interacts with known multi-block item storage (band-aid solution)
- Changed a few blocks' sound types
- Fixed in-world icons not rendering
- Added Ponder Scenes for the Item Vault
- Added crafting recipe for Item Vaults
- Changed crafting recipe for Fluid Tanks
- Fixed ponder tracking items in inactive inventory screens
- Removed unreachable Advancements
- Fixed TileEntities in Ponder not receiving blockstate changes
- Fixed Ponder selection rendering offset
- Re-introduced the depth-sorting hack for PonderUI
- Editing mode is now a Config Option
- Fixed Non-Container Screens no longer closing on "E"
- Added tooltip for Experience Nuggets
- Fixed Schematic Prompt no longer starting auto-focused on the text field
- Pulse Extenders now actually extend the pulse, rather than emitting for a fixed time
- Updated Ponder Scenes for the repeaters
- Picking encased kinetic blocks no longer returns a creative-only item
- Added a Ponder Scene with encased cogwheels
- Implemented change of top & bottom texture for copper roof blocks
- Mechanical Belts no longer have a Stress Impact
- Stairs and Slabs variants of blocks no longer use plural in their name
- "Polished" stone type variant now uses the prefix Polished Cut
- "Bricks" stone type variant now uses the prefix Cut
- Added more recipes for stone types and copper blocks for convenience
- Reverted re-texture of crushed copper ore
- Added waxed copper recipes for deploying
- Match Create's copper block variants with vanilla's copper block
variants
- Add CopperBlockSet and CopperRegistries
- Remove copper plating block and OxidizableBlock
- Add remaps for copper ore and copper block and organize RemapHelper
- Fix belt funnel model names
- Bump required Forge version to 37.1.0
- Organize imports
- Added crushing recipes for raw ore blocks
- Layered mineral deposits are slightly more likely to spawn
- Zinc ore is slightly less likely to spawn
- Added layered deposits with Scorchia
- Fixed tuff pillars texture size
- Modified recipe for the Wand of Symmetry
- Added the Experience Nugget
- Item Vaults are now Immune to regular explosion damage
- Encased Shafts and Cogwheels no longer appear on creative tabs
- Fixed gantry carriage model uvs
- Fixed Palette blocks & Item Vault not easily mineable using a pickaxe
- Fixed ponder crash when a non-ticking tile is shown
- Fixed cube particle interpolation and quads
- Fixed sawblades rendering with wrong rotations
- Items shown on JEI's Washing tab are now centred
- Introduced a new set of Ore Processing recipes
- Moved Portable Storage Interface to andesite tier
- Removed the Adjustable Crate
- Creative Crates can no longer span multiple blocks
- "Chromatic" items no longer appear on creative tabs
- Ejectors now emit comparator signals relative to their max accepted stack size
- Fixed combined slots in the toolbox menu not acting correctly
- Fixed background of the advancement tab
- Removed Gabbro, Dolomite, Weathered Limestone
- Added Crimsite, Asurine, Veridium, Ochrum
- Added and Removed palette blocks for Andesite, Diorite, Granite, Tuff, Deepslate, Dripstone, Calcite, Limestone, Scoria and Dark Scoria
- Custom stone types now generate as layers instead of ores
(Work in Progress)
- Fix rotation indicator particles
- Fix sail dyeing
- Turn BreakProgressHook into DestroyProgressRenderingHandler interface
- Refactor overlay rendering to properly use API
- Change SpriteShiftEntry to use StitchedSprites
- Use OnDatapackSyncEvent instead of mixin
- Organize foundation.ponder package
- Remove usage of deprecated:
- Durability bar methods
- Constants class
- Fixed fluid networks losing fluids when extracted amount is lower than a pumps transfer speed
- Fixed JEI plugin claiming that some occultism's ritual recipes work in a compacter
- Fixed press/deployer/spout failing to process a belt item when another item is processed simultaneously further down the belt
- Add ToolBoxInstance
- Move from MatrixTransformStack to TransformStack.cast where possible
- SuperByteBuffer implements transform traits on its own
- Bump flywheel build
- Better visibility for low/half amounts of fluids in basins
- Fixed Mechanical Press head getting stuck in extended position when off-screened or when its basin changes
- Added processingTime support to mixing recipes (defaults to 100)
- Fixed Basin recipes with fluid output not starting when targeted output inventory supports items only
- Fixed item extraction from create creating stacks of unstackable items when source inventory allows stacking them (Storage Drawers)
- Fixed Deployers not having a valid item capability when asked before their first tick
- Fixed Mechanical Crafting recipes able to be automated via packing
- Add CustomUseEffectsItem interface implemented on items to control use
effects behavior
- Replace SandPaperEffectsHandler and SandPaperSoundMixin
- Fix broken polishing particles when no items in other hand (polishing
last item)
- Fixed Chutes spilling items when inserting into disconnected storage interfaces
- Blaze Burners can now be picked up using the Wrench
- Additional safety checks from random crash reports
- Fixed piston/pulleys moving before their attached entity is loaded
- Recipes with an id suffixed "_manual_only" are now ignored in auto-shaped, auto-shapeless and auto-cutting processing features
- Fixed pipes spawning particles at connections between chunks
- Fixed pipes not initialising target fluid holders properly when the source is loaded in first
- Fixed encased fluid pipes not updating flows when neighbouring blocks change
- Fixed fluid pipes not updating flows when adjacent block changes from fluid to block
- Fixed Crafters voiding any inserted items after being moved on a contraption
- Fixed Crafters crashing the game after being placed by a Schematicannon
- A couple of two-ingredient recipes have been made shapeless
- Improved piston/pulley contraption collision with blocks in the world
- Fixed pistons/pulley contraptions merging into world blocks when disassembling shortly after loaded in
- Added jei support for toolbox colouring recipes
- Disabled item shadows on belts
- Toolbox radial can now be navigated using hotbar shortcuts
- Toolbox radial now steps back when right-clicked
- Toolbox radial now immediately opens the multi-toolbox view when right-clicking the central "unequip" button
- Fixed hidden slots visible in toolbox screen in some gui scales
- Toolbox sorting in the radial menu is now deterministic
- Fixed Toolboxes not always updating their inventory state to clients
- Shulker boxes can no longer be placed inside toolboxes
- Fixed potion fluids not displaying their full name in jei
- Fixed JEI showing all potion recipes when looking up a specific one
- Replace AngleHelper.horizontalAngle with horizontalAngleNew (return 0
instead of -90 for vertical directions)
- Fix FluidRenderer not calculating correct UVs for integer positions
- Fix FluidRenderer rendering streams and flowing texture incorrectly
- Slightly improve performance of outlines
- Rename PartialBufferer to CachedBufferer
- Move specific code out of SuperByteBufferCache into CachedBufferer and
BakedModelRenderHelper
- Move Compartment inside SuperByteBufferCache
- Rename some methods and fields
- Add sanding sounds
- Allow sandpaper to polish vanilla copper
- Spawn particles when polishing Create copper blocks
- Make Create copper blocks inherit properties from copper block instead
of iron block
- Fix empty blaze burner not lighting with flint and steel
- Use vanilla's widget lists instead of custom ones
- Use press callback instead of overriding mouseClicked
- Switch old container classes to extend ContainerBase or
GhostItemContainer
- Organize foundation.gui package
- Remove deprecated methods in Color
- Various other changes
- Removed the pulse repeater
- Removed the adjustable repeater
- Adjustable Pulse Repeater -> Pulse Repeater
- Added the Pulse Extender
- Latches now play a sound when flipped manually
- ponder todo
- Fixed super glue not spawning particles on break
- Fixed logspam when goggle overlays are shown
- Fixed blocks launched by a schematicannon spiraling through the air
- Fixed javadoc errors
- Replace all GUI y-flip scalings to not scale normals
- Rotate CustomLightingSettings along XN instead of XP
- Apply custom lighting to all fluids in JEI scenes
- Fix fluid rendering: fix normals, normal scaling, and color
- Make new config fields final
- Do not add item cooldown if cooldown is less than or equal to 0
- Tweak rotation math for depots and billboard potato projectiles
It is currently impossible to for example make a block that both generates stress and that behaves as a gearshift in that it rotates differently on either side. This simple check should allow that to be possible in a much easier and more intuitive manner.
- Refactor custom rendered items; The renderer now creates the model
instead of the other way around
- Only tick wrench cog rotation and linked controller renderer if client
is not paused
- Move all model swapping code from CreateClient to ModelSwapper
- Register client resource reload listener before initial resource
reload
- Use TextureStitchEvent.Post event instead of resource reload listener
for filling sprites of SpriteShiftEntries
- Reuse Random instance in PartialItemModelRenderer
- Make all config fields final
- Merge package foundation.renderState into foundation.render
- Move BreakProgressHook from package foundation to foundation.block
- Rename ResourceReloadHandler to ClientResourceReloadListener
- Rename ProperDirectionalBlock to WrenchableDirectionalBlock
- Connected Mechanical Crafters now strictly distribute added items from top to bottom, left to right
- Fixed smart pipe ponder scene no longer showing milk in the basin
- Added timed invalidation to refresh fluid handler references observed by pipe ends
- Added item description for the toolbox
- Fixed Smart Pipes not able to be picked up with Wrench
- Fluid Pipes no longer have to be straight in order to be 'wrenched' into a strictly straight windowed pipe
- Stockpile Switches can now be used with Fluid Tanks
- Content Observers can now be used with Fluid Containers and Fluid Pipes
- Fixed Pumps not updating pressure when reversed
- Fixed pumps and valves not registering their stress impact properly after changing state
- Fixed belts not applying stress when created in certain orientations
- Fixed belt items flickering due to previous changes
- Remove NbtPacket and add safe packets for configuring symmetry wand
and worldshaper separately
- Expand internal functionality of AllTags and use optional tags in most
cases
- Datagen tags forge:stone, forge:wg_stone, and forge:buckets/honey
- Fix attribute filter screen being shifted by one pixel
- Add translations for "fluid_container" and "renamed" item attributes
- Remove Create namespace restriction in CTSpriteShifter
- Add method to register ponder chapter lang
- Clean up palette block code; Closes#386
- Clean up tag code
- Use Create.asResource in as many places as possible
- Organize imports
- Allow defining custom potato cannon projectile types through JSON in
datapacks
- Separate PotatoCannonProjectileTypes into PotatoCannonProjectileType,
PotatoProjectileTypeManager, and BuiltinPotatoProjectileTypes
- Allow setting a custom render mode when building a projectile type
- Prevent the potato cannon itself from being used as ammo
- Toolboxes keep nbt on pickup
- Toolbox radial menu supports mouse wheel
- Added Dispose-all buttons
- Synced slots detach when moving stacks back into the toolbox
- Fixed missing data on client on login
- LightVolumes now can act as a light cache with configurable size
- More GridAlignedBB changes
- Remove ILightUpdateListeners
- Simplify pulley rendering using LightVolume
- Better system for moving objects that want to receive light updates
- LightProvider interface to better abstract light lookups
- All light listeners use GridAlignedBBs
- More utility in GridAlignedBB
- Crafters no longer display item sprites vertically flipped
- Crafters now arrange overlapping items less randomly
- Chromatic Compound can now absorb light emitting blocks from belts & depots
- Mechanical Harvesters can now be used to gather Leaves
- Mechanical Harvesters can now be used to gather Weeping and Twisting Vines
- Fixed JEI integration of Basin recipes with multiple and/or stochastic outputs
- Fixed idle blaze burners sending packets every tick
- Fixed placement indicator rendering behind the crosshair
- Added an Event allowing additional tileentitybehaviour objects to be attached to STEs from outside
- added an event to add custom deploying recipes for addons(that partly need more data and therefore can't use the existing deploying recipe json format)
- made deploying recipe scanning cancelable by event
- added a safety check to tile entity behaviours to prevent concurrent modification exceptions when loading old worlds (0.2 time, dev 0.3)
- MateralManager, MaterialGroup, and InstanceMaterial are all interfaces
- Separate (T)EI facing API from implementation
- Comment out debug log in ModelPool
- Renamed SpawnerMovementSetting to ContraptionMovementSetting and moved it to its own class
- Added a contraption movement setting registry
- Made checks previously checking only spawner movement setting and the block being a spawner to check using ContraptionMovementSetting.get(block)
- Call ContraptionRenderDispatcher#invalidate, at some point during a tick, and the structure will be reset.
- Move contraption compartment to SBBContraptionManager
- Contraption compartment uses custom pair with better hash function instead of apache commons pair
- Call ContraptionRenderDispatcher#invalidate, at some point during a tick, and the structure will be reset.
- Move contraption compartment to SBBContraptionManager
- Contraption compartment uses custom pair with better hash function instead of apache commons pair
- New Loader class in charge of loading and compiling everything
- ShaderSources now only loads sources
- ShaderSources is immutable now
- Resolver singleton in charge of managing name resolutions
- ProgramSpecs go through Resolver
- WorldShaderPipeline no longer needs reference to ShaderSources
- Reorganize everything
- Isolate SourceFile related things
- Should consider decoupling ShaderLoader from resource loading
- Document a lot of newer things
- Index functions
- Awkward WorldContext builder
- Template responsible for providing shader inputs
- Template is now an abstract class
- Template provides GLSL version
- ProgramSpecs now only accept one file
- Redo shader loading
- Now loads an immutable SourceFile containing some metadata
- Replace legacy compilation pipeline with improved new one using new api
- Builtins are defined in one file, now "header"
- New ErrorReporter/ErrorBuilder methods
- Fancier shader loading errors
- Remove utility methods from PonderRegistry and only leave the one
essential method
- Move utility registration methods to PonderRegistrationHelper
- Move entry builder methods to entry class, PonderStoryBoardEntry
- Move listed tags list to tag registry
- Make ponder chapters namespaced
- Add localization and language datagen support for ponder chapters
- Fixed Chutes pulling from inventories causing major framerate drops
- Fixed Chutes sending update packets when idling
- Added a max range for filter slot rendering of blocks
- Synced TEs are no longer able to cause side-effects by calling sendData on the Render Thread
+ FurnaceEngineModifiers which hold a Block -> float map of modifiers
~ Changed FurnaceEngineTileEntity to use the FurnaceEngineModifiers map instead of hardcoded modifier fro the Blast Furnace.
This will allow addon modders to change the speed modifier of a Furnace block.
- More conventional naming for fields of ContraptionMatrices
- Encapsulate fields in ContraptionMatrices
- Move creation to RenderLayerEvent
- De-clutter RenderedContraption#beginFrame
- Bump flywheel version
- Fixed ammo-specific fire damage not dropping cooked drops from killed entities
- Fixed Schematicannons not visually aiming toward current block trajectory
- Fixed placed Schematics using smaller boundaries than the original
- Added the option to enable/disable placing air blocks with instant creative schematic printing
- Added safety check for Missing/Migrated filter attributes #2065
- Added safety check for Crushing wheels near unloaded blocks
- Added safety check for instant printing an invalid Schematic
+ Added create:sandpaper to AllRecipeTypes and datagen.
~ Changed hardcoded list of sandpaper items to Tag.
This would enable me to include the Diamond Grit Sandpaper from CC&A in the deployer recipe. Node: There might be more applications for this tag.
- Make PonderRegistry use a ThreadLocal current namespace
- Add synchronized blocks to some methods that modify maps or lists
- Move some non-thread safe method calls to the event.enqueueWork
lambdas
- Buffered models directly consume IModels
- Document IModel more
- Move contraption world render spoofing to flywheel
- Miscellaneous new RenderMaths
- Added WorldModel, renders many blocks given a world instance
- Fix broken transparency on contraptions when using Flywheel
- Different subclasses for flywheel rendering and sbb rendering
- Select which to use on renderer reload, gather context, and when create buffers are invalidated
- ContraptionRenderDispatcher's meat was moved to WorldContraptions
- Rename ContraptionWorldHolder to ContraptionRenderInfo
- One ContraptionMatrices per contraption per frame
- Cull contraptions
- Bump flywheel version