rearranged mixins to correct packages

This commit is contained in:
iceBear67 committed 2025-03-28 11:01:27 +08:00
1 parent b75b4e1df1
commit 885920f38e
10 files changed
+43 -90

No files matched your search

+1 -1
View File
@@ -6,6 +6,6 @@ loader_version=0.16.10
# Fabric API
fabric_version=0.119.5+1.21.5
# Mod Properties
mod_version=1.0.0
mod_version=1.1
maven_group=io.ib67
archives_base_name=sfcraft
@@ -1,13 +1,21 @@
package io.ib67.sfcraft.mixin.common;
import io.ib67.sfcraft.SFCraft;
import io.ib67.sfcraft.callback.SFCallbacks;
import io.ib67.sfcraft.module.RoomModule;
import io.ib67.sfcraft.registry.RoomRegistry;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.TeleportTarget;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.UUID;
@Mixin(Entity.class)
public abstract class EntityMixin {
@@ -18,6 +26,25 @@ public abstract class EntityMixin {
}
}
@Shadow
public abstract UUID getUuid();
@Inject(at = @At("HEAD"), method = "teleportTo", cancellable = true)
private void sf$redirectTeleport(TeleportTarget teleportTarget, CallbackInfoReturnable<Entity> cir) {
if (RoomModule.isVirtual(this.getUuid())) {
cir.setReturnValue((Entity) (Object) this);
}
}
@Inject(at = @At("HEAD"), method = "canUsePortals", cancellable = true)
private void sf$disablePortal(boolean allowVehicles, CallbackInfoReturnable<Boolean> cir) {
var registry = SFCraft.getInjector().getInstance(RoomRegistry.class);
var $this = (Entity) (Object) this;
if (registry.isRoomWorld($this.getWorld().getRegistryKey())) {
cir.setReturnValue(false);
}
}
@Unique
private Entity $this() {
return (Entity) (Object) this;
@@ -1,4 +1,4 @@
package io.ib67.sfcraft.mixin.server;
package io.ib67.sfcraft.mixin.common.bridge;
import net.minecraft.server.world.ChunkLevelManager;
import net.minecraft.server.world.ServerChunkManager;
@@ -6,7 +6,7 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(ServerChunkManager.class)
public interface ServerChunkManagerMixin {
public interface ServerChunkManagerBridge {
@Accessor("levelManager")
ChunkLevelManager getLevelManager();
}
@@ -1,4 +1,4 @@
package io.ib67.sfcraft.mixin.server.fixes;
package io.ib67.sfcraft.mixin.common.fixes;
import io.ib67.sfcraft.mixin.common.MobEntityMixin;
import net.minecraft.entity.mob.EndermanEntity;
@@ -1,4 +1,4 @@
package io.ib67.sfcraft.mixin.server.optimize;
package io.ib67.sfcraft.mixin.common.fixes;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.passive.BeeEntity;
@@ -1,4 +1,4 @@
package io.ib67.sfcraft.mixin.server.fixes;
package io.ib67.sfcraft.mixin.common.fixes;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
@@ -1,38 +0,0 @@
package io.ib67.sfcraft.mixin.server.subserver;
import io.ib67.sfcraft.SFCraft;
import io.ib67.sfcraft.module.RoomModule;
import io.ib67.sfcraft.registry.RoomRegistry;
import io.ib67.sfcraft.util.Helper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.world.TeleportTarget;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.UUID;
@Mixin(Entity.class)
public abstract class EntityMixin {
@Shadow
public abstract UUID getUuid();
@Inject(at = @At("HEAD"), method = "teleportTo", cancellable = true)
private void sf$redirectTeleport(TeleportTarget teleportTarget, CallbackInfoReturnable<Entity> cir) {
if (RoomModule.isVirtual(this.getUuid())) {
cir.setReturnValue((Entity) (Object) this);
}
}
@Inject(at = @At("HEAD"), method = "canUsePortals", cancellable = true)
private void sf$disablePortal(boolean allowVehicles, CallbackInfoReturnable<Boolean> cir) {
var registry = SFCraft.getInjector().getInstance(RoomRegistry.class);
var $this = (Entity) (Object) this;
if (registry.isRoomWorld($this.getWorld().getRegistryKey())) {
cir.setReturnValue(false);
}
}
}
@@ -2,20 +2,16 @@ package io.ib67.sfcraft.mixin.server.subserver;
import com.mojang.authlib.GameProfile;
import io.ib67.sfcraft.SFCraft;
import io.ib67.sfcraft.mixin.server.ServerChunkManagerMixin;
import io.ib67.sfcraft.mixin.common.bridge.ServerChunkManagerBridge;
import io.ib67.sfcraft.module.RoomModule;
import io.ib67.sfcraft.registry.RoomRegistry;
import io.ib67.sfcraft.util.Helper;
import net.minecraft.entity.Entity;
import net.minecraft.network.ClientConnection;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ConnectedClientData;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.Text;
import net.minecraft.util.math.GlobalPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.TeleportTarget;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
@@ -23,7 +19,6 @@ import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@@ -71,7 +66,7 @@ public abstract class PlayerManagerMixin {
private void teleportToRoom(ServerPlayerEntity player, GlobalPos spawn) {
var world = player.getServer().getWorld(spawn.dimension());
var pos = spawn.pos();
((ServerChunkManagerMixin)world.getChunkManager()).getLevelManager().handleChunkEnter(player.getWatchedSection(), player);
((ServerChunkManagerBridge)world.getChunkManager()).getLevelManager().handleChunkEnter(player.getWatchedSection(), player);
player.teleport(world, pos.getX(), pos.getY(), pos.getZ(), Set.of(), 0, 0, true);
}
@@ -1,29 +0,0 @@
package io.ib67.sfcraft.mixin.server.subserver.command;
import com.mojang.brigadier.context.CommandContext;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.GameRuleCommand;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.world.GameRules;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(GameRuleCommand.class)
public abstract class GameRuleCommandMixin {
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getGameRules()Lnet/minecraft/world/GameRules;"), method = "executeSet")
private static GameRules sf$redirectSetForPerWorld(MinecraftServer instance, CommandContext<ServerCommandSource> context) {
return getGameRule(instance, context.getSource());
}
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getGameRules()Lnet/minecraft/world/GameRules;"), method = "executeQuery")
private static GameRules sf$redirectSetForPerWorld(MinecraftServer instance, ServerCommandSource context) {
return getGameRule(instance, context);
}
private static GameRules getGameRule(MinecraftServer instance, ServerCommandSource source) {
var world = source.getWorld();
if (world == null) return instance.getGameRules();
return world.getGameRules(); // this is same as Server#getGameRule since one GameRules is shared across multiple worlds in vanilla.
}
}
+8 -10
View File
@@ -8,14 +8,17 @@
"common.bridge.ItemBridge",
"common.bridge.ServerPlayerBridge",
"common.bridge.ServerWorldBridge",
"server.ServerChunkManagerMixin"
"common.bridge.ServerChunkManagerBridge",
"common.fixes.EndermanEntityMixin",
"common.fixes.ProjectileEntityMixin",
"common.fixes.LivingEntityMixin",
"common.EntityMixin",
"common.MobEntityMixin",
"common.PlayerEntityMixin"
],
"client": [
],
"server": [
"common.EntityMixin",
"common.MobEntityMixin",
"common.PlayerEntityMixin",
"server.AbstractFurnaceBlockMixin",
"server.LegacyQueryHandlerMixin",
"server.MinecraftServerMixin",
@@ -25,16 +28,11 @@
"server.ServerPlayNetworkHandlerMixin",
"server.ServerWorldMixin",
"server.SleepManagerMixin",
"server.fixes.EndermanEntityMixin",
"server.fixes.ProjectileEntityMixin",
"server.optimize.LivingEntityMixin",
"server.subserver.EntityMixin",
"server.subserver.PlayerListS2CPacket$EntryMixin",
"server.subserver.PlayerManagerMixin",
"server.subserver.PlayerSaveHandlerMixin",
"server.subserver.ServerLoginNetworkHandlerMixin",
"server.subserver.ServerPlayerEntityMixin",
"server.subserver.command.GameRuleCommandMixin"
"server.subserver.ServerPlayerEntityMixin"
],
"injectors": {
"defaultRequire": 1