fabric-resource-loader-v0-3.3.1+d4d4122a6f.jar
Download file
package net.fabricmc.fabric.mixin.resource.loader;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
import java.util.Collection;
import java.util.function.Predicate;
import java.util.stream.Stream;
import net.fabricmc.fabric.impl.resource.loader.FabricResourcePackProfile;
import net.minecraft.class_2168;
import net.minecraft.class_2561;
import net.minecraft.class_3027;
import net.minecraft.class_3283;
import net.minecraft.class_3288;
import org.spongepowered.asm.mixin.Mixin;
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.At.Shift;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin({class_3027.class})
public class DatapackCommandMixin {
@Unique
private static final DynamicCommandExceptionType INTERNAL_PACK_EXCEPTION = new DynamicCommandExceptionType((packName) -> class_2561.method_54159("commands.datapack.fabric.internal", new Object[]{packName}));
@Redirect(
method = {"method_13136(Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture;"},
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/class_3283;method_29210()Ljava/util/Collection;"
)
)
private static Collection<String> filterEnabledPackSuggestions(class_3283 dataPackManager) {
return dataPackManager.method_14444().stream().filter((profile) -> !((FabricResourcePackProfile)profile).fabric_isHidden()).map(class_3288::method_14463).toList();
}
@WrapOperation(
method = {"method_13120(Lcom/mojang/brigadier/context/CommandContext;Lcom/mojang/brigadier/suggestion/SuggestionsBuilder;)Ljava/util/concurrent/CompletableFuture;"},
at = {@At(
value = "INVOKE",
target = "Ljava/util/stream/Stream;filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;",
ordinal = 0
)}
)
private static Stream<class_3288> filterDisabledPackSuggestions(Stream<class_3288> instance, Predicate<? super class_3288> predicate, Operation<Stream<class_3288>> original) {
return ((Stream)original.call(new Object[]{instance, predicate})).filter((profile) -> !((FabricResourcePackProfile)profile).fabric_isHidden());
}
@Inject(
method = {"method_13127(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;Z)Lnet/minecraft/class_3288;"},
at = {@At(
value = "INVOKE",
target = "Ljava/util/Collection;contains(Ljava/lang/Object;)Z",
shift = Shift.BEFORE
)}
)
private static void errorOnInternalPack(CommandContext<class_2168> context, String name, boolean enable, CallbackInfoReturnable<class_3288> cir, @Local class_3288 profile) throws CommandSyntaxException {
if (((FabricResourcePackProfile)profile).fabric_isHidden()) {
throw INTERNAL_PACK_EXCEPTION.create(profile.method_14463());
}
}
}
Download file