-Externalized FacingToRotation.
-BlockLightDetector now uses tile based rotations.
-Added TESR methods and TESRs for chests. Can't get it to work in
inventory.
-Fixed rotation bugs involving culling and lighting. Now rotating culled
faces and normals too. Closes#21.
Relates to #9, #10 and #20.
Implemented automatic rotation for all tile blocks. You can still use
facing properties in model files, if you want to.
Also, some added some fixes and improvements.
Enabled block states ignoring. File with same name as block state, but
with .ignore.json extension. Although it's json extension, it is NOT IN
JSON FORMAT!!! Each line is name of property to ignore. Refers to #10.
Implemented passing of rotations to models. Removed unused unlisted
properties. Included dummy grinder model. Found bugs that have to be
fixed.
Referencing #10.
Last (?) update pass. AE2 can be launched and used (?) in game.
Rendering system changed again and again - rendering is NOT working, to
be rewritten and CAN be done a lot simpler.
Second update pass which fixes all compile errors. Some parts may have
aftermath effect, hence why 3rd pass will check those maked with
"aftermath".
Errors: 82 -> 0. Mod can be launched.
This is first update pass, which is mainly import reorganization, name
fixes, etc... Although some parts of second were done where changes
aren't important.
Errors: ~1400 -> 82.
Just `onTunnelNetworkChange` with tickable is apparently less exhaustive, and less stable. This now avoids issues with network splits and reconnects not being handled in some cases. Also simplified reconnection; there was some duplicate logic in there, with a missing validity check which potentially led to invalid connections.
This is loosely based on #2032 and should prevent any duplicated event,
but still does a refresh the whole cache due to potentially issues with
some inventories.
It also ensures that storage buses will not announce a CellArrayUpdate
before they are fully initialized, thus no longer causing them to return
null during an update.
Fixes#2403
Using LogManager instead of FMLRelaunchLog to access the logger instance.
Added logging of the name of failed exports instead of exception.
Improved crafting log to include issuer including their location and the
requested item.
Removed superfluous FMLRelaunchLog instance.
Removed superfluous parameters for PlayerData constructor.
Reduces the visibility of all fields to private and create setters/getters
when necessary. Exceptions are fields with GuiSync as these need to be
public.
Reduces the visibility of internal methods to private/protected/default when possible.
Removes the split collection as in some rare corner cases the insertion
order is important to maintain the correct data in terms of self cleaning.
Keeps the general cleanups and split of Fluid/ItemList.
Fixes#1964
ModVersionFetcher will now return a MissingVersion in case of an exception
instead of letting it propagate upwards.
Also added a generic try/catch to the VersionChecker itself, just in case
any unchecked exception might be triggered inside the thread and at least
not logged correctly.
Mostly used for the recipe system, but can also be used for debugging purposes. Debug options needs to be ticked to use the full information gain. Recipes only require the normal localization and the specific name plus metadata.
Shifted the recipes into a recipes folder where the CSV will also reside. This will also elevate the copying of the readme to the user directory since it can reside in the recipes folder.
Fixed a bug where the copier would copy the would also copy empty folders
Splitted the ItemList and MeaningfulIterator into an item and fluid
version.
Added an IdentityHashMap as additional item layer to the ItemList for a
faster access.
Refactored FluidList, findFuzzy will now return the same fluid instead of
an empty collection.
The export bus will now no longer speed up, if more than 1 of the last
crafting requests failed and slow down, if more then 5 failed.
Some code cleanup and moved the custom iterator into the helper package
as it is clearly related to the craftingtracker and not the export bus.
Prioritized inventories are not longer used twice for storing leftover
items and thus finally reporting twice the amount of storable items when
they are the only possible option to store something.
Also fixes import buses now respecting the amount of storable items inside
the network instead of trying to place the exported items back and failing
on any restricted inventory, potentially voiding the overflow.
Fixes#1892
The recipes are now structured into multipe subfolder and split into more
distinct files, so the names are more appropriate and are better at
hinting which items the actually contain.
It also extends the RecipeResourceCopier to now handle the folder
recursively and extract all subdirectories and their files.
"import=" is currently requiring a relative path to the root directory
of the recipes. This would require a larger rewrite/refactoring, thus it
is kept for now until a potentially later changer.
This reverts splitting the oredict entries into their own directory and
moves them back into the recipes folder, as it currently is causing a
couple of issues like not being able to resolve the aliases or is not
working indev. But to keep it seperate it is now its own recipe file.
Fixes#1791
Reverts #1635
This should no longer keep a reference to a World around and potentially
keep them loaded.
Also added a finalize() to CompassRegion to ensure the file is closed on a
GC.
Some cleanup regarding member order, final, etc
Applied English Locale where localization is not expected as in internal recipe handling and IMC handling, basically which interacts with public API where we either require to enforce the incoming text with regex ([a-z0-9]) or just expect proper usage of the API, but with just using upper cases in recipe files it would break in Turkish Locale like
ALIAS
another option would have been to use `equalsIgnoreCase` in some cases, but not all applicable
Some general refactoring of every monitor including panels and terminals.
Disabled glPushAttrib and glPopAttrib for StorageMonitor as this can be a
performance issue.
Conflicts:
src/main/java/appeng/parts/AEBasePart.java
src/main/java/appeng/parts/reporting/PartConversionMonitor.java
src/main/java/appeng/parts/reporting/PartDarkMonitor.java
src/main/java/appeng/parts/reporting/PartMonitor.java
src/main/java/appeng/parts/reporting/PartPatternTerminal.java
src/main/java/appeng/parts/reporting/PartSemiDarkMonitor.java
src/main/java/appeng/parts/reporting/PartStorageMonitor.java
src/main/java/appeng/parts/reporting/PartTerminal.java
Outsources the encoding of the compass data into the file name
Written tests for the encoding
Did some internal cleaning of the class
Conflicts:
src/main/java/appeng/block/solids/BlockSkyStone.java
src/main/java/appeng/core/WorldSettings.java
src/main/java/appeng/core/features/registries/PlayerRegistry.java
src/main/java/appeng/core/sync/network/NetworkHandler.java
src/main/java/appeng/core/worlddata/PlayerMapping.java
src/main/java/appeng/core/worlddata/PlayerMappingsInitializer.java
src/main/java/appeng/services/CompassService.java
src/main/java/appeng/worldgen/MeteoritePlacer.java
src/main/java/appeng/worldgen/MeteoriteWorldGen.java
Split dependency logic on the BuildCraft modules.
Config needs to be reset, if BuildCraft was disabled actively,
because now there are 3 BC modules to be taken account of
Conflicts:
gradle.properties
src/main/java/appeng/facade/FacadeContainer.java
src/main/java/appeng/facade/FacadePart.java
src/main/java/appeng/integration/abstraction/IBC.java
src/main/java/appeng/integration/modules/BC.java
src/main/java/appeng/integration/modules/BCHelpers/BCPipeHandler.java
src/main/java/appeng/integration/modules/BCHelpers/BCPipeInventory.java
src/main/java/appeng/items/tools/ToolNetworkTool.java
src/main/java/appeng/items/tools/quartz/ToolQuartzWrench.java
src/main/java/appeng/parts/CableBusStorage.java
src/main/java/appeng/parts/layers/LayerIPipeConnection.java
src/main/java/appeng/parts/misc/PartStorageBus.java
src/main/java/appeng/parts/p2p/PartP2PItems.java
src/main/java/appeng/util/inv/AdaptorBCPipe.java
src/main/java/appeng/util/inv/WrapperBCPipe.java
Previously it did encode the current and previous used channels into the
same as well as mask it with 0xFF. Which lead to an overflow every 256
gridnodes requiring a channel. This will not happen at > 2^31
Also removes the need to bitshift them for every access.
Fixes#1510
A NPE caused to open CraftGuide very slowly (several seconds)
Added Grinder recipes
Added Inscriber recipes
Conflicts:
src/main/java/appeng/integration/modules/CraftGuide.java
Register an method that can be overidden
Register the same method in the interface
New class that picks the item and displays it to WAILA
Register the new class and call the other class method
Import in PartWailaDataProvider
Fixed errors
Renamed all Display -> Stack
Stuff
Removes the improper way to set itself into a public static non-final variable.
Removes the direct access to the IntegrationRegistry from AppEng. Will be added at some later point somewhere else for non-singleton access.
Constructor is set to package private to enable possible construction from unit tests. Are current not runnable sind it is currently tied to the FML Loader instance.
Every Block had a call to its super, passing its own class.
This can easily be simulated by calling `this.getClass()` in the super class.
Also this was basically only used as using a name.
In the future it might be advisable to not use such methods,
since they are prone to refactoring.
If a feature dependency of ItemMultiMaterial was disabled, the returned value was never assigned with the constructed. Pulling out the construction and setting it before checking it, prevents the NPE and also matches the behaviour in ItemMultiPart, where parts are constructed, but never registered.
Added an additional map to store all parts and be able to access them if needed.
Added public preconditions
Added private asserts
Excluded public overridden methods, since behaviour can be unexpected
Many exceptions got an improvement due to changed class or description or details it is providing.
Is not complete, needs to be done in patches in the regions, where it is needed, since some are just
swallowed.
Removed total usage of pure RuntimeExceptions to 0.
Removes the usage of the old methods, since they were pretty, but not applicable for our use case. The displayed strings are determined by the size of the to be rendered string. Now the algorithm tries to use as much width as possible before trying to trim it down.
Added tests to reflect the changes and expected behaviour. Also using specific interfaces for the corresponding behaviour to shield from potential calls to the underlying enum singleton implementation.
Deprecates the old usage of the AEItemDefinitions via the direct method access of
* blocks()
* parts()
* items()
* materials()
and thus use the new re-direct via definitions().
All definitions are now initialized, no matter what. But SubItems, Items and Blocks are not registered, if by chance are disabled.