Skip to content

Commit

Permalink
use the spawn data API
Browse files Browse the repository at this point in the history
  • Loading branch information
TropheusJ committed Jul 8, 2023
1 parent 913d818 commit 518e972
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,22 @@

import org.quiltmc.loader.api.minecraft.ClientOnly;
import org.quiltmc.loader.api.minecraft.MinecraftQuiltLoader;
import org.quiltmc.qsl.entity.networking.api.extended_spawn_data.QuiltExtendedSpawnDataEntity;
import org.quiltmc.qsl.networking.api.PacketByteBufs;
import org.quiltmc.qsl.networking.api.PacketSender;
import org.quiltmc.qsl.networking.api.ServerPlayNetworking;
import org.quiltmc.qsl.networking.api.client.ClientPlayNetworking;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

import org.jetbrains.annotations.NotNull;

import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientPacketListener;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.Direction.Plane;
import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.protocol.game.ClientboundAddEntityPacket;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
Expand All @@ -47,8 +40,7 @@
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;

public class ClimbingSuctionCupEntity extends Entity {
public static final ResourceLocation SPAWN_PACKET = Succ.id("climbing_suction_cup_spawn");
public class ClimbingSuctionCupEntity extends Entity implements QuiltExtendedSpawnDataEntity {
public static final ResourceLocation UPDATE_SUCTION = Succ.id("update_suction");
public static final ResourceLocation UPDATE_DIRECTION = Succ.id("update_direction");

Expand Down Expand Up @@ -250,15 +242,7 @@ protected void addAdditionalSaveData(CompoundTag nbt) {
}

@Override
@NotNull
public Packet<ClientGamePacketListener> getAddEntityPacket() {
FriendlyByteBuf buf = PacketByteBufs.create();
new ClientboundAddEntityPacket(this).write(buf);
writeExtraPacketData(buf);
return ServerPlayNetworking.createS2CPacket(SPAWN_PACKET, buf);
}

public void writeExtraPacketData(FriendlyByteBuf buf) {
public void writeAdditionalSpawnData(FriendlyByteBuf buf) {
buf.writeEnum(limb);
buf.writeUUID(climbingState.playerUuid);
buf.writeEnum(facing);
Expand All @@ -272,7 +256,8 @@ public void writeExtraPacketData(FriendlyByteBuf buf) {
}
}

public void readExtraPacketData(FriendlyByteBuf buf) {
@Override
public void readAdditionalSpawnData(FriendlyByteBuf buf) {
this.limb = buf.readEnum(SuctionCupLimb.class);
UUID playerId = buf.readUUID();
this.facing = buf.readEnum(Direction.class);
Expand Down Expand Up @@ -391,24 +376,6 @@ private static void executeOnServerWithCup(MinecraftServer server, ServerPlayer
});
}


@ClientOnly
public static void clientNetworkingInit() {
ClientPlayNetworking.registerGlobalReceiver(SPAWN_PACKET, ClimbingSuctionCupEntity::handleSpawnOnClient);
}

@ClientOnly
public static void handleSpawnOnClient(Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) {
ClientboundAddEntityPacket addPacket = new ClientboundAddEntityPacket(buf);
buf.retain(); // save until after extra data is read
client.execute(() -> {
addPacket.handle(handler);
ClimbingSuctionCupEntity entity = (ClimbingSuctionCupEntity) client.level.getEntity(addPacket.getId());
entity.readExtraPacketData(buf);
buf.release();
});
}

@ClientOnly
public void setSuctionFromClient(boolean suction) {
FriendlyByteBuf buf = PacketByteBufs.create();
Expand Down
1 change: 0 additions & 1 deletion src/main/java/one/devos/nautical/succ/SuccClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ public class SuccClient implements ClientModInitializer {
public void onInitializeClient(ModContainer mod) {
SuccKeybinds.init();
GlobalClimbingManager.clientNetworkingInit();
ClimbingSuctionCupEntity.clientNetworkingInit();

EntityModelLayerRegistry.registerModelLayer(SuctionCupModel.LAYER, SuctionCupModel::getLayerDefinition);
EntityModelLayerRegistry.registerModelLayer(DepressedSuctionCupModel.LAYER, DepressedSuctionCupModel::getLayerDefinition);
Expand Down

0 comments on commit 518e972

Please sign in to comment.