This commit is contained in:
modmuss50 2021-02-24 20:30:53 +00:00
parent f9d6353a62
commit 7268309e55
8 changed files with 39 additions and 31 deletions
build.gradle
fabric-events-interaction-v0
fabric-networking-api-v1
build.gradle
src/main/java/net/fabricmc/fabric/impl/networking/server
fabric-structure-api-v1
build.gradle
src/testmod/java/net/fabricmc/fabric/test/structure

View file

@ -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

View file

@ -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'

View file

@ -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);

View file

@ -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();
}
}
}

View file

@ -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'

View file

@ -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);

View file

@ -1,2 +1,2 @@
archivesBaseName = "fabric-structure-api-v1"
version = getSubprojectVersion(project, "1.1.5")
version = getSubprojectVersion(project, "1.1.6")

View file

@ -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);