Commit graph

29 commits

Author SHA1 Message Date
Juuz
9244241639
Split all duplicated packages (#2617)
* Move duplicated v0/v1 impl packages to v0 subpackages

Fixes #2616. The convention is adopted from the command API (v1)
whose impl classes have the v1 subpackage.

* Separate client code into its own packages everywhere

* Fix code style

* Fix code style, part 2

* Allow v0 in package names

* Allow v0 in package names (fixed)
2022-11-20 13:25:05 +00:00
Technici4n
a1d87cb885
Add AFTER_DEATH and ALLOW_DAMAGE events; generalise ALLOW_DEATH to living entities (#2573)
* Add AFTER_DEATH and ALLOW_DAMAGE events; generalise ALLOW_DEATH to living entities

* Make class final and constructor private

* player -> entity; clarify where ALLOW_DAMAGE is fired

* Also deprecate the old AllowDeath funcint
2022-11-07 18:29:39 +00:00
modmuss50
9ff28f4026
Split client only code into its own sourceset. (#2179)
A common source of crashes on modded Minecraft servers comes from modders accidently calling client only code from the client, this PR is another large step towards elimitating that.

This PR has been months in the making and years in the planning, requiring major changes to Loom & Loader. In recent Minecraft versions Mojang has made it easier than ever to cleanly split the jar, going against the status-quo of merging the client and server into one jar.

From the start we have designed Fabric to have a very clear split between client and common (client & server) code. Fabric has always encoraged keeping client only code seprate from the server, this can be seen at a fundamental level with the entrypoints in Loader. Fabric API's have all been designed with this mind.

This PR provides a compile safety net around Fabric API using client only code on the server. Even though there are almost 400 changed files, minimal changes beyond moving the files were required to achieve this in Fabric API, thanks to the effort of all contributors in the past.

These changes should not affect modders or players in anyway, a single "universal" jar is still produced. Im happy to awnswer any questions.
2022-05-21 16:26:46 +01:00
Player
f71b366fb1
Update command registration API to reflect 1.19 vanilla changes (#2227)
* Update command registration API to reflect vanilla changes

* Allow module versions in impl+mixin packages

* Use v2 module, keeping v1 for server commands at least

* update, address review

Co-authored-by: modmuss50 <modmuss50@gmail.com>
2022-05-20 18:39:10 +01:00
modmuss50
55043e695a 1.19-pre1 2022-05-18 19:16:52 +01:00
Player
729842f055 22w18a 2022-05-04 21:56:29 +02:00
apple502j
aa505e0b00
Remove BedBlockMixin (#2166) 2022-05-01 15:44:01 +01:00
modmuss50
ec94c6f636
22w16b
Co-authored-by: Player <player@player.to>
2022-04-20 22:22:10 +01:00
modmuss50
09a7afff2f 22w13a 2022-03-31 18:38:32 +01:00
modmuss50
a67d2aa505 22w12a 2022-03-24 20:18:23 +00:00
modmuss50
d7c144a830
Migrate to SLF4j and update loom (#1960)
* Migrate to SLF4j and update loom

* Update loom

* Update to latest loom
2022-01-30 21:37:23 +00:00
TropheusJ
fb54d297bc
workaround mixin agent not correctly handling mixins in subpackages declared using '/' 2022-01-30 18:58:37 +00:00
Technici4n
6b21378a26 Add AllowElytraFlight event (#1815)
Use explicit casts instead of .class.cast in mixins

Reorganize API class, and make it work for any living entity

add LivingEntityFeatureRenderEvents to disable cape rendering

Reorganize/rename hook, and add ALLOW event

Fix missing mixin return & cosmetic adjustements
2021-11-23 17:26:51 +00:00
Player
3ac43d9577 Revert Mixin compatibilityLevel bump, bump versions 2021-11-17 03:29:11 +01:00
modmuss50
e77d3ea62f 1.18-pre2 & Java 17 2021-11-16 18:41:10 +00:00
modmuss50
e14f9c8f05 21w44a 2021-11-03 18:57:29 +00:00
modmuss50
938d6de077 21w42a 2021-10-20 21:31:17 +01:00
Juuxel
86675b35dc Add two more sleep events (#1755)
* Add event for setting bed occupation state

* Add wake up pos event and update tests

* Bump version

Just in case. I have a bad feeling that
this could become a patch version otherwise.

* Add code tags for true/false/null in EntitySleepEvents jd

* Add Dynamic annotations for lambda body mixins

* Update class javadoc to contain the new events
2021-10-17 19:15:37 +01:00
modmuss50
5553aff888 21w37a: Compile pass 2021-09-17 18:42:42 +01:00
Juuxel
87cc6e4c30
Sleeping event fixes (#1681)
* Un-hardcode FACING property checks from only BedBlocks

* Use a better injection point for EntitySleepEvents.ALLOW_BED

* Fix #1680

* Bump entity events version

* Clarify javadoc

* Let's not forget license headers

* Add a note about the vanilla bug

* Update BedBlockMixin.java
2021-08-31 13:59:48 +01:00
modmuss50
62e33f4127 Fix dedicated dev server crash #1670 2021-08-25 20:05:23 +01:00
modmuss50
077fc48468 Work around shadowed fields from super classes not getting remapped... dejavu anyone?
See: 2e359e933a (diff-0956caa3cd38a54f5910979f0cfd98198a93e4d585e111300f2f7ab7301ad122)
2021-08-24 21:49:05 +01:00
Juuxel
8a9f12e01d
Add sleeping events (#1633)
* Add sleeping events

* Fix wake up event triggering on every wakeUp() call

* Make direction modifications stackable

* Simplify by not using Optional in MODIFY_SLEEPING_DIRECTION

* Add two new events

* Let's call it VERIFY_BED

* And it's ALLOW_BED now

* Add the rest of the events

* Clarify docs

* Expand docs, add missing vanillaResult

* WAKE_UP -> STOP_SLEEPING, javadoc

* Make sleepingPos checks more consistent in LivingEntityMixin
2021-08-24 17:44:12 +01:00
modmuss50
a02b4463f9 21w19a 2021-05-12 20:23:04 +01:00
William Bradford Larcombe
6e4bae3683 Add ServerPlayerEvents.ALLOW_DEATH event (#1394)
Co-authored-by: NinjaPhenix <5214513+NinjaPhenix@users.noreply.github.com>
Co-authored-by: liach <7806504+liach@users.noreply.github.com>
2021-05-01 23:24:14 +02:00
i509VCB
f8cf2bb436 Add custom value denoting module lifecycles. (#1253)
* Add custom value denoting module lifecycles.

* Make the module validation work.

My hand has been forced - we must use buildSrc since JsonSlurper is not available in main buildscript.

* Apply task to each project and dont cross projects

* A horrible hack

* Wait what

* It works now.

* Not needed

* Drop unneeded maven repo, cache map lookup

(cherry picked from commit daa38b3d82)
2021-01-19 18:54:23 +00:00
Mitchell Skaggs
42e2b8f61c Fix nether portal crash (#1256)
* Correct ordinal of `afterWorldChanged` mixin to the correct return

Co-authored-by: i509VCB <git@i509.me>

* Handle null entity when unable to be created

* Comply with Checkstyle

* Remove redundant ordinal and only use null return to check valid teleports

Co-authored-by: Player <player@player.to>

Co-authored-by: i509VCB <git@i509.me>
Co-authored-by: Player <player@player.to>
(cherry picked from commit c7d5c83208)
2021-01-03 16:33:22 +00:00
i509VCB
2e359e933a Workaround for shadowed fields from supermixins do not remap. (#1251)
(cherry picked from commit 49c073f9a3)
2021-01-01 14:49:02 +00:00
i509VCB
1d561d2678 Entity Events v1 (#957)
* Entity Events v1.

First up is an event fired after a living entity is damaged. All vanilla living entities except armor stands work with this event.

* Events related to killing of entities, changing world, player respawn/copyFrom

Death related:
an entity killing something and an entity being killed by an adversary

Player related:
After respawn, copy to

* Adversary stuff isn't needed

* checkstyle again

* Call AFTER_KILLED_OTHER on a ServerPlayerEntity upon death.

* Add event which is fired when a player first joined a server and add functional interface annotations

* Update build.gradle

* mispelled

* Some renames, test events, drop damage event

Damage events need further consideration in future

* Comments and null check

* Update for mappings

* Warning comment

* Remove first join event and teleport helper

First join does not work atm and teleport is in dimensions pr

* Module dependencies

* Javadoc tweaks

* The serverening

(cherry picked from commit 79b23bee5b)
2020-12-30 17:10:56 +00:00