fix: 修复了Windows下中文乱码及与PCA不兼容的问题
This commit is contained in:
1 parent
42d59762a7
commit
15764d67bc
16 files changed
+91
-169
No files matched your search
@@ -1,32 +0,0 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.block;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.util.access.PlayerAccess;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
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 java.util.List;
|
||||
|
||||
@Mixin(Block.class)
|
||||
public class MixinBlock {
|
||||
@Inject(method = "getDroppedStacks(Lnet/minecraft/block/BlockState;Lnet/minecraft/server/world/ServerWorld;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/entity/BlockEntity;Lnet/minecraft/entity/Entity;Lnet/minecraft/item/ItemStack;)Ljava/util/List;", at = @At("HEAD"), cancellable = true)
|
||||
private static void onDrop(BlockState state, ServerWorld world, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack stack, CallbackInfoReturnable<List<ItemStack>> cir) {
|
||||
if (entity instanceof ServerPlayerEntity player) {
|
||||
if (((PlayerAccess) player).holdingObsidianPickaxe() && state.getBlock() == Blocks.OBSIDIAN) {
|
||||
cir.setReturnValue(List.of(new ItemStack(Items.OBSIDIAN)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -24,7 +24,7 @@ public abstract class MixinSettingsManager implements SettingsManagerAccessor {
|
||||
this.loadConfigurationFromConf();
|
||||
}
|
||||
|
||||
@Inject(method = "setRule", at = @At(value = "INVOKE", target = "Lcarpet/utils/Messenger;m(Lnet/minecraft/server/command/ServerCommandSource;[Ljava/lang/Object;)V", shift = At.Shift.BEFORE))
|
||||
@Inject(method = "setRule", at = @At(value = "INVOKE", target = "Lcarpet/utils/Messenger;m(Lnet/minecraft/server/command/ServerCommandSource;[Ljava/lang/Object;)V", shift = At.Shift.BEFORE), remap = true)
|
||||
private void injectSetRule(ServerCommandSource source, CarpetRule<?> rule, String newValue, CallbackInfoReturnable<Integer> cir) {
|
||||
if ("maxUpdateQueueSize".equals(rule.name())) {
|
||||
MinecraftServer server = ServerMain.server;
|
||||
|
||||
+15
-18
@@ -1,6 +1,6 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.entity;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.PlayerAccess;
|
||||
import com.github.zly2006.carpetslsaddition.util.access.PlayerAccess;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.entity.EquipmentSlot;
|
||||
@@ -8,8 +8,11 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.stat.Stat;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
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.CallbackInfoReturnable;
|
||||
@@ -22,26 +25,20 @@ public abstract class MixinPlayerEntity implements PlayerAccess {
|
||||
|
||||
@Shadow public abstract void resetStat(Stat<?> stat);
|
||||
|
||||
@Shadow public abstract Text getName();
|
||||
|
||||
@Unique
|
||||
private Text displayName = null;
|
||||
|
||||
@Override
|
||||
public boolean holdingObsidianPickaxe() {
|
||||
ItemStack itemStack = getEquippedStack(EquipmentSlot.MAINHAND);
|
||||
NbtCompound compound = itemStack.getSubNbt(MOD_ID);
|
||||
return compound != null && compound.contains(ITEM_NAME) && compound.getString(ITEM_NAME).equals(OBSIDIAN_PICKAXE);
|
||||
public void setDisplayName(Text name) {
|
||||
this.displayName = name;
|
||||
}
|
||||
|
||||
|
||||
@Inject(method = "getBlockBreakingSpeed", at = @At("HEAD"), cancellable = true)
|
||||
private void onGetBlockBreakingSpeed(BlockState block, CallbackInfoReturnable<Float> cir) {
|
||||
if (holdingObsidianPickaxe() && block.isOf(Blocks.OBSIDIAN)) {
|
||||
cir.setReturnValue(750f);// f = speed / 1500
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Inject(method = "canHarvest", at = @At("HEAD"), cancellable = true)
|
||||
private void onGetCanMine(BlockState state, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (holdingObsidianPickaxe() && state.isOf(Blocks.OBSIDIAN)) {
|
||||
cir.setReturnValue(true);
|
||||
@Inject(method = "getDisplayName", at = @At("HEAD"), cancellable = true)
|
||||
public void injectGetDisplayName(CallbackInfoReturnable<Text> cir) {
|
||||
if (this.displayName != null) {
|
||||
cir.setReturnValue(displayName);
|
||||
}
|
||||
}
|
||||
}
|
||||
-2
@@ -17,8 +17,6 @@ import org.spongepowered.asm.mixin.Shadow;
|
||||
public abstract class MixinServerPlayerEntity extends PlayerEntity {
|
||||
@Shadow
|
||||
public ServerPlayNetworkHandler networkHandler;
|
||||
|
||||
|
||||
private int sneakTimes = 0;
|
||||
private long lastSneakTime = 0;
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.item;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.util.access.PlayerAccess;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
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;
|
||||
|
||||
@Mixin(Item.class)
|
||||
public class MixinItem {
|
||||
@Inject(method = "canMine", at = @At("HEAD"), cancellable = true)
|
||||
private void onCheckMine(BlockState state, World world, BlockPos pos, PlayerEntity miner, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (((PlayerAccess) miner).holdingObsidianPickaxe() && state.getBlock() == Blocks.OBSIDIAN) {
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -2,6 +2,8 @@ package com.github.zly2006.carpetslsaddition.mixin.player;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||
import com.github.zly2006.carpetslsaddition.util.ShulkerBoxItemUtil;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Condition;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Restriction;
|
||||
import net.minecraft.entity.player.PlayerAbilities;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
@@ -12,6 +14,9 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Restriction(
|
||||
conflict = @Condition("pca")
|
||||
)
|
||||
@Mixin(PlayerInventory.class)
|
||||
public abstract class MixinPlayerInventory implements Inventory, Nameable {
|
||||
@Redirect(method = "insertStack(ILnet/minecraft/item/ItemStack;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;getAbilities()Lnet/minecraft/entity/player/PlayerAbilities;"))
|
||||
@@ -33,8 +38,7 @@ public abstract class MixinPlayerInventory implements Inventory, Nameable {
|
||||
}
|
||||
|
||||
// 修改潜影盒拾取逻辑,使从地上捡起潜影盒时仍可堆叠
|
||||
@Redirect(method = "canStackAddMore",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isStackable()Z", ordinal = 0))
|
||||
@Redirect(method = "canStackAddMore", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isStackable()Z", ordinal = 0))
|
||||
private boolean canStackAddMoreIsStackable(ItemStack itemStack) {
|
||||
return ShulkerBoxItemUtil.isStackable(itemStack);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.plugin;
|
||||
|
||||
import me.fallenbreath.conditionalmixin.api.mixin.RestrictiveMixinConfigPlugin;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class BasicMixinPlugin extends RestrictiveMixinConfigPlugin {
|
||||
@Override
|
||||
public String getRefMapperConfig() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getMixins() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+5
@@ -1,12 +1,17 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.screen;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.util.ShulkerBoxItemUtil;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Condition;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Restriction;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.screen.ScreenHandler;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Restriction(
|
||||
conflict = @Condition("pca")
|
||||
)
|
||||
@Mixin(ScreenHandler.class)
|
||||
public class MixinScreenHandler {
|
||||
@Redirect(method = "insertItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isStackable()Z", ordinal = 0))
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.screen;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.util.ShulkerBoxItemUtil;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Condition;
|
||||
import me.fallenbreath.conditionalmixin.api.annotation.Restriction;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.screen.slot.Slot;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Restriction(
|
||||
conflict = @Condition("pca")
|
||||
)
|
||||
@Mixin(Slot.class)
|
||||
public class MixinSlot {
|
||||
@Redirect(method = "getMaxItemCount(Lnet/minecraft/item/ItemStack;)I", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;getMaxCount()I", ordinal = 0))
|
||||
|
||||
Reference in new issue
Block a user