rearranged mixins to correct packages
This commit is contained in:
10 files changed
+43
-90
No files matched your search
+1
-1
@@ -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;
|
||||
|
||||
+2
-2
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
-29
@@ -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,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
|
||||
|
||||
Reference in new issue
Block a user