recipe-nope/src/main/java/dev/pfaff/recipe_nope/mixin/ServerPlayerEntityMixin.java

58 lines
2.2 KiB
Java

package dev.pfaff.recipe_nope.mixin;
import dev.pfaff.recipe_nope.injector.UnconstrainedRedirect;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.recipe.Recipe;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.network.ServerRecipeBook;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.Slice;
import java.util.Collection;
@Mixin(ServerPlayerEntity.class)
public abstract class ServerPlayerEntityMixin {
@Shadow @Final private ServerRecipeBook recipeBook;
@Shadow @Final public MinecraftServer server;
@UnconstrainedRedirect(method = "<init>", at = @At(value = "NEW", target = "()Lnet/minecraft/server/network/ServerRecipeBook;"))
private ServerRecipeBook init$noRecipeBook() {
return null;
}
@Overwrite
public int unlockRecipes(Collection<Recipe<?>> recipes) {
return 0;
}
@Overwrite
public void unlockRecipes(Identifier[] ids) {
}
@Overwrite
public int lockRecipes(Collection<Recipe<?>> recipes) {
return 0;
}
@Redirect(method = "writeCustomDataToNbt", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerRecipeBook;toNbt()Lnet/minecraft/nbt/NbtCompound;"))
private NbtCompound writeCustomDataToNbt$recipeBookToNbt(ServerRecipeBook instance) {
return new NbtCompound();
}
@Redirect(method = "writeCustomDataToNbt", at = @At(value = "INVOKE", target = "Lnet/minecraft/nbt/NbtCompound;put(Ljava/lang/String;Lnet/minecraft/nbt/NbtElement;)Lnet/minecraft/nbt/NbtElement;"), slice = @Slice(
from = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerRecipeBook;toNbt()Lnet/minecraft/nbt/NbtCompound;"),
to = @At(value = "CONSTANT", args = "stringValue=Dimension")
))
private NbtElement writeCustomDataToNbt$putRecipeBookNbt(NbtCompound instance, String key, NbtElement element) {
return null;
}
}