Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Require Paper and stip legacy code #119

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft

Require Paper and stip legacy code #119

wants to merge 8 commits into from

Conversation

Techcable
Copy link
Member

@Techcable Techcable commented Jun 10, 2020

From now on Paper will be a hard requirement.

I'm requiring Paper for three reasons:

  1. The software itself is more stable. It is inherently less prone to bugs
  2. I'm already a Paper contributor and I'm more comfortable with their community
  3. I intend to start adding new APIs to Paper that I will use inside SonarPet
    • I want to minimize

I'm slowly dropping support for legacy Minecraft versions. Minecraft has gone through radical internal changes between all the versions SonarPet supported. The transition from 1.8.8 was especially hard. The plugin already bends over backward to achieve compatibility with 1.8.8. There are unacceptable hacks all over the place.

I've already dropped support for 1.8, 1.9, 1.10, and 1.11. More radical changes will come soon.
I've already removed the NMS modules but there's still plenty of compatibility code left over.
Right now this is basically working off of my attempt (from two years ago) to update to 1.13. I now intend to try and update it to 1.15. There have been massive changes to the Minecraft codebase so this may take a while.

SonarPet will be completely free from now on, and I will no longer offer paid support.
SonarPet was previously released as a paid resource on Spigot (with a portion of all revenue going to the old authors). After a couple of versions of updates and support, I suddenly died without any funeral. Don't give me too hard a time: My code was still better than 99.9% of all other paid plugins.

The project is still officially unmaintained and I'm still officially dead. Please do not conduct a seance. Any activity you see here is a hallucination and should be treated as such.

This is a massive update, chaning a ton of internals.
It broke a ton of obfuscated names, the entity registry system,
and ruined my nice API for spawn eggs.
It's been a while since , so I'm already jumping

Now that , I have to have a class .
I call but it's horribly broken because Material.valueOf doesn't work.
I fear this is some sort of bizarre classpath issue,
which I do **not** want to deal with right now.

I've put over 4.5 hours into this single commit and
I'm ready to call it a day.
This update still isn't complete and won't even load.
The alpha probably will break your config files,
alhtough your databases are probably safe.

Bukkit has pretty much dropped support for integer block ids.
If that's not enough, they've written a compelex bytecode rewriting
backwards compatibility system which
screws with my attempt to support 1.13.
I can use reflection to bypass it, but it's still kind of clumsy.

The new bukkit API for dealing with `BlockData` is great,
but the `ItemMeta` API is still lagging way behind.
I'm going to have to rewrite and expand the `ItemData` system
in order to abstract around these differences.
I also intend to write a new `BlockData` API,
which will abstract over the differences between versions
(so I don't have to use reflection).

For 1.13 compatibility, we must finally stop using
all block and item ids.
However, we must do this without using any of
Bukkit's new APIs (for 1.12 compat).
The only solution I can come up with is rerouting all item manipulation
and access through my new `ItemData` and `BlockData` APIs.
Eventually this will make things simpler, but for now....
…o item data APIs

This was my attempt - essentially requires rewriting the entire bukkit API from scratch
then abstracting over the differences between different (incompatible) versions.........
Clearly legacy version support is a dead-end!!!!!
…ions

The project is still officially unmaintained and I'm still officially dead.
Please ignore my activity. It is a hallucination

I'm requiring Paper for three reasons:
1. The software itself is more stable. It is inherently less prone to bugs
2. I'm already a Paper contributor and I'm more comfortable with their community
3. I intend to start adding new APIs to Paper that I will use inside SonarPet

I'm releasing all my changes to this project under the MIT license (retroactively). Generally speaking,
I find the GPL distaseful. Users still must comply with the terms of
the GPL when using the plugin as a whole because we still use DSH105's original code.
However they may freely copy any of my changes into their own projects,
including my NPC code and my bizzare set of utilities and abstractions. If it's in kotlin
or under my package name it's probably my code (although it could be a different contributor).
I may decide to a couple older versions for a while. This code is currently
undergoing crazy insane change.

This breaks everything - we don't compile at all.
The main problem is our plugin dependencies - lots of maven repos
have moved or become inactive. My personal repo at repo.techcable.net no longer
works - which had much of the stuff I need to build SonarPets........

Update guava to an actually modern version (21.0 instead of 17.0).
We don't care about compat with 1.8.8 anymore.
Update gradle to v6.4
Update ProtocolLib to 4.5.0 (why cant gradle find this)?
Remove some associated compatibility code (but not all of it).
I'm kind of just deleting at random and hoping I hit something good :D
What was I thinking with 1.8.8 support?????
@Techcable Techcable self-assigned this Jun 10, 2020
@Techcable
Copy link
Member Author

Also the Minecraft 1.13 update basically completely rewrote the material system.

My attempts to abstract around this nonsense is what initially lead me to stop supporting this update. Essentially I would have to use reflection anytime I accessed materials, attempting to emulate the 1.13 material system on older versions of minecraft.

Expect 1.12 support to be dropped

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant