Compare commits

...
Author SHA1 Message Date
NotAlexNoyle c09fa331c6 Exclude CODEOWNERS from language statistics 2026-10-28 08:31:40 -04:00
NotAlexNoyle 0088f657e7 Add CODEOWNERS (one staff approval) 2026-10-28 08:31:40 -04:00
NotAlexNoyle 0f95f7cbaf Merge branch 'ViaVersion:master' into master 2026-06-17 12:51:33 -04:00
NotAlexNoyle e607988751 Suppress jdk17 warning 2026-06-17 04:00:23 -04:00
NotAlexNoyle 1f6103aa9b Fix network protocol error on 1.21.5+ clients 2026-06-05 12:25:14 -04:00
NotAlexNoyle 00bb773c4a TrueOG fork patches
Cumulative customizations on top of upstream ViaVersion master:
- build.gradle.kts: enable Eclipse gradle plugin
- common/.../config.yml: TrueOG network 1.19.4 production config,
  disallow clients above 1.21.11, rely on Scoreboard-OG to hide
  scoreboard numbers, suppress warnings
- common/.../v1_19_4to1_20 EntityPacketRewriter1_20: cancel Purpur
  Rainglow non-vanilla GLOW_SQUID metadata (placeholder index, fixed
  in the follow-up commit)

Squashes: Add eclipse gradle plugin (47af35dfa), Use live TrueOG
Network 1.19.4/main config files (f44d281a8, 47e67a1b9), Suppress
warnings (17d367bd9), Rely on Scoreboard-OG to hide scoreboard
numbers (e69efcc39), Disallow clients above 1.21.11 (7cfbe8b94),
Bee anger field iterations (dd95e81c3, 38746d70e), Fix packets
(57f9f1016).
2026-06-05 12:25:09 -04:00
6 changed files with 45 additions and 172 deletions

No files matched your search

+1
View File
@@ -0,0 +1 @@
.gitea/CODEOWNERS linguist-detectable=false
+3
View File
@@ -0,0 +1,3 @@
# Pull requests request review from the eligible staff team(s).
# One approval from either an Admin or Developer satisfies branch protection.
* @trueog/Admins @trueog/Developers
+1
View File
@@ -1,5 +1,6 @@
plugins {
base
eclipse
id("via.build-logic")
}
@@ -267,8 +267,8 @@ public class ViaManagerImpl implements ViaManager {
platform.getLogger().warning("ViaVersion no longer officially supports this version of Java, only offering unsupported compatibility builds.");
platform.getLogger().warning("See https://github.com/ViaVersion/ViaVersion/releases/tag/5.0.0 for more information.");
} else if (version < 21) {
platform.getLogger().warning("Please update your Java runtime to at least Java 21 (your version is " + javaVersion + ").");
platform.getLogger().warning("At some point in the future, ViaVersion will no longer be compatible with this version of Java.");
// platform.getLogger().warning("Please update your Java runtime to at least Java 21 (your version is " + javaVersion + ").");
// platform.getLogger().warning("At some point in the future, ViaVersion will no longer be compatible with this version of Java.");
}
}
@@ -142,6 +142,14 @@ public final class EntityPacketRewriter1_20 extends EntityRewriter<ClientboundPa
registerEntityDataTypeHandler(Types1_20.ENTITY_DATA_TYPES.itemType, Types1_20.ENTITY_DATA_TYPES.blockStateType, Types1_20.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_20.ENTITY_DATA_TYPES.particleType, null);
registerBlockStateHandler(EntityTypes1_19_4.ABSTRACT_MINECART, 11);
// Purpur's Rainglow patch adds a non-vanilla SQUID_COLOR (String) accessor on GlowSquid,
// declared right after DATA_DARK_TICKS_REMAINING, so the server emits it at source index 17.
// AGEABLE_WATER_CREATURE.addIndex(16) in v1_21To1_21_2 later shifts it to index 18, where
// 1.21.11+ clients only allocate 18 slots (max valid index 17) and crash with
// ArrayIndexOutOfBoundsException: Index 18 out of bounds for length 18. Drop at source.
// Vanilla 1.19.4 GlowSquid has no slot 17, so this is safe for non-Purpur servers.
filter().type(EntityTypes1_19_4.GLOW_SQUID).cancel(17);
// Rotate item display by 180 degrees around the Y axis
filter().type(EntityTypes1_19_4.ITEM_DISPLAY).handler((event, data) -> {
if (event.trackedEntity().hasSentEntityData() || event.hasExtraData()) {
@@ -9,240 +9,100 @@
#----------------------------------------------------------#
#
# Should ViaVersion check for updates?
check-for-updates: true
check-for-updates: false
# Send the supported versions with the Status (Ping) response packet
send-supported-versions: false
send-supported-versions: true
# Easier to configure alternative to 'block-protocols'. Uses readable version strings with possible '<' and '>' prefixes.
# An example to block 1.16.4, everything below 1.16, as well as everything above 1.17.1 would be: ["<1.16", "1.16.4", ">1.17.1"]
# You can use both this and the block-protocols option at the same time as well.
block-versions: []
block-versions: [">1.21.11"]
# Block specific Minecraft protocol version numbers.
# List of all Minecraft protocol versions: https://minecraft.wiki/w/Protocol_version, or use a generator: https://via.krusic22.com
block-protocols: []
# Change the blocked disconnect message
block-disconnect-msg: "You are using an unsupported Minecraft version!"
# If you use ProtocolLib, we can't reload without kicking the players.
# (We don't suggest using reload either, use a plugin manager)
# You can customize the message we kick people with if you use ProtocolLib here.
reload-disconnect-msg: "Server reload, please rejoin!"
# Settings for logging behavior. When debugging issues, we may ask you to change some of these.
# Most of these are disabled by default to prevent log spam from bad user input.
block-disconnect-msg: |
§7[§a§lTrue§c§lOG §e§lNetwork§7] §l§cUnsupported client! §e:(
§4♥ §6Please re-log using MCJE 1.8-1.21.11 §4♥
reload-disconnect-msg: |
§7[§a§lTrue§c§lOG §e§lNetwork§7] §l§6Server is restarting... §4♥
logging:
# Whether to log more info about kicks due to blocked protocol versions to the console.
log-blocked-joins: false
# Whether to log errors during entity data conversion.
log-entity-data-errors: true
# Whether to log errors during text component conversion.
log-text-component-conversion-errors: false
# Whether to warn for other issues when converting items, blocks, or other data between server and client.
log-text-component-conversion-errors: true
log-other-conversion-warnings: false
# Maximum length of error messages in the console.
max-error-length: 1500
#
# Used for auto updating config files. Do not touch.
config-version: 1
init-config-version: 1
# Whether to update config values that were left on their default to newly changed defaults. Recommended to keep enabled.
migrate-default-config-changes: true
# If enabled, ViaVersion will send the native player version to the server on connect via a plugin message.
# See the wiki for more info: https://github.com/ViaVersion/ViaVersion/wiki/Server-and-Player-Details-Protocol
migrate-default-config-changes: false
send-player-details: true
# If enabled, ViaVersion will send the native server version to a player on connect via a plugin message.
# See the wiki above for more info.
send-server-details: true
#----------------------------------------------------------#
# VELOCITY OPTIONS #
#----------------------------------------------------------#
#
# Velocity allows you to have different server versions inside.
# Instead of you entering all the versions of these servers, we can ping them.
#
# What interval would you like us to ping at? (in seconds)
# Use -1 to disable.
velocity-ping-interval: 60
# If the above is enabled, should we save the info to the config (in the section below)
velocity-ping-save: true
# To get a server's protocol, ViaVersion will do the following:
# Look for the server in the following section, then look for the last ping if velocity-ping is enabled
# otherwise use default.
#
# The format for the following is:
# servername: protocolversion
# You can find protocol ids on https://minecraft.wiki/w/Protocol_version
# It will fall back to the default option if none found.
velocity-servers: {}
#
#----------------------------------------------------------#
# GLOBAL PACKET LIMITER #
#----------------------------------------------------------#
# Packets Per Second (PPS) and kilobyte packet size limiters.
# Setting 'max-per-second' or 'sustained-max-per-second' to -1 will disable the individual limit.
# Kick messages may include the %pps or %bps placeholders respectively, though they are more intended for debugging purposes.
#
# Limits the amount of packets sent per second.
# Clients by default send around 20-90 packets per second.
packet-limiter:
enabled: true
# The maximum packets a client can send per second.
max-per-second: 800
max-per-second-kick-message: "You are sending too many packets!"
#
# We can also kick them if they repeatedly send too many packets over a longer period of time.
# E.g. if a player sends over 200 packets per second for 4 out of 7 seconds, we kick them.
# The maximum packets per second a client can send over a longer period of time.
max-per-second-kick-message: Your client is sending too many packets.
sustained-max-per-second: 200
# Period to track in seconds.
sustained-period-seconds: 7
# The number of seconds within the interval that the client can exceed the limit before being kicked.
sustained-threshold: 4
sustained-kick-message: "You are sending too many packets, :("
# Limits the size of packets in kilobytes sent per second.
sustained-kick-message: Your client is sending way too many packets!
packet-size-limiter:
enabled: false
enabled: true
max-per-second: -1
max-per-second-kick-message: "You are sending too large packets!"
max-per-second-kick-message: Your client is sending too many packets per second.
sustained-max-per-second: -1
sustained-period-seconds: 5
sustained-threshold: 3
sustained-kick-message: "You are sending too large packets, :("
#
#----------------------------------------------------------#
# MULTIPLE VERSIONS OPTIONS #
#----------------------------------------------------------#
#
# Should we enable our hologram patch?
# If they're in the wrong place, enable this
hologram-patch: false
# This is the offset, should work as default when enabled.
sustained-kick-message: Your client is sending packets which are larger than the limit!
hologram-patch: true
hologram-y: -0.96
# Whether to make sure ViaVersion's UserConnection object is already available in the PlayerJoinEvent.
# You may disable this for faster startup/join time if you are 100% sure no plugin requires this.
register-userconnections-on-join: true
# Should we disable piston animation for 1.11/1.11.1 clients?
# In some cases, when firing lots of pistons, it crashes them.
piston-animation-patch: false
# Experimental - Should we fix shift quick move action for 1.12 clients (causes shift + double click not to work when moving items) (only works on 1.8-1.11.2 bukkit based servers)
quick-move-action-fix: false
# Should we use prefix for team color on 1.13 and above clients?
piston-animation-patch: true
quick-move-action-fix: true
team-colour-fix: true
# 1.13 introduced new auto complete which can trigger "Kicked for spamming" for servers older than 1.13, the following option will disable it completely.
disable-1_13-auto-complete: false
# The following option will delay the tab complete request in x ticks if greater than 0, if other tab-complete is received, the previous is cancelled
1_13-tab-complete-delay: 0
# For 1.13 clients the smallest (1 layer) snow doesn't have collisions, this will send these as 2 snowlayers for 1.13+ clients to prevent them bugging through them
fix-low-snow-collision: false
# Infested blocks are instantly breakable for 1.13+ clients, resulting in them being unable to break them on sub 1.13 servers. This remaps them to their normal stone variants
fix-infested-block-breaking: true
# In 1.14 the client page limit has been upped to 100 (from 50). Some anti-exploit plugins ban when clients go higher than 50. This option cuts edited books to 50 pages.
1_13-tab-complete-delay: 2
fix-low-snow-collision: true
fix-infested-block-breaking: false
truncate-1_14-books: false
# This prevents clients using 1.9-1.13 on 1.8 servers from receiving no knockback/having velocity bugs whilst sneaking under a block.
change-1_9-hitbox: false
# Similar to the above, but for 1.14+ players on 1.8-1.13 servers.
# WARNING: This gives 1.14+ players the ability to sneak under blocks, that players under that version cannot (sneaking in places that are only 1.5 blocks high)!
# Another thing to remember is that those players might be missed by projectiles and other hits directed at the very top of their head whilst sneaking.
change-1_9-hitbox: true
change-1_14-hitbox: false
# Fixes 1.14+ clients on sub 1.14 servers having a light value of 0 for non-full blocks.
fix-non-full-blocklight: true
# Fixes walk animation not shown when health is set to Float.NaN
fix-1_14-health-nan: true
# Should 1.15+ clients respawn instantly / without showing a death screen?
use-1_15-instant-respawn: false
#
# Enable serverside block-connections for 1.13+ clients - all the options in this section are built around this option
serverside-blockconnections: true
# Sets the method for the block connections (world for highly experimental (USE AT OWN RISK) world-level or packet for packet-level)
blockconnection-method: packet
# When activated, only the most important blocks are stored in the blockstorage. (fences, glass panes etc. won't connect to solid blocks)
reduce-blockstorage-memory: false
# When activated with serverside-blockconnections, flower parts with blocks above will be sent as stems
# Useful for lobbyservers where users can't build and those stems are used decoratively
flowerstem-when-block-above: false
# Vines that are not connected to blocks will be mapped to air, else 1.13+ would still be able to climb up on them.
vine-climb-fix: false
#
# Ignores incoming plugin channel messages of 1.16+ clients with channel names longer than 32 characters.
# CraftBukkit had this limit hardcoded until 1.16, so we have to assume any server/proxy might have this arbitrary check present.
flowerstem-when-block-above: true
vine-climb-fix: true
ignore-long-1_16-channel-names: true
#
# Force 1.17+ client to accept the server resource pack; they will automatically disconnect if they decline.
forced-use-1_17-resource-pack: false
# The message to be displayed at the prompt when the 1.17+ client receives the server resource pack.
resource-pack-1_17-prompt: ''
#
# Caches light until chunks are unloaded to allow later chunk update packets as opposed to instantly uncaching when the first chunk data is sent.
# Only disable this if you know what you are doing.
cache-1_17-light: true
#
# Force-update 1.19.4+ player's inventory when they try to swap armor in a pre-occupied slot.
armor-toggle-fix: true
#
# Get the world names which should be returned for each vanilla dimension
map-1_16-world-names:
overworld: "minecraft:overworld"
nether: "minecraft:the_nether"
end: "minecraft:the_end"
#
# If disabled, tamed cats will be displayed as ocelots to 1.14+ clients on 1.13 servers. Otherwise, ocelots (tamed and untamed) will be displayed as cats.
overworld: minecraft:overworld
nether: minecraft:the_nether
end: minecraft:the_end
translate-ocelot-to-cat: false
#
# Determines the value sent to 1.19+ clients on join if currently not accessible by ViaVersion.
# It is not recommended to fake this value if your server is running 1.19 or later, as 1.20.5 have stricter chat handling and may get kicked otherwise.
enforce-secure-chat: false
#
# Handles items with invalid count values (higher than max stack size) on 1.20.3 servers.
handle-invalid-item-count: false
#
# Hides scoreboard numbers for 1.20.3+ clients on older server versions.
hide-scoreboard-numbers: false
#
# Fixes 1.21+ clients on 1.20.5 servers placing water/lava buckets at the wrong location when moving fast, NOTE: This may cause issues with anti-cheat plugins.
fix-1_21-placement-rotation: true
#
# If enabled, cancel swing packets sent while having an inventory opened on 1.15.2 and below servers. This can cause false positives with anti-cheat plugins.
fix-1_21-placement-rotation: false
cancel-swing-in-inventory: true
#
#----------------------------------------------------------#
# 1.9+ CLIENTS ON 1.8 SERVERS OPTIONS #
#----------------------------------------------------------#
#
# No collide options, these allow you to configure how collision works.
# Do you want us to prevent collision?
prevent-collision: true
# If the above is true, should we automatically team players until you do?
auto-team: true
# When enabled, 1.9+ will be able to block by using shields
shield-blocking: true
# If this setting is active, the main hand is used instead of the off-hand to trigger the blocking of the player.
# With the main hand, the blocking starts way faster.
# (Requires "show-shield-when-sword-in-hand" to be disabled)
no-delay-shield-blocking: false
# If this setting is active, the shield will appear immediately for 1.9+ when you hold a sword in your main hand.
# The shield disappears when you switch to another item.
# (Requires "shield-blocking" to be enabled)
no-delay-shield-blocking: true
show-shield-when-sword-in-hand: false
# Enable player tick simulation, this fixes eating, drinking, nether portals.
simulate-pt: true
# Should we use nms player to simulate packets, (may fix anti-cheat issues)
nms-player-ticking: true
# Should we patch boss bars so they work? (Default: true, disable if you're having issues)
bossbar-patch: true
# If your boss bar flickers on 1.9+, set this to 'true'. It will keep all boss bars on 100% (not recommended)
bossbar-anti-flicker: false
# This will show the new effect indicator in the top-right corner for 1.9+ players.
use-new-effect-indicator: true
# Show the new death messages for 1.9+ on the death screen
use-new-effect-indicator: false
use-new-deathmessages: true
# Should we cache our items, this will prevent the server from being lagged out, however, the cost is a constant task caching items
item-cache: true
# Should we replace extended pistons to fix 1.10.1 (Only on chunk loading)?
replace-pistons: false
# What id should we replace with, default is air. (careful of players getting stuck standing on them)
replacement-piston-id: 0
# Fix 1.9+ clients not rendering the far away chunks and improve chunk rendering when moving fast (Increases network usage and decreases client fps slightly)
chunk-border-fix: false
# Allows 1.9+ left-handedness (main hand) on 1.8 servers
left-handed-handling: true
# Tries to cancel block break/place sounds sent by 1.8 servers to 1.9+ clients to prevent them from playing twice
cancel-block-sounds: true
# If enabled, 1.21.11+ clients on 1.8 servers will get wider entity hitboxes when attacking with items
use-1_8-hitbox-margin: true