58 lines
2.2 KiB
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;
|
|
}
|
|
}
|