mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-11-03 07:03:00 +00:00
Add data generator support for required mods
We've supported resource conditions in the upgrade JSON for an age, but don't expose it in our data generators at all. Indeed, using these hooks is a bit of a pain to do in multi-loader setups, as the JSON is different between the two loaders. We could generate the JSON for all loaders at once, but it feels nicer to use the per-loader APIs to add the conditions. For now, we just support generating a single condition - whether a mod is loaded not, via the requireMod(...) method.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
package dan200.computercraft.shared.platform;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import com.mojang.brigadier.arguments.ArgumentType;
|
||||
@@ -32,6 +33,7 @@ import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.util.GsonHelper;
|
||||
import net.minecraft.world.*;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -56,7 +58,9 @@ import net.minecraftforge.common.Tags;
|
||||
import net.minecraftforge.common.ToolActions;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.crafting.CraftingHelper;
|
||||
import net.minecraftforge.common.crafting.conditions.ICondition;
|
||||
import net.minecraftforge.common.crafting.conditions.ModLoadedCondition;
|
||||
import net.minecraftforge.common.extensions.IForgeMenuType;
|
||||
import net.minecraftforge.common.util.NonNullConsumer;
|
||||
import net.minecraftforge.event.ForgeEventFactory;
|
||||
@@ -122,6 +126,17 @@ public class PlatformHelperImpl implements PlatformHelper {
|
||||
return ICondition.shouldRegisterEntry(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRequiredModCondition(JsonObject object, String modId) {
|
||||
var conditions = GsonHelper.getAsJsonArray(object, "forge:conditions", null);
|
||||
if (conditions == null) {
|
||||
conditions = new JsonArray();
|
||||
object.add("forge:conditions", conditions);
|
||||
}
|
||||
|
||||
conditions.add(CraftingHelper.serialize(new ModLoadedCondition(modId)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityType<T> createBlockEntityType(BiFunction<BlockPos, BlockState, T> factory, Block block) {
|
||||
return new BlockEntityType<>(factory::apply, Set.of(block), null);
|
||||
|
||||
Reference in New Issue
Block a user