diff --git a/build.gradle b/build.gradle index 16b8dcf23..daeb82f57 100644 --- a/build.gradle +++ b/build.gradle @@ -19,8 +19,8 @@ plugins { def ENV = System.getenv() class Globals { - static def baseVersion = "0.31.0" - static def mcVersion = "21w07a" + static def baseVersion = "0.31.1" + static def mcVersion = "21w08a" static def yarnVersion = "+build.1" static def loaderVersion = "0.10.5+build.213" static def preRelease = true diff --git a/fabric-events-interaction-v0/build.gradle b/fabric-events-interaction-v0/build.gradle index 16de36abd..e6acf4752 100644 --- a/fabric-events-interaction-v0/build.gradle +++ b/fabric-events-interaction-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-events-interaction-v0" -version = getSubprojectVersion(project, "0.4.4") +version = getSubprojectVersion(project, "0.4.5") moduleDependencies(project, [ 'fabric-api-base' diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinClientPlayerInteractionManager.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinClientPlayerInteractionManager.java index a35359d16..b92d9a45c 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinClientPlayerInteractionManager.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinClientPlayerInteractionManager.java @@ -119,7 +119,7 @@ public class MixinClientPlayerInteractionManager { if (result != ActionResult.PASS) { if (result == ActionResult.SUCCESS) { - this.networkHandler.sendPacket(new PlayerInteractEntityC2SPacket(entity, player.isSneaking())); + this.networkHandler.sendPacket(PlayerInteractEntityC2SPacket.method_34206(entity, player.isSneaking())); } info.cancel(); @@ -133,7 +133,7 @@ public class MixinClientPlayerInteractionManager { if (result != ActionResult.PASS) { if (result == ActionResult.SUCCESS) { Vec3d hitVec = hitResult.getPos().subtract(entity.getX(), entity.getY(), entity.getZ()); - this.networkHandler.sendPacket(new PlayerInteractEntityC2SPacket(entity, hand, hitVec, player.isSneaking())); + this.networkHandler.sendPacket(PlayerInteractEntityC2SPacket.method_34208(entity, player.isSneaking(), hand, hitVec)); } info.setReturnValue(result); diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinServerPlayNetworkHandler.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinServerPlayNetworkHandler.java index ce1bdc5d3..840e2ef5f 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinServerPlayNetworkHandler.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/MixinServerPlayNetworkHandler.java @@ -23,34 +23,35 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.entity.Entity; -import net.minecraft.server.network.ServerPlayNetworkHandler; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.util.math.Vec3d; +import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; import net.minecraft.world.World; -import net.minecraft.server.world.ServerWorld; import net.fabricmc.fabric.api.event.player.UseEntityCallback; -@Mixin(ServerPlayNetworkHandler.class) -public class MixinServerPlayNetworkHandler { - @Shadow - public ServerPlayerEntity player; +@Mixin(targets = "net/minecraft/server/network/ServerPlayNetworkHandler$1") +public abstract class MixinServerPlayNetworkHandler implements PlayerInteractEntityC2SPacket.class_5908 { + @Shadow(aliases = {"field_28963"}) + public ServerPlayNetworkHandler serverPlayNetworkHandler; - @Inject(method = "onPlayerInteractEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;interactAt(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;"), cancellable = true) - public void onPlayerInteractEntity(PlayerInteractEntityC2SPacket packet, CallbackInfo info) { + @Shadow(aliases = {"field_28962"}) + public Entity entity; + + @Inject(method = "method_34220", at = @At(value = "HEAD"), cancellable = true) + public void onPlayerInteractEntity(Hand hand, Vec3d hitPosition, CallbackInfo info) { + PlayerEntity player = serverPlayNetworkHandler.player; World world = player.getEntityWorld(); - Entity entity = packet.getEntity((ServerWorld) world); - if (entity != null) { - EntityHitResult hitResult = new EntityHitResult(entity, packet.getHitPosition().add(entity.getX(), entity.getY(), entity.getZ())); + EntityHitResult hitResult = new EntityHitResult(entity, hitPosition.add(entity.getX(), entity.getY(), entity.getZ())); + ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, world, hand, entity, hitResult); - ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, world, packet.getHand(), entity, hitResult); - - if (result != ActionResult.PASS) { - info.cancel(); - } + if (result != ActionResult.PASS) { + info.cancel(); } } } diff --git a/fabric-networking-api-v1/build.gradle b/fabric-networking-api-v1/build.gradle index 7ab2412b5..2fdd98904 100644 --- a/fabric-networking-api-v1/build.gradle +++ b/fabric-networking-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-networking-api-v1" -version = getSubprojectVersion(project, "1.0.4") +version = getSubprojectVersion(project, "1.0.5") moduleDependencies(project, [ 'fabric-api-base' diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java index 7ab0df371..fdcf5457c 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/impl/networking/server/ServerLoginNetworkAddon.java @@ -162,7 +162,14 @@ public final class ServerLoginNetworkAddon extends AbstractNetworkAddon<ServerLo @Override public Packet<?> createPacket(Identifier channelName, PacketByteBuf buf) { int queryId = this.queryIdFactory.nextId(); - LoginQueryRequestS2CPacket ret = new LoginQueryRequestS2CPacket(); + + // Create the packet with a dummy packet buffer and then overwrite the contents after, a bit of a hack but should be ok. + PacketByteBuf dummy = PacketByteBufs.create(); + dummy.writeVarInt(-1); + dummy.writeIdentifier(new Identifier("fabric", "temp")); + dummy.writeByte(1); + + LoginQueryRequestS2CPacket ret = new LoginQueryRequestS2CPacket(dummy); // The constructor for creating a non-empty response was removed by proguard LoginQueryRequestS2CPacketAccessor access = (LoginQueryRequestS2CPacketAccessor) ret; access.setQueryId(queryId); diff --git a/fabric-structure-api-v1/build.gradle b/fabric-structure-api-v1/build.gradle index b10244fbd..a1a39f2a9 100644 --- a/fabric-structure-api-v1/build.gradle +++ b/fabric-structure-api-v1/build.gradle @@ -1,2 +1,2 @@ archivesBaseName = "fabric-structure-api-v1" -version = getSubprojectVersion(project, "1.1.5") +version = getSubprojectVersion(project, "1.1.6") diff --git a/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java b/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java index a6f8eea79..7b5993b02 100644 --- a/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java +++ b/fabric-structure-api-v1/src/testmod/java/net/fabricmc/fabric/test/structure/StructureTest.java @@ -76,14 +76,14 @@ public class StructureTest { } public static class Start extends StructureStart<DefaultFeatureConfig> { - public Start(StructureFeature<DefaultFeatureConfig> feature, int chunkX, int chunkZ, BlockBox box, int references, long seed) { - super(feature, chunkX, chunkZ, box, references, seed); + public Start(StructureFeature<DefaultFeatureConfig> feature, ChunkPos chunkPos, BlockBox blockBox, int i, long l) { + super(feature, chunkPos, blockBox, i, l); } @Override - public void init(DynamicRegistryManager registryManager, ChunkGenerator chunkGenerator, StructureManager manager, int chunkX, int chunkZ, Biome biome, DefaultFeatureConfig config, HeightLimitView heightLimitView) { - int blockX = chunkX * 16; - int blockZ = chunkZ * 16; + public void init(DynamicRegistryManager registryManager, ChunkGenerator chunkGenerator, StructureManager manager, ChunkPos chunkPos, Biome biome, DefaultFeatureConfig featureConfig, HeightLimitView heightLimitView) { + int blockX = chunkPos.getStartX(); + int blockZ = chunkPos.getStartZ(); int blockY = chunkGenerator.getHeight(blockX, blockZ, Heightmap.Type.WORLD_SURFACE_WG, heightLimitView); TestStructureGenerator generator = new TestStructureGenerator(random, blockX, blockY, blockZ);