100 Commits
Author SHA1 Message Date
Gabriel Harris-Rouquette f3e072b10e fix: Disable macos and java 8 and 16 as unsupported
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2024-05-12 22:04:14 -07:00
Gabriel Harris-Rouquette 5192fb56ed fix: Attempt to update workflows to build 1.16.5
Workflow actions tend to get outdated after we end suuport.

Fixes #4007

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2024-05-12 21:56:04 -07:00
Gabriel Harris-Rouquette 13af9aa65b fix: Downgrade ServerPlayerGameModeMixin_Tracker
The priority here isn't particularly important, we can allow ourselves
to overwrite early and still allow some injections from others take
place.

Fixes #4007

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2024-05-12 21:56:04 -07:00
Gabriel Harris-Rouquette 9672b294fc Merge pull request #3935 from MrHell228/api-8-fix
Fix anvil rename warnings (api8)
2024-01-16 14:48:49 +01:00
Gabriel Harris-Rouquette 5e56133f34 Bump to version 8.3.0-SNAPSHOT
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2023-09-02 14:57:25 -07:00
Gabriel Harris-Rouquette c7821cff6f Release SpongeAPI 8.2.0
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2023-09-02 14:52:28 -07:00
Gabriel Harris-Rouquette f11e88f118 Merge set biome fixes. Merges #3764
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-10-05 19:33:16 +02:00
Gabriel Harris-Rouquette 481b472263 Merge leash fix. Merges #3766.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-10-05 19:23:15 +02:00
Gabriel Harris-Rouquette 47d863402e Fix class-retention annotations causing errors. Fixes #3674
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-05-02 20:37:15 +07:00
Gabriel Harris-Rouquette d89fe985a4 Add EntityType/Archetype retrieval for SpawnEggs
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-04-15 17:57:44 -07:00
Gabriel Harris-Rouquette 2df9d04ee5 Merge pull request #3652 from SpongePowered/api8/workaround-mixin-generics
Workaround Mixin Generic issues with ATM6
2022-03-19 16:02:01 -07:00
Gabriel Harris-Rouquette 9e1fbae1ed Workaround Mixin generics. Fixes #3647
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-03-19 14:02:29 -07:00
Gabriel Harris-Rouquette 5c27896c3e Remove Graph utils now moved to collections
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-03-19 12:54:45 -07:00
Gabriel Harris-Rouquette 671bb14209 Merge pull request #3629 from SpongePowered/api8/superclass-transformer
Re-introduce Superclass Transformer
2022-02-25 00:37:36 -05:00
Gabriel Harris-Rouquette c43b095c95 Reintroduce Superclass Transformations
Properly reintroduces superclass transformers with
ModLauncher's ITransformer api. There are some quirks with
needing to accept transforming classes multiple times based
on voting contexts. This functions as expected in both
development and production cases from limited testing.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-25 00:25:51 -05:00
Gabriel Harris-Rouquette ad2af478d7 Add modlauncher-transformers project
A general purpose project to enable SpongeForge and SpongeVanilla
to ship and share the same transformers thereby reducing code
duplication.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-25 00:25:51 -05:00
Gabriel Harris-Rouquette d03a4dfd32 Allow getting named configurations from projects
Expanding on the existing getMixinConfiguration, we can enable querying
for potentially parented configurations from child projects.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-24 20:48:25 -05:00
Gabriel Harris-Rouquette e16cc9f11e Merge pull request #3635 from SpongePowered/api8/goal-type-registration-fix
Delay GoalType lookups until appropriate times
2022-02-23 22:20:20 -05:00
Gabriel Harris-Rouquette 15e194aee4 Merge pull request #3634 from SpongePowered/api8/mekanism-workaround
Mekanism workaround Fixes #3631
2022-02-17 07:11:56 -08:00
Gabriel Harris-Rouquette aae55759f1 Avoid early registration attempts of GoalTypes
Some mods aren't aware of lifecycle restrictions/assumptions and
occasionally, Sponge's own regsitry types aren't handled early enough
before mods can trigger Mixin injected registry interactive code.
Working around this results in using Suppliers as a means of delaying
registry lookups until a more appropriate time when plugins are making
use of API calls. This should be a sufficient workaround for
fixing #3630.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-17 00:50:21 -08:00
Gabriel Harris-Rouquette 5f7b4c58ad Null check world on entity creation. Fixes #3631.
It's not always clear but some cases should be null checked to avoid
NPE's.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-17 00:39:15 -08:00
Gabriel Harris-Rouquette ee6029fcc6 Update ExpireEntityEvent implementations
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-12 12:03:06 -08:00
Gabriel Harris-Rouquette 800c32eb4b Merge pull request #3624 from SpongePowered/api8/forge-world-hooks
Add ForgeWorldHooks
2022-02-08 21:58:54 -08:00
Gabriel Harris-Rouquette 6528a1e2cc Fix handling for missing local variable signatures
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-08 21:23:32 -08:00
Gabriel Harris-Rouquette 84a2bebfc7 Add ForgeWorldHooks. Fixes #3588.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 23:18:04 -08:00
Gabriel Harris-Rouquette ca451fcbe4 Fix another factory classloading too early
Some of our factory code needs to be able to reference static types,
but occasionally that will class-load too early.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 20:48:55 -08:00
Gabriel Harris-Rouquette 78f8fdf4d9 Fix wild carded parameterized types
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 20:47:10 -08:00
Gabriel Harris-Rouquette 17734608ad Attempt to defer classloading DimensionTypes too early. Fixes #3614
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 20:24:06 -08:00
Gabriel Harris-Rouquette 5368fe26b3 Remove unused legacy Invoker factory
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 18:05:19 -08:00
Gabriel Harris-Rouquette 5506503ca3 ASMify SpongeEventManager
This was brutal awakening of how much reflection is relied on to create all sorts
of classes. Fortunately, the brunt of the changes are to do with figuring out how
to use ASM visitors to do the discovery work. It is now unit tested to ensure
classes that can be triggered with reflection for failure, will not fail.
An advantage of this is now we are assured the only class loading failures would
be breaking changes to our own API classes.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-07 18:01:16 -08:00
Gabriel Harris-Rouquette 05b97c3dbe ASMify ReflectionUtil
The end goal is to replace usage of Java Reflection API that can be prone
to classloading exceptions/errors that end up crashing or throwing errors.
The major problem with reflection is the lack of clear control over
ClassLoaders and their ability to throw any arbitrary error. In retrospect,
we can now safely scan entire classes for specific methods that we care
about without triggering these classes to be loaded. Likewise, as a test,
we can assure that a defined class with an impossible to use method will
still be correctly covered for our purposes.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-06 08:24:10 -08:00
Gabriel Harris-Rouquette 2c8627711a Wrap around event listener registration
Avoids game crashes for seemingly client sided methods.
Client sided methods can be included in class bytecode, but
ultimately it's up to the developer to exclude it properly. In our case,
we don't have control over it normally, so we'll have to expect any
client side code to trigger some RuntimeExceptions.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-02-06 08:24:10 -08:00
Gabriel Harris-Rouquette a080c6c932 Push potion effects onto the cause frame when ticking
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-31 22:48:54 -08:00
Gabriel Harris-Rouquette 0e770d3315 Enable and implement Keys.HEALTH value change events
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-31 22:48:54 -08:00
Gabriel Harris-Rouquette 888271db7e Re-add implementation for DataParameter events
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-30 13:24:03 -08:00
Gabriel Harris-Rouquette bf5f2da0f3 Lower priority overwrite for LivingEntity.hurt. Fixes #3603
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-26 23:33:24 -08:00
Gabriel Harris-Rouquette 4dbaaa27fb Schedule world unloads. Fixes #3585
This workaround does two things:
- Schedules world unloading onto the MinecraftServer's
  Server Thread executor to enforce a uniform threaded
  access and avoid possible race conditions with asynchronous tasks
  causing a deadlock on worlds attempting to schedule new tasks
- Adds a safety net to PoiManager.add to avoid scheduling new files
  to be read while the world itself is already unloaded.

This should resolve the issue well enough, but there might be other
corner cases of scheduled tasks that could trigger a similar issue.
2022-01-23 20:01:20 -08:00
Gabriel Harris-Rouquette 7f5bce3ab1 Fix license
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-23 17:07:51 -08:00
Gabriel Harris-Rouquette 89138a56f8 Fix growth phase construction. Fixes #3592.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-23 16:41:50 -08:00
Gabriel Harris-Rouquette d510441af8 failed at adding thigns to changes
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-13 23:29:16 -08:00
Gabriel Harris-Rouquette fc08761ec3 Licenses
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-13 22:15:26 -08:00
Gabriel Harris-Rouquette f2db0bad9c Remove commented out code in several places. Move Player#attack overwrite to a lower priority
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-13 22:04:58 -08:00
Gabriel Harris-Rouquette 9cfc456327 Update Player.attack overwrite with Forge specific hooks 2022-01-09 14:52:15 -08:00
Gabriel Harris-Rouquette 58fe5c2277 Merge pull request #3579 from Lignium/fix/update-lighting-flag
Disable lighting updates when using BlockChangeFlags#NONE
2022-01-08 22:25:58 -08:00
Gabriel Harris-Rouquette c70f9a159d Fix build-logic API version assignment
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-08 13:53:07 -08:00
Gabriel Harris-Rouquette 533f0587b0 Implement VanishState 2022-01-07 22:53:47 -08:00
Gabriel Harris-Rouquette fe2b7e6268 Include SV libraries json as cache key for PRs 2022-01-07 22:52:35 -08:00
Gabriel Harris-Rouquette dae44530eb Use SpongeVanilla's libraries.json as a cache key
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-07 01:19:27 -08:00
Gabriel Harris-Rouquette 2279265741 Remove remaining Animation static fields 2022-01-07 00:23:21 -08:00
Gabriel Harris-Rouquette 3ddfdb2b01 Re-implement some music events 2022-01-07 00:10:31 -08:00
Gabriel Harris-Rouquette 24131987af Wrap sapling growth in Growing phase
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-03 21:26:34 -08:00
Gabriel Harris-Rouquette 3f20851ae0 Implement ConduitData 2022-01-03 21:15:47 -08:00
Gabriel Harris-Rouquette 5522a82375 Really fix vanish. Someone left a sneaky todo
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2022-01-01 15:32:25 -08:00
Gabriel Harris-Rouquette fb933b3a0c Implement spawning players while vanished
This actively prevents notifying other players on a player logging in
if the player itself is vanished. Likewise prevents a player logging
in knowing that another player is vanished.
2022-01-01 13:13:45 -08:00
Gabriel Harris-Rouquette e232f3e048 Uncomment and add VanishTest plugin 2021-12-31 10:59:00 -08:00
Gabriel Harris-Rouquette 05ca29d249 Backport singleplayer fix for IntegratedServer 2021-12-31 09:47:46 -08:00
Gabriel Harris-Rouquette 27b2c14d99 Uncomment and reimplement some portions of EntityMixin 2021-12-31 01:43:20 -08:00
Gabriel Harris-Rouquette e469d79805 Fixes for some DamageSource API
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-12-30 23:37:03 -08:00
Gabriel Harris-Rouquette b705b641b0 Merge pull request #3550 from SpongePowered/feature/git-manifests
Add Git details to jar manifests
2021-11-25 14:42:53 -08:00
Gabriel Harris-Rouquette 3de179c18e Add Git details to jar manifests
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-10-24 22:21:12 -07:00
Gabriel Harris-Rouquette f61d258f9d Add EntityCategory to API
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-09-15 08:54:46 -07:00
Gabriel Harris-Rouquette 55570ff1cf Forge moves itemstack.mine before breaking the block. Fixes #3516
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-09-10 23:23:15 -07:00
Gabriel Harris-Rouquette e686d7deed Encapsulate and defer initialization of snapshots
Transactions can now have some lazy initialization by virtue of the
StatefulTransaction. Slowly the transaction can be lazily initialized
with at-least-requirements to be potentially absorbed by a parent
transaction, but not completely empty of data that the deferral renders
data to be unusable. The end goal of a recorded transaction is that it
knows its final state so-long-as it has populated any of it's non-final
fields.

Some inventory transactions intrinsically do not have the luxury of
deferred initialization and instead must await for future transactions
to be accepted down the line.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 950db98b9d Expand usage of reverse child iterators
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 6006c206c7 Migrate the remaining inventory transactions
Now the moat has been built around the inventory transactions being
captured or absorbed. The remaining pieces of logging can now be
properly handled.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 29f8e5b0c6 Migrate SetPlayerContainerTransaction
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 98e3745acd Clean up handling of parent absorbers
Instead of having a pair of two functions, this can be better
represented as a semi-pure function that can be provided as an override.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 2d4fc75d5a Improve "should've absorbed" handling for slots
There's a caveat that you cannot compare lambdas, but you can compare
fields that are themselves functions...

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 05952374fc Introduce proper GameTransaction iterators
Unit tested iteration ordering and processing, both in isolation and
with the TransactionalCaptureSupplier in play. The benefit of these
iterators is the guarantee now by contract as to "how" the transactions
are iterated through when attempting to merge/absorb a transaction into
any existing effects/transactions.

There's a huge speed boost for noisy transactions with
TransactionFlow.canBeAbsorbed, which enables some fail-fast and iterator
avoidance for most cases.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 2656374f74 Add BroadcastInventoryChangesEffect
General purpose effect for broadcasting inventory changes.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 69997a2701 Refactor out world reference in GameTransaction
GameTransaction can now be used as the super class for a broadening
hierarchy of transaction types. Case in point, the MenuBasedTransaction
cleanly applies the hierarchy of all AbstractContainerMenu known
transactions. This takes more steps to cleaning up the "checks" around
inventory collecting for slot transactions.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette a17331369d Move Transactional business logic to interfaces
The goal with this commit is to better organize the different behaviors
of GameTransactions that now exist and likely will increase as more is
refactored/cleaned up. The ultimate goal of this piece is to better
improve the inventory transaction management and have a less brittle
nature to their recording and sanity.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 95d0081cb9 Fix incorrect injection point
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 9ef3eaed7e Remove dead code in TransactionalCaptureSupplier
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette d6a67bec62 Call broadcastChanges on slot restoration
While the slot packets were being sent, the container's changes were not
being "updated" which results in the restored changes being re-sent and
re-transacted in the player's next tick.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette fe7c35ab95 Correctly use hotbar inventory and not equipment
This was causing some awkward event creation where hotbar indexes were
not resulting in correct slots being used for the event. This now
correctly provides the right slot for usage.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 9d8a471d9a Properly record Menu opening
Menus are being created and then set on the player after the player is
added as a container listener. This unfortunately means that we have to
record the transaction for the player, then after the menu is being set,
record the new container on the specific transaction.
This is a tad brittle in the sense that we're not always sure that an
OpenInventory is being performed (since the container menu can be null),
but the resulting effect makes for an empty event optional, which turns
into a no-operation during processing.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 0b5c3ab4d3 Always log accidental spawn records
Many of these inventory states do not expressly allow for entities to be
captured, but the corner case that an erroneous call from a transaction
in these particular states will result in a warning log. The
ramifications of the records are nil for gameplay, but mean that the
entities spawned may not have an event thrown, and therefor plugins may
not be aware of them.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 627e32d5f3 Clean up unnecessary overrides of unwind.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 8be0f7761f Clean up PacketContext.hasCaptures
Eliminates the public usage of PacketPhase.Inventory states
throughout without reducing utility. A majority of the checks were due
to the legacy capture slot transactions needing to be processable,
but with transactions being near-fully implemented with the transactor
system, it's irrelevant now.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 5c078176f4 Always broadcast changes on the end of any Packet
This avoids some persistence cases where a variety of slot changes ends
up being sent to the client in the next tick, losing any sort of cause
relation for the desired events. This has the side effect that we're now
always transacting inventory events if and only if the inventory has any
changes actually necessary.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 4dabaf0cb9 Pass nullable parent for "first" transaction.
There isn't any case where we want the first transaction of a tree to be
considered the parent transaction. This fixes a minor behavior of
cancelling a block change potentially cancelling other transactions that
otherwise would've been expected to be unaffected.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette c081ea9cbd Eliminate check casts for ServerPlayer Inventory
A lot of these mixins were somewhat instanceof checking a lot of
behaviors. They can now be correctly defined with their proper hierarchy
retained, without the naming mistake.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 3bdc2266dd Add EntityBridge.bridge$isPlayerTouchDeclared()
Basically, avoid spamming the amount of transactions that lead to empty
results.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 93cc78d53c Avoid a redirect if possible
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 972aab979b Only selectively restore tile entities for snapshots
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette d67c5fcd6d wip some changes to clean up old references
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette a1fac262a7 Clean up legacy code now that we use transactions
A lot of the old restoring inventory behavior is replaced by restoring
in transactions. Also, the API contract is now correctly followed,
cancelling DropItemEvent.Pre does not roll back the inventory
transactions.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 2d2e5f46d4 Dropping items outside of windows should capture
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 6f933c73dd Return true capturing entity in ContainerTransaction
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:36 +02:00
Gabriel Harris-Rouquette 6bce214a5d Allow container transactions to capture entities
Based on the PhaseState, it can be possible to have entities that are
captured in the transaction itself. The key with this will be handling
the entities spawned and likewise, the restoration/purging of the
entities if the transaction is individually cancelled.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:35 +02:00
Gabriel Harris-Rouquette 47433291cc Correct redirect pointer for lambda placing recipe
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:35 +02:00
Gabriel Harris-Rouquette 7e362a8342 Register transaction types for internal tracker
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:35 +02:00
Gabriel Harris-Rouquette 9eb5648b1a Implement attemptWorldKey for ticking states
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:09:35 +02:00
Gabriel Harris-Rouquette 928f7c3b2a Pass Cause through Inventory event creation
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:07:23 +02:00
Gabriel Harris-Rouquette d6d393bd1f Start migrating inventory logging to transactions
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-08-23 17:07:23 +02:00
Gabriel Harris-Rouquette b4367ac284 Don't initialize ItemStack on DispenserBlock
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-07-27 22:07:59 -07:00
Gabriel Harris-Rouquette 9e4bcb7029 Apply Transformations on ArchetypeVolumes
This presents the required objects to perform positional transformations
on all entities/blocks/etc. within a Volume. The key with these changes
is that certain objects have requirements to perform "rotations" and
"mirroring" as a middle step. This is all built to support that out of
the box using the new Transformation API.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-07-21 00:02:10 -07:00
Gabriel Harris-Rouquette 259dfa8dda Convert VolumeStream to use Vector3d's
There's effectively a problem with positions of blocks, they're
technically considered the corners of a dotted world, and since
transformations are performed on the double accuracy positioning, we
want to be able to retain those positions as much as possible throughout
however many transformations on a volume are made.

This is mostly to support the ability to rotate and mirror volumes in
their entirety. The implementations are already semi-functional, pending
 some off by one errors to be found and fixed.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-07-20 23:29:54 -07:00
Gabriel Harris-Rouquette ae44b07b64 Remove some VolumePositionTranslators
The class is getting overhauled as it's being evaluated.

Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
2021-07-20 23:29:54 -07:00