Skip to content

Commit

Permalink
Breaking Change: Fix for Protocol update in Geyser and Bump Reversion…
Browse files Browse the repository at this point in the history
… to 1.0.23

I tried to make it backwards compatible but its just too hard. I'll look at options later.
Now supports Beta but there are some palette issues that still need sorting.
  • Loading branch information
bundabrg committed Dec 13, 2020
1 parent 38bdb33 commit ceb2b68
Show file tree
Hide file tree
Showing 3 changed files with 164 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,163 @@
import au.com.grieve.reversion.editions.bedrock.BedrockReversionSession;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.BedrockPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.handler.BedrockPacketHandler;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.*;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddBehaviorTreePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddHangingEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddItemEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddPaintingPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AddPlayerPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AdventureSettingsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AnimateEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AnimatePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AnvilDamagePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AutomationClientConnectPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AvailableCommandsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.AvailableEntityIdentifiersPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BiomeDefinitionListPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BlockEntityDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BlockEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BlockPickRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BookEditPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.BossEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CameraPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CameraShakePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ChangeDimensionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ChunkRadiusUpdatedPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ClientCacheBlobStatusPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ClientCacheMissResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ClientCacheStatusPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ClientToServerHandshakePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ClientboundMapItemDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CodeBuilderPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CommandBlockUpdatePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CommandOutputPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CommandRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CompletedUsingItemPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ContainerClosePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ContainerOpenPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ContainerSetDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CorrectPlayerMovePredictionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CraftingDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CraftingEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.CreativeContentPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.DebugInfoPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.DisconnectPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EducationSettingsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EmoteListPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EmotePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EntityEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EntityFallPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EntityPickRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.EventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ExplodePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.GameRulesChangedPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.GuiDataPickItemPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.HurtArmorPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.InteractPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.InventoryContentPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.InventorySlotPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.InventoryTransactionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ItemComponentPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ItemFrameDropItemPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ItemStackRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ItemStackResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LabTablePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LecternUpdatePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelChunkPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelEventGenericPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelSoundEvent1Packet;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelSoundEvent2Packet;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LevelSoundEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.LoginPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MapCreateLockedCopyPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MapInfoRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MobArmorEquipmentPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MobEffectPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MobEquipmentPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ModalFormRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ModalFormResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MotionPredictionHintsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MoveEntityAbsolutePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MoveEntityDeltaPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MovePlayerPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.MultiplayerSettingsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.NetworkChunkPublisherUpdatePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.NetworkSettingsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.NetworkStackLatencyPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.NpcRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.OnScreenTextureAnimationPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PacketViolationWarningPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PhotoTransferPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlaySoundPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerActionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerArmorDamagePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerAuthInputPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerEnchantOptionsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerFogPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerHotbarPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerInputPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerListPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PlayerSkinPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PositionTrackingDBClientRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PositionTrackingDBServerBroadcastPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.PurchaseReceiptPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.RemoveEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.RemoveObjectivePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.RequestChunkRadiusPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ResourcePackChunkDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ResourcePackChunkRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ResourcePackClientResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ResourcePackDataInfoPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ResourcePackStackPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.RespawnPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.RiderJumpPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ScriptCustomEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ServerSettingsRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ServerSettingsResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetCommandsEnabledPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetDefaultGameTypePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetDifficultyPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetDisplayObjectivePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetEntityDataPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetEntityLinkPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetEntityMotionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetHealthPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetLastHurtByPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetPlayerGameTypePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetScorePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetScoreboardIdentityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetSpawnPositionPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetTimePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SetTitlePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SettingsCommandPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ShowCreditsPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ShowProfilePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.ShowStoreOfferPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SimpleEventPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SpawnExperienceOrbPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SpawnParticleEffectPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.StartGamePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.StopSoundPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.StructureBlockUpdatePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.StructureTemplateDataRequestPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.StructureTemplateDataResponsePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.SubClientLoginPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.TakeItemEntityPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.TextPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.TickSyncPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.TransferPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateAttributesPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateBlockPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateBlockPropertiesPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateBlockSyncedPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateEquipPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdatePlayerGameTypePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateSoftEnumPacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.UpdateTradePacket;
import au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.packet.VideoStreamConnectPacket;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import lombok.Getter;
Expand All @@ -52,7 +208,7 @@ public boolean handlePacket(BedrockPacket original) {
ByteBuf buffer = ByteBufAllocator.DEFAULT.ioBuffer();

facadeSession.getTranslatedCodec().tryEncode(buffer, original, serverSession);
com.nukkitx.protocol.bedrock.BedrockPacket translated = facadeSession.getOriginalCodec().tryDecode(buffer, facadeSession.getTranslatedCodec().getId(original.getClass()));
com.nukkitx.protocol.bedrock.BedrockPacket translated = facadeSession.getOriginalCodec().tryDecode(buffer, facadeSession.getTranslatedCodec().getId(original.getClass()), facadeSession);

buffer.release();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.crypto.SecretKey;
import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.util.Arrays;
import java.util.Collection;
Expand All @@ -52,6 +53,8 @@ public class GeyserServerSession extends BedrockServerSession {
BedrockPacketCodec originalCodec;
au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.BedrockPacketCodec translatedCodec;

private Method tryEncode;

public GeyserServerSession(BedrockReversionSession reversionSession) {
super(null, null, null);

Expand All @@ -69,7 +72,7 @@ public void sendPacket(BedrockPacket original) {
// Isolate Reversion protocol from Geyser Protocol in case there are overlapping differences
ByteBuf buffer = ByteBufAllocator.DEFAULT.ioBuffer();

originalCodec.tryEncode(buffer, original);
originalCodec.tryEncode(buffer, original, this);
au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.BedrockPacket translated = translatedCodec.tryDecode(buffer, BedrockProtocol.DEFAULT_BEDROCK_CODEC.getId(original.getClass()), reversionSession);
buffer.release();
reversionSession.sendPacket(translated);
Expand All @@ -80,7 +83,7 @@ public void sendPacketImmediately(BedrockPacket original) {
// Isolate Reversion protocol from Geyser Protocol in case there are overlapping differences
ByteBuf buffer = ByteBufAllocator.DEFAULT.ioBuffer();

originalCodec.tryEncode(buffer, original);
originalCodec.tryEncode(buffer, original, this);
au.com.grieve.reversion.shaded.nukkitx.protocol.bedrock.BedrockPacket translated = translatedCodec.tryDecode(buffer, BedrockProtocol.DEFAULT_BEDROCK_CODEC.getId(original.getClass()), reversionSession);
buffer.release();

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<reversion.version>1.0.22</reversion.version>
<reversion.version>1.0.23</reversion.version>
</properties>

<build>
Expand Down

0 comments on commit ceb2b68

Please sign in to comment.