refactor some classes. this will break stuff so I will release it after 1.17

This commit is contained in:
JFronny 2021-09-27 18:25:19 +02:00
parent b6c9e59151
commit 98c736af46
No known key found for this signature in database
GPG Key ID: BEC5ACBBD4EE17E5
8 changed files with 33 additions and 35 deletions

5
.gitignore vendored
View File

@ -117,3 +117,8 @@ run/
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
.classpath
bin
.project
.settings

View File

@ -4,11 +4,8 @@ import io.gitlab.jfronny.libjf.Libjf;
import io.gitlab.jfronny.libjf.config.Config;
import io.gitlab.jfronny.libjf.config.Entry;
import io.gitlab.jfronny.libjf.config.EntryInfo;
import io.gitlab.jfronny.libjf.config.gui.ButtonEntry;
import io.gitlab.jfronny.libjf.config.gui.MidnightConfigListWidget;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ScreenTexts;
import net.minecraft.client.gui.widget.ButtonWidget;

View File

@ -1,29 +1,33 @@
package io.gitlab.jfronny.libjf.data;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class RecipeUtil {
private final static Set<String> removalsByIdentifier = new HashSet<>();
private final static List<ItemStack> recipesForRemoval = new ArrayList<>();
private static final Set<Identifier> REMOVAL_BY_ID = new HashSet<>();
private static final Set<ItemStack> RECIPES_FOR_REMOVAL = new HashSet<>();
public static void removeRecipe(String id) {
removalsByIdentifier.add(id);
public static void removeRecipe(Identifier identifier) {
REMOVAL_BY_ID.add(identifier);
}
public static void removeRecipeFor(ItemStack product) {
recipesForRemoval.add(product);
RECIPES_FOR_REMOVAL.add(product);
}
public static Iterable<ItemStack> getRecipesForRemoval() {
return recipesForRemoval;
public static boolean isIdBlocked(Identifier identifier) {
return REMOVAL_BY_ID.contains(identifier);
}
public static Set<String> getIdentifiersForRemoval() {
return removalsByIdentifier;
public static boolean isOutputBlocked(ItemStack product) {
for (ItemStack stack : RECIPES_FOR_REMOVAL) {
if (product.isItemEqual(stack)) {
return true;
}
}
return false;
}
}

View File

@ -3,7 +3,7 @@ package io.gitlab.jfronny.libjf.data;
import net.minecraft.resource.ResourceType;
import net.minecraft.util.Identifier;
public class ResourcePath implements AutoCloseable {
public class ResourcePath {
private final ResourceType type;
private final Identifier id;
@ -36,9 +36,4 @@ public class ResourcePath implements AutoCloseable {
public String getName() {
return String.format("%s/%s/%s", type.getDirectory(), id.getNamespace(), id.getPath());
}
@Override
public void close() throws Exception {
}
}

View File

@ -1,11 +1,11 @@
package io.gitlab.jfronny.libjf.data;
import io.gitlab.jfronny.libjf.data.wrappedPackImpl.WrappedResourcePack;
import io.gitlab.jfronny.libjf.data.impl.WrappedResourcePack;
import net.minecraft.resource.ResourcePack;
//This is a class for binary compatibility with mods using libjf
public abstract class WrappedPack implements ResourcePack {
public abstract ResourcePack getUnderlying();
public interface WrappedPack extends ResourcePack {
ResourcePack getUnderlying();
public static WrappedPack create(ResourcePack underlying) {
//if (underlying instanceof ModNioResourcePack mi)

View File

@ -1,4 +1,4 @@
package io.gitlab.jfronny.libjf.data.wrappedPackImpl;
package io.gitlab.jfronny.libjf.data.impl;
import io.gitlab.jfronny.libjf.data.ResourcePath;
import io.gitlab.jfronny.libjf.data.UserResourceEvents;

View File

@ -1,4 +1,4 @@
package io.gitlab.jfronny.libjf.data.wrappedPackImpl;
package io.gitlab.jfronny.libjf.data.impl;
import io.gitlab.jfronny.libjf.data.WrappedPack;
import net.minecraft.resource.ResourcePack;
@ -13,7 +13,7 @@ import java.util.Collection;
import java.util.Set;
import java.util.function.Predicate;
public class WrappedResourcePack extends WrappedPack {
public class WrappedResourcePack implements WrappedPack {
ResourcePack pack;
public WrappedResourcePack(ResourcePack pack) {
this.pack = pack;

View File

@ -4,7 +4,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.gson.JsonObject;
import io.gitlab.jfronny.libjf.Libjf;
import io.gitlab.jfronny.libjf.data.RecipeUtil;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.Recipe;
import net.minecraft.recipe.RecipeManager;
import net.minecraft.util.Identifier;
@ -26,7 +25,7 @@ public class RecipeManagerMixin {
Map.Entry<Identifier, JsonObject> cur = iterator.next();
Identifier recipeId = cur.getKey();
if (RecipeUtil.getIdentifiersForRemoval().contains(recipeId.toString())) {
if (RecipeUtil.isIdBlocked(recipeId)) {
Libjf.LOGGER.info("Blocking recipe by identifier: " + recipeId);
} else {
replacement.add(cur);
@ -40,12 +39,10 @@ public class RecipeManagerMixin {
private ImmutableMap.Builder<Identifier, Recipe<?>> onPutRecipe(ImmutableMap.Builder<Identifier, Recipe<?>> builder, Object key, Object value) {
Identifier id = (Identifier) key;
Recipe<?> recipe = (Recipe<?>) value;
for (ItemStack stack : RecipeUtil.getRecipesForRemoval()) {
if (recipe.getOutput().isItemEqual(stack)) {
Libjf.LOGGER.info("Blocked recipe by predicate: " + recipe.getId());
return builder;
}
if (RecipeUtil.isOutputBlocked(recipe.getOutput())) {
Libjf.LOGGER.info("Blocked recipe by predicate: " + recipe.getId());
return builder;
}
return builder.put(id, recipe);