Commit Graph

2938 Commits

Author SHA1 Message Date
KennyTV
48436e7caf
Go through the rest of the send usages 2021-06-01 23:27:33 +02:00
KennyTV
eaa58affd1
Minor changes 2021-06-01 22:52:05 +02:00
KennyTV
57cf1803f3
Fix 1.9 block entity data send 2021-06-01 19:36:25 +02:00
KennyTV
104fa4e29f
Optimize protocol path finding
Not perfect, but better. This prevents the path checks from exponentially increasing (if it weren't for the maxProtocolPathSize fail safe).

By default, a path will never go to a protocol version that puts it farther from the desired server protocol version, even if a path existed.
Otherwise as well as previously, *all* possible paths will be checked until a fitting one is found.

Negative examples if the new boolean is set to true:
    A possible path from 3 to 5 in order of 3->10->5 will be dismissed.
    A possible path from 5 to 3 in order of 5->0->3 will be dismissed.

Negative examples if set to false:
    While searching for a path from 3 to 5, 3->2->1 could be checked first before 3->4->5 is found.
    While searching for a path from 5 to 3, 5->6->7 could be checked first before 5->4->3 is found.

Assuming custom platforms like Bedrock protocol use the normal registering methods, they will have to change the boolean to false to revert to previous behavior (tho still somewhat better optimized).
2021-06-01 18:54:36 +02:00
KennyTV
4011aee280
1.17-pre3 2021-06-01 18:10:53 +02:00
KennyTV
37fd69fa86
Make packet send methods use the current thread by default
Defaulting to submitting to the netty event loop caused issues more often than not - this also removes the `currentThread` flag and instead provides new scheduleSend methods so it is always obvious whether the packet is sent immediately.
2021-06-01 10:13:49 +02:00
KennyTV
3fb125592b
Send entity destroy on current thread 2021-05-31 20:45:56 +02:00
KennyTV
7925fd2d8f
Fix shulker meta handling 2021-05-31 20:17:43 +02:00
KennyTV
199324ee9d
1.17-pre2 2021-05-31 18:21:31 +02:00
KennyTV
d5cac99b5f
Reorder Type instances 2021-05-31 11:51:21 +02:00
KennyTV
3618914ce9
Add method to get Protocol by supported versions, some cleanup 2021-05-29 22:21:29 +02:00
KennyTV
ff140c421a
Add/change comments 2021-05-29 11:50:07 +02:00
RK_01
016b8f1dbc
Correct ClientboundPackets1_9_3 packetid comments (#2503) 2021-05-29 09:34:24 +02:00
KennyTV
0d31054903
Fix view distance update packet in 1.13->1.14
The client world is initialized during the join packet, but the view distance packet was created during/before the join handling.
Fixes #2502
2021-05-28 10:02:26 +02:00
KennyTV
8beedffea2
Fix project root build/libs dir not being cleaned
The base plugin is usually applied by the java plugin, but since that has been moved into the platforms, cleaning was no longer applied to the root dir (created and filled by the universal submodule).
2021-05-27 23:56:31 +02:00
RK_01
4ef862e06d
Correct packet id comment (#2501) 2021-05-27 15:42:51 +02:00
KennyTV
53642e9a3c
1.17-pre1 2021-05-27 15:36:53 +02:00
KennyTV
fd9dab8aa1
Replace inventory ack by using 1.17 ping packets 2021-05-26 21:36:20 +02:00
KennyTV
703978e227
Don't require UserConnection holding class in stored objects 2021-05-26 21:35:28 +02:00
KennyTV
7195319eb5
Update adventure 2021-05-26 16:37:29 +02:00
KennyTV
2d0a597f74
Make Metadata fully type safe, remove "Discontinued" meta types
The Discontinued entry was a special edge case that could lead to a Metadata type returning null. Instead, just directly use null in the 1.8->1.9 code where it is checked against. Also renamed the Meta1_17Types entries to be in uppercase and properly represent their value type.
2021-05-26 16:36:47 +02:00
KennyTV
bc89f57088
Slightly improve metadata iteration, remove redundant MetaHandlerEvent index
Lazily create the event if needed and share it with other filters when handling a metadata entry. Lastly, only add the additionally created meta once after the filter list, not once per filter.
2021-05-26 09:00:49 +02:00
KennyTV
57769c5671
Make metadata (almost) fail-safe
This could mean life and death, see
`new Metadata(17, MetaType1_14.Float, event.meta()).value()`
vs.
`new Metadata(17, MetaType1_14.Float, event.meta().value())`
2021-05-25 16:27:55 +02:00
LemonCaramel
a6b4b16fd3
Add Missing Translation Mapping (#2484) 2021-05-25 16:27:19 +02:00
KennyTV
3a1e364d4a
Refactor entity tracking and meta handling
This essentially merges the two approaches to the metadata handling from ViaVersion and ViaBackwards and improves on both designs.

ViaVersion did not track every single entity, but only those needed (at least in theory) and can work with untracked entities' metadata. It had a very simple method overridden by metadata rewriter implementations, directly operating on the full metadata list and manually handling meta index changes as well as item/block/particle id changes.

ViaBackwards on the other hand had to track *every single* entity and threw warnings otherwise - while less prone to errors due to giving obvious warnings in the console, it unnecessarily tracks a lot of entities, and those warnings also annoys users when encountering virtual entity plugins (operating asynchronously and sending update packets while already untracked or not yet tracked). Dedicated MetaHandlers made id changes and filtering a lot easier to read and write. However, the actual metadata list handling and its distribution to handlers was not very well implemented and required a lot of list copying and creation as well as exception throws to cancel individual metadata entries.

This version has MetaFilters built with a Builder containing multiple helper functions, and the entity tracking is properly given its own map, hashed by a Protocol's class, to be easily and generically accessible from anywhere with only a Protocol class from the UserConnection, along with more optimized metadata list iteration. The entity tracking is largely unchanged, keeping ViaVersion's approach to not having to track *all* entities (and being able to handle null types in meta handlers).

All of this is by no means absolutely perfect, but is much less prone to errors than both previous systems and takes a lot less effort to actually write. A last possible change would be to use a primitive int to object map that is built to be concurrency save for the EntityTracker, tho that would have to be chosen carefully.
2021-05-25 15:37:07 +02:00
Jason
03638028cd
Make proper sources jar (#2495) 2021-05-25 09:44:57 +02:00
jmp
d5f56784e2 Silence doclint 2021-05-25 09:07:06 +02:00
jmp
cbf71e2289 Only add javadoc jar to common and api 2021-05-25 09:07:06 +02:00
jmp
e2d9e44be3 Build script improvements 2021-05-25 09:07:06 +02:00
KennyTV
2d2a5fa79c
Fill "needs tool" tags
Fixes #2493
2021-05-24 09:21:32 +02:00
RK_01
605331963d
Fix typo in DumpSubCmd (#2492) 2021-05-23 19:42:01 +02:00
KennyTV
15a5d51248
Don't cast ChannelInitializer type to SocketChannel 2021-05-22 19:41:07 +02:00
KennyTV
8bcd8fd995
Add apiVersion to ViaAPI, some jd 2021-05-22 19:39:26 +02:00
Kamillaova
9484526d39
Fix README build command (gradlew) (#2489) 2021-05-22 13:37:53 +02:00
KennyTV
ab1cc791b7
Fix enchantment parsing or lvl integers 2021-05-21 09:17:40 +02:00
KennyTV
1fe76dbb77
Add more jd to Chunk, ChunkSection, and ChunkSectionLight 2021-05-20 19:23:29 +02:00
KennyTV
cf2adab728
Make ChunkSection an interface, don't allocate light arrays if not needed 2021-05-20 18:32:28 +02:00
KennyTV
04fedd2892
Add comments 2021-05-20 16:56:39 +02:00
KennyTV
c172091944
21w20a 2021-05-19 18:54:38 +02:00
creeper123123321
16ba5aa4f9
Run some optipng (#2482) 2021-05-18 20:46:35 +02:00
KennyTV
5fa2c788e0
Add missing mineable tag entries
Fixes #2481
2021-05-18 17:07:57 +02:00
creeper123123321
c5a338137e
Update fabric.mod.json (#2480) 2021-05-18 13:49:58 +02:00
KennyTV
01d79e2681
Fix non-full chunk sending to 1.17 clients 2021-05-17 17:31:42 +02:00
KennyTV
576682ef9f
Handle invalid uuid int array
Closes #2475
2021-05-15 16:42:38 +02:00
KennyTV
54b0345017
Fix PS compatibility on Java 8 💩 2021-05-15 10:11:19 +02:00
KennyTV
4f9f3254be
Fix PS compatibility on Java 16 2021-05-15 09:28:18 +02:00
KennyTV
1538ff5201
Expand unsupported software checks 2021-05-14 16:59:12 +02:00
creeper123123321
f17fb833a0
add internal getInputBuffer() (#2472) 2021-05-14 11:19:02 +02:00
KennyTV
84c064fc11
Fix legacy hover deserialization, add snapshot suffix to version 2021-05-14 10:59:43 +02:00
KennyTV
7b5b79f510
Update Gradle to 7.0.1 2021-05-12 16:00:42 +02:00