Compare commits
No commits in common. "54aabf557c14fcd2e277ffb58d63bd9b0292a496" and "4bd0b798755531962e51411620b172f4a3d0055f" have entirely different histories.
54aabf557c
...
4bd0b79875
6 changed files with 5 additions and 81 deletions
|
@ -39,7 +39,7 @@ public class ScoutMixin extends AutoMixin {
|
|||
try {
|
||||
transformers.put(name, (ClassNodeTransformer) Class.forName(type.getClassName()).getDeclaredConstructor().newInstance());
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("[Scout] Transformer class for mixin {} not found", name, e);
|
||||
LOGGER.error("Transformer class for mixin {} not found", name, e);
|
||||
}
|
||||
}
|
||||
return super.shouldAnnotationSkipMixin(name, an);
|
||||
|
|
|
@ -27,6 +27,9 @@ public class ScreenHandlerTransformer implements ClassNodeTransformer {
|
|||
var LSlot = L(Slot);
|
||||
|
||||
var DefaultedList = slash(resolver.mapClassName(namespace, "net.minecraft.class_2371"));
|
||||
//var LDefaultedList = L(DefaultedList);
|
||||
|
||||
//var slots = resolver.mapFieldName(namespace, name, "field_7761", LDefaultedList);
|
||||
|
||||
int ordinal = 0;
|
||||
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
package pm.c7.scout.mixin.server;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.util.collection.DefaultedList;
|
||||
import pm.c7.scout.ScoutUtil;
|
||||
import pm.c7.scout.server.ScoutUtilServer;
|
||||
|
||||
@Environment(EnvType.SERVER)
|
||||
@Mixin(DefaultedList.class)
|
||||
public class DefaultedListMixin {
|
||||
@Inject(method = "get", at = @At("HEAD"), cancellable = true)
|
||||
public void scout$fixIndexingSlots(int index, CallbackInfoReturnable<Object> cir) {
|
||||
var currentPlayer = ScoutUtilServer.getCurrentPlayer();
|
||||
if (ScoutUtil.isBagSlot(index)) {
|
||||
if (currentPlayer != null) {
|
||||
cir.setReturnValue(ScoutUtil.getBagSlot(index, currentPlayer.playerScreenHandler));
|
||||
} else {
|
||||
cir.setReturnValue(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
package pm.c7.scout.mixin.server;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.screen.ScreenHandler;
|
||||
import net.minecraft.screen.slot.SlotActionType;
|
||||
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import pm.c7.scout.server.ScoutUtilServer;
|
||||
|
||||
@Environment(EnvType.SERVER)
|
||||
@Mixin(value = ScreenHandler.class)
|
||||
public abstract class ScreenHandlerMixin {
|
||||
@Redirect(method = "internalOnSlotClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/screen/ScreenHandler;quickMove(Lnet/minecraft/entity/player/PlayerEntity;I)Lnet/minecraft/item/ItemStack;"))
|
||||
public ItemStack scout$fixQuickMove(ScreenHandler self, PlayerEntity player, int index, int slotIndex, int button, SlotActionType actionType, PlayerEntity playerAgain) {
|
||||
ScoutUtilServer.setCurrentPlayer(player);
|
||||
ItemStack ret = self.quickMove(player, index);
|
||||
ScoutUtilServer.clearCurrentPlayer();
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
|
@ -60,7 +60,7 @@ public class BagSlot extends Slot {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void setStackNoCallbacks(ItemStack stack) {
|
||||
public void setStack(ItemStack stack) {
|
||||
if (enabled && this.inventory != null) {
|
||||
this.inventory.setStack(this.index, stack);
|
||||
this.markDirty();
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
package pm.c7.scout.server;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import pm.c7.scout.ScoutUtil;
|
||||
|
||||
public class ScoutUtilServer {
|
||||
private static PlayerEntity currentPlayer = null;
|
||||
|
||||
public static void setCurrentPlayer(PlayerEntity player) {
|
||||
if (currentPlayer != null) {
|
||||
ScoutUtil.LOGGER.warn("[Scout] New player set during existing quick move, expect players getting wrong items!");
|
||||
}
|
||||
currentPlayer = player;
|
||||
}
|
||||
|
||||
public static void clearCurrentPlayer() {
|
||||
currentPlayer = null;
|
||||
}
|
||||
|
||||
public static @Nullable PlayerEntity getCurrentPlayer() {
|
||||
return currentPlayer;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue