JSON API prototype

This commit is contained in:
paulevsGitch 2020-11-11 23:56:15 +03:00
parent 7dbea96c46
commit 8ed48f99d0
6 changed files with 29 additions and 10 deletions

View file

@ -8,7 +8,6 @@ import org.jetbrains.annotations.NotNull;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntList;
import me.shedaniel.math.Point; import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle; import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.EntryStack;
@ -17,12 +16,10 @@ import me.shedaniel.rei.api.widgets.Widgets;
import me.shedaniel.rei.gui.entries.RecipeEntry; import me.shedaniel.rei.gui.entries.RecipeEntry;
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry; import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.gui.widget.Widget;
import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.TranslatableText; import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import ru.betterend.recipe.builders.AlloyingRecipe; import ru.betterend.recipe.builders.AlloyingRecipe;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
import ru.betterend.util.LangUtil; import ru.betterend.util.LangUtil;

View file

@ -7,7 +7,6 @@ import org.jetbrains.annotations.NotNull;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntList;
import me.shedaniel.math.Point; import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle; import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.EntryStack;
@ -16,11 +15,9 @@ import me.shedaniel.rei.api.widgets.Widgets;
import me.shedaniel.rei.gui.entries.RecipeEntry; import me.shedaniel.rei.gui.entries.RecipeEntry;
import me.shedaniel.rei.gui.entries.SimpleRecipeEntry; import me.shedaniel.rei.gui.entries.SimpleRecipeEntry;
import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.gui.widget.Widget;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.TranslatableText; import net.minecraft.text.TranslatableText;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import ru.betterend.recipe.builders.InfusionRecipe; import ru.betterend.recipe.builders.InfusionRecipe;
import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndBlocks;
import ru.betterend.util.LangUtil; import ru.betterend.util.LangUtil;

View file

@ -17,7 +17,6 @@ import net.minecraft.util.JsonHelper;
import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.world.World; import net.minecraft.world.World;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.recipe.EndRecipeManager; import ru.betterend.recipe.EndRecipeManager;
import ru.betterend.rituals.InfusionRitual; import ru.betterend.rituals.InfusionRitual;

View file

@ -1,5 +1,6 @@
package ru.betterend.registry; package ru.betterend.registry;
import java.io.InputStream;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -7,6 +8,8 @@ import java.util.Optional;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
@ -19,6 +22,7 @@ import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.Category; import net.minecraft.world.biome.Biome.Category;
import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.biome.BiomeKeys;
import ru.betterend.util.JsonFactory;
import ru.betterend.world.biome.BiomeChorusForest; import ru.betterend.world.biome.BiomeChorusForest;
import ru.betterend.world.biome.BiomeCrystalMountains; import ru.betterend.world.biome.BiomeCrystalMountains;
import ru.betterend.world.biome.BiomeDustWastelands; import ru.betterend.world.biome.BiomeDustWastelands;
@ -40,6 +44,7 @@ public class EndBiomes {
public static final BiomePicker LAND_BIOMES = new BiomePicker(); public static final BiomePicker LAND_BIOMES = new BiomePicker();
public static final BiomePicker VOID_BIOMES = new BiomePicker(); public static final BiomePicker VOID_BIOMES = new BiomePicker();
public static final List<EndBiome> SUBBIOMES = Lists.newArrayList(); public static final List<EndBiome> SUBBIOMES = Lists.newArrayList();
private static final JsonObject EMPTY_JSON = new JsonObject();
private static Registry<Biome> biomeRegistry; private static Registry<Biome> biomeRegistry;
@ -75,11 +80,24 @@ public class EndBiomes {
for (EndBiome biome : EndBiomes.VOID_BIOMES.getBiomes()) for (EndBiome biome : EndBiomes.VOID_BIOMES.getBiomes())
EndBiomes.MUTABLE.put(biomeRegistry.getOrThrow(EndBiomes.getBiomeKey(biome)), biome); EndBiomes.MUTABLE.put(biomeRegistry.getOrThrow(EndBiomes.getBiomeKey(biome)), biome);
Map<String, JsonObject> configs = Maps.newHashMap();
biomeRegistry.forEach((biome) -> { biomeRegistry.forEach((biome) -> {
if (biome.getCategory() == Category.THEEND) { if (biome.getCategory() == Category.THEEND) {
Identifier id = biomeRegistry.getId(biome); Identifier id = biomeRegistry.getId(biome);
if (!MUTABLE.containsKey(biome) && !ID_MAP.containsKey(id)) { if (!MUTABLE.containsKey(biome) && !ID_MAP.containsKey(id)) {
EndBiome endBiome = new EndBiome(id, biome, 1, 1); JsonObject config = configs.get(id.getNamespace());
if (config == null) {
config = loadJsonConfig(id.getNamespace());
configs.put(id.getNamespace(), config);
}
float fog = 1F;
float chance = 1F;
JsonElement element = config.get(id.getPath());
if (element != null) {
fog = element.getAsJsonObject().get("fogDensity").getAsFloat();
chance = element.getAsJsonObject().get("genChance").getAsFloat();
}
EndBiome endBiome = new EndBiome(id, biome, fog, chance);
LAND_BIOMES.addBiomeMutable(endBiome); LAND_BIOMES.addBiomeMutable(endBiome);
KEYS.put(endBiome, biomeRegistry.getKey(biome).get()); KEYS.put(endBiome, biomeRegistry.getKey(biome).get());
} }
@ -89,6 +107,16 @@ public class EndBiomes {
CLIENT.clear(); CLIENT.clear();
} }
private static JsonObject loadJsonConfig(String namespace) {
InputStream inputstream = EndBiomes.class.getResourceAsStream("/data/" + namespace + "/end_biome_properties.json");
if (inputstream != null) {
return JsonFactory.getJsonObject(inputstream);
}
else {
return EMPTY_JSON;
}
}
/** /**
* Initialize registry if it was not initialized in world generation (when using mods/datapacks, that overrides the End generation) * Initialize registry if it was not initialized in world generation (when using mods/datapacks, that overrides the End generation)
* @param server * @param server

View file

@ -3,7 +3,6 @@ package ru.betterend.registry;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry; import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
import ru.betterend.blocks.entities.render.EndChestBlockEntityRenderer; import ru.betterend.blocks.entities.render.EndChestBlockEntityRenderer;
import ru.betterend.blocks.entities.render.EndSignBlockEntityRenderer; import ru.betterend.blocks.entities.render.EndSignBlockEntityRenderer;
import ru.betterend.blocks.entities.render.PedestalItemRenderer; import ru.betterend.blocks.entities.render.PedestalItemRenderer;

View file

@ -14,7 +14,6 @@ import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.world.World; import net.minecraft.world.World;
import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.InfusionPedestalEntity;
import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.recipe.builders.InfusionRecipe; import ru.betterend.recipe.builders.InfusionRecipe;