Convert to using conventional tags

This commit is contained in:
Sollace 2023-01-09 01:25:02 +01:00
parent bc54d0e280
commit 015d3b29fa
44 changed files with 354 additions and 93 deletions

View file

@ -22,6 +22,8 @@ public interface UTags {
TagKey<Item> POLEARMS = item("polearms");
TagKey<Item> APPLE_SEEDS = item("apple_seeds");
TagKey<Item> ACORNS = item("acorns");
TagKey<Block> GLASS_PANES = block("glass_panes");
TagKey<Block> GLASS_BLOCKS = block("glass_blocks");
TagKey<Block> FRAGILE = block("fragile");

View file

@ -4,6 +4,8 @@ import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.jetbrains.annotations.Nullable;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.minelittlepony.unicopia.Unicopia;
@ -11,6 +13,7 @@ import com.minelittlepony.unicopia.util.Resources;
import com.minelittlepony.unicopia.util.Weighted;
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.resource.JsonDataLoader;
@ -18,6 +21,9 @@ import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;
import net.minecraft.util.profiler.Profiler;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.registry.tag.TagKey;
public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResourceReloadListener {
private static final Identifier ID = Unicopia.id("data/tree_type");
@ -73,7 +79,7 @@ public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResour
wideTrunk,
Objects.requireNonNull(logs, "TreeType must have logs"),
Objects.requireNonNull(leaves, "TreeType must have leaves"),
Weighted.of(weighted -> drops.forEach(drop -> drop.appendDrop(weighted))),
Weighted.of(drops),
rarity
);
}
@ -86,24 +92,38 @@ public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResour
buffer.writeInt(rarity);
}
static class Drop {
static class Drop implements Weighted.Buildable<Supplier<ItemStack>> {
final int weight;
final Identifier item;
final @Nullable Identifier tag;
final @Nullable Identifier item;
public Drop(PacketByteBuf buffer) {
weight = buffer.readInt();
item = buffer.readIdentifier();
tag = buffer.readOptional(PacketByteBuf::readIdentifier).orElse(null);
item = buffer.readOptional(PacketByteBuf::readIdentifier).orElse(null);
}
void appendDrop(Weighted.Builder<Supplier<ItemStack>> weighted) {
Registries.ITEM.getOrEmpty(item).ifPresent(item -> {
weighted.put(weight, item::getDefaultStack);
});
@Override
public void appendTo(Weighted.Builder<Supplier<ItemStack>> weighted) {
if (item != null) {
Registries.ITEM.getOrEmpty(item).ifPresent(item -> {
weighted.put(weight, item::getDefaultStack);
});
} else {
weighted.put(weight, () -> {
return Registries.ITEM.getOrCreateEntryList(TagKey.of(RegistryKeys.ITEM, tag))
.getRandom(Weighted.getRng())
.map(RegistryEntry::value)
.map(Item::getDefaultStack)
.orElse(ItemStack.EMPTY);
});
}
}
public void write(PacketByteBuf buffer) {
buffer.writeInt(weight);
buffer.writeIdentifier(item);
buffer.writeOptional(Optional.ofNullable(tag), PacketByteBuf::writeIdentifier);
buffer.writeOptional(Optional.ofNullable(item), PacketByteBuf::writeIdentifier);
}
}
}

View file

@ -7,6 +7,7 @@ import java.util.function.Supplier;
import org.jetbrains.annotations.NotNull;
import net.minecraft.util.Pair;
import net.minecraft.util.math.random.Random;
public final class Weighted {
private static final Supplier<Optional<?>> EMPTY = Optional::empty;
@ -22,8 +23,16 @@ public final class Weighted {
return result.build();
}
public static <T> Supplier<Optional<T>> of(Collection<? extends Buildable<T>> entries) {
return of(builder -> entries.forEach(entry -> entry.appendTo(builder)));
}
public static Random getRng() {
return Builder.RANDOM;
}
public final static class Builder<T> {
private static final Random RANDOM = new Random();
public static final Random RANDOM = Random.create();
private float totalWeight = 0;
@ -83,4 +92,8 @@ public final class Weighted {
}
}
}
public interface Buildable<T> {
void appendTo(Weighted.Builder<T> weighted);
}
}

View file

@ -0,0 +1,24 @@
{
"replace": false,
"values": [
"minecraft:glass",
"minecraft:white_stained_glass",
"minecraft:orange_stained_glass",
"minecraft:magenta_stained_glass",
"minecraft:light_blue_stained_glass",
"minecraft:yellow_stained_glass",
"minecraft:lime_stained_glass",
"minecraft:pink_stained_glass",
"minecraft:gray_stained_glass",
"minecraft:light_gray_stained_glass",
"minecraft:cyan_stained_glass",
"minecraft:purple_stained_glass",
"minecraft:blue_stained_glass",
"minecraft:brown_stained_glass",
"minecraft:green_stained_glass",
"minecraft:red_stained_glass",
"minecraft:black_stained_glass",
{ "id": "#c:glass", "required": false },
{ "id": "#c:glass_blocks", "required": false }
]
}

View file

@ -0,0 +1,22 @@
{
"replace": false,
"values": [
"minecraft:glass_pane",
"minecraft:white_stained_glass_pane",
"minecraft:orange_stained_glass_pane",
"minecraft:magenta_stained_glass_pane",
"minecraft:light_blue_stained_glass_pane",
"minecraft:yellow_stained_glass_pane",
"minecraft:lime_stained_glass_pane",
"minecraft:pink_stained_glass_pane",
"minecraft:gray_stained_glass_pane",
"minecraft:light_gray_stained_glass_pane",
"minecraft:cyan_stained_glass_pane",
"minecraft:purple_stained_glass_pane",
"minecraft:blue_stained_glass_pane",
"minecraft:brown_stained_glass_pane",
"minecraft:green_stained_glass_pane",
"minecraft:red_stained_glass_pane",
"minecraft:black_stained_glass_pane"
]
}

View file

@ -0,0 +1,78 @@
{
"replace": false,
"values": [
"minecraft:coal_ore",
"minecraft:iron_ore",
"minecraft:gold_ore",
"minecraft:emerald_ore",
"minecraft:lapis_ore",
"minecraft:copper_ore",
"minecraft:diamond_ore",
"minecraft:nether_gold_ore",
"minecraft:nether_quartz_ore",
{ "id": "#c:iron_ores", "required": false },
{ "id": "#c:gold_ores", "required": false },
{ "id": "#c:diamond_ores", "required": false },
{ "id": "#c:emerald_ores", "required": false },
{ "id": "#c:copper_ores", "required": false },
{ "id": "#c:quartz_ores", "required": false },
{ "id": "#c:lapis_ores", "required": false },
{ "id": "#c:aluminium_ores", "required": false },
{ "id": "#c:methyst_ores", "required": false },
{ "id": "#c:antimony_ores", "required": false },
{ "id": "#c:aquarium_ores", "required": false },
{ "id": "#c:asterite_ores", "required": false },
{ "id": "#c:banglum_ores", "required": false },
{ "id": "#c:bauxite_ores", "required": false },
{ "id": "#c:carmot_ores", "required": false },
{ "id": "#c:certus_quartz_ores", "required": false },
{ "id": "#c:cinnabar_ores", "required": false },
{ "id": "#c:cobalt_ores", "required": false },
{ "id": "#c:galaxium_ores", "required": false },
{ "id": "#c:galena_ores", "required": false },
{ "id": "#c:iridium_ores", "required": false },
{ "id": "#c:kyber_ores", "required": false },
{ "id": "#c:lunum_ores", "required": false },
{ "id": "#c:lutetium_ores", "required": false },
{ "id": "#c:menganese_ores", "required": false },
{ "id": "#c:metite_ores", "required": false },
{ "id": "#c:midas_gold_ores", "required": false },
{ "id": "#c:moon_lunum_ores", "required": false },
{ "id": "#c:mozanite_ores", "required": false },
{ "id": "#c:mythril_ores", "required": false },
{ "id": "#c:nickle_ores", "required": false },
{ "id": "#c:nikolite_ores", "required": false },
{ "id": "#c:orichalcum_ores", "required": false },
{ "id": "#c:osmium_ores", "required": false },
{ "id": "#c:palladium_ores", "required": false },
{ "id": "#c:peridot_ores", "required": false },
{ "id": "#c:platinum_ores", "required": false },
{ "id": "#c:plutonium_blocks", "required": false },
{ "id": "#c:prometheum_ores", "required": false },
{ "id": "#c:pyrite_ores", "required": false },
{ "id": "#c:quadrillium_ores", "required": false },
{ "id": "#c:ruby_ores", "required": false },
{ "id": "#c:runite_ores", "required": false },
{ "id": "#c:sapphire_ores", "required": false },
{ "id": "#c:sheldonite_ores", "required": false },
{ "id": "#c:silver_ores", "required": false },
{ "id": "#c:sodalite_ores", "required": false },
{ "id": "#c:sphalerite_ores", "required": false },
{ "id": "#c:starrite_ores", "required": false },
{ "id": "#c:stellum_ores", "required": false },
{ "id": "#c:stormyx_ores", "required": false },
{ "id": "#c:sulfur_ores", "required": false },
{ "id": "#c:tantalite_ores", "required": false },
{ "id": "#c:tin_ore", "required": false },
{ "id": "#c:tin_ores", "required": false },
{ "id": "#c:titanium_ores", "required": false },
{ "id": "#c:topaz_ores", "required": false },
{ "id": "#c:truesilver_ores", "required": false },
{ "id": "#c:tungsten_ores", "required": false },
{ "id": "#c:unobtainium_ores", "required": false },
{ "id": "#c:ur_ores", "required": false },
{ "id": "#c:uranium_ores", "required": false },
{ "id": "#c:vermiculite_ores", "required": false },
{ "id": "#c:zinc_ores", "required": false }
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:acorn"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:apple",
"minecraft:golden_apple",
{ "id": "#c:pyrite_apples", "required": false },
"#unicopia:fresh_apples"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:cooked_cod",
"minecraft:cooked_salmon"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:fermented_spider_eye",
{ "id": "#c:cooked_insect", "required": false }
]
}

View file

@ -0,0 +1,18 @@
{
"replace": false,
"values": [
"minecraft:cooked_porkchop",
"minecraft:cooked_beef",
"minecraft:cooked_mutton",
"minecraft:cooked_rabbit",
"minecraft:rabbit_stew",
"minecraft:cooked_chicken",
{ "id": "#c:cooked_meat", "required": false },
{ "id": "#c:fried_chickens", "required": false },
{ "id": "#c:hamburgers", "required": false },
{ "id": "#c:pork_and_beanss", "required": false },
{ "id": "#c:pork_and_beans", "required": false },
{ "id": "#c:pork_jerkies", "required": false },
{ "id": "#c:protein", "required": false }
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
{ "id": "#c:mushrooms", "required": false },
{ "id": "#c:saplings", "required": false }
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
{ "id": "#c:meads", "required": false }
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"unicopia:love_bottle",
"unicopia:love_bucket",
"unicopia:love_mug"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:muffin"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:red_mushroom",
"minecraft:brown_mushroom"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:oatmeal"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:pinecone"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:pufferfish",
"minecraft:cod",
"minecraft:salmon",
"minecraft:tropical_fish",
{ "id": "#c:mollusks", "required": false }
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:spider_eye",
"unicopia:wheat_worms",
"unicopia:butterfly"
]
}

View file

@ -0,0 +1,12 @@
{
"replace": false,
"values": [
"minecraft:porkchop",
"minecraft:beef",
"minecraft:mutton",
"minecraft:rabbit",
"minecraft:chicken",
{ "id": "#c:raw_meat", "required": false },
{ "id": "#c:lemon_chickens", "required": false }
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:rock"
]
}

View file

@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"minecraft:rotten_flesh",
{ "id": "c:rotten_meat", "required": false }
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"unicopia:oat_seeds",
"unicopia:green_apple_seeds",
"unicopia:sweet_apple_seeds",
"unicopia:sour_apple_seeds"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:stick"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"unicopia:wheat_worms"
]
}

View file

@ -1,22 +1,6 @@
{
"replace": false,
"values": [
"minecraft:glass",
"minecraft:white_stained_glass",
"minecraft:orange_stained_glass",
"minecraft:magenta_stained_glass",
"minecraft:light_blue_stained_glass",
"minecraft:yellow_stained_glass",
"minecraft:lime_stained_glass",
"minecraft:pink_stained_glass",
"minecraft:gray_stained_glass",
"minecraft:light_gray_stained_glass",
"minecraft:cyan_stained_glass",
"minecraft:purple_stained_glass",
"minecraft:blue_stained_glass",
"minecraft:brown_stained_glass",
"minecraft:green_stained_glass",
"minecraft:red_stained_glass",
"minecraft:black_stained_glass"
"#c:glass_blocks"
]
}

View file

@ -1,22 +1,6 @@
{
"replace": false,
"values": [
"minecraft:glass_pane",
"minecraft:white_stained_glass_pane",
"minecraft:orange_stained_glass_pane",
"minecraft:magenta_stained_glass_pane",
"minecraft:light_blue_stained_glass_pane",
"minecraft:yellow_stained_glass_pane",
"minecraft:lime_stained_glass_pane",
"minecraft:pink_stained_glass_pane",
"minecraft:gray_stained_glass_pane",
"minecraft:light_gray_stained_glass_pane",
"minecraft:cyan_stained_glass_pane",
"minecraft:purple_stained_glass_pane",
"minecraft:blue_stained_glass_pane",
"minecraft:brown_stained_glass_pane",
"minecraft:green_stained_glass_pane",
"minecraft:red_stained_glass_pane",
"minecraft:black_stained_glass_pane"
"#c:glass_panes"
]
}

View file

@ -1,18 +1,11 @@
{
"replace": false,
"values": [
"minecraft:coal_ore",
"minecraft:iron_ore",
"minecraft:gold_ore",
"minecraft:emerald_ore",
"minecraft:lapis_ore",
"minecraft:diamond_ore",
"minecraft:nether_gold_ore",
"minecraft:nether_quartz_ore",
"minecraft:sea_lantern",
"minecraft:ender_chest",
"minecraft:end_portal_frame",
"minecraft:jukebox",
"minecraft:spawner"
"minecraft:spawner",
"#c:ores"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"#c:acorns"
]
}

View file

@ -1,13 +1,6 @@
{
"replace": false,
"values": [
"minecraft:apple",
"minecraft:golden_apple",
"unicopia:green_apple",
"unicopia:sweet_apple",
"unicopia:sour_apple",
"unicopia:rotten_apple",
"unicopia:zap_apple",
"unicopia:cooked_zap_apple"
"#c:apples"
]
}

View file

@ -1,7 +1,6 @@
{
"replace": false,
"values": [
"minecraft:cooked_cod",
"minecraft:cooked_salmon"
"#c:cooked_fish"
]
}

View file

@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"minecraft:fermented_spider_eye"
"#c:cooked_insects"
]
}

View file

@ -1,11 +1,6 @@
{
"replace": false,
"values": [
"minecraft:cooked_porkchop",
"minecraft:cooked_beef",
"minecraft:cooked_mutton",
"minecraft:cooked_rabbit",
"minecraft:rabbit_stew",
"minecraft:cooked_chicken"
"#c:cooked_meats"
]
}

View file

@ -10,6 +10,7 @@
"minecraft:dandelion",
"minecraft:tall_grass",
"minecraft:hay_block",
"minecraft:wheat"
"minecraft:wheat",
"#c:foraging/edibles"
]
}

View file

@ -3,6 +3,7 @@
"values": [
"minecraft:allium",
"minecraft:white_tulip",
"unicopia:burned_juice"
"unicopia:burned_juice",
"#c:foraging/risky"
]
}

View file

@ -1,8 +1,6 @@
{
"replace": false,
"values": [
"unicopia:love_bottle",
"unicopia:love_bucket",
"unicopia:love_mug"
"#c:love"
]
}

View file

@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"unicopia:pinecone"
"#c:pinecones"
]
}

View file

@ -1,9 +1,6 @@
{
"replace": false,
"values": [
"minecraft:pufferfish",
"minecraft:cod",
"minecraft:salmon",
"minecraft:tropical_fish"
"#c:raw_fish"
]
}

View file

@ -1,8 +1,6 @@
{
"replace": false,
"values": [
"minecraft:spider_eye",
"unicopia:wheat_worms",
"unicopia:butterfly"
"#c:raw_insects"
]
}

View file

@ -1,10 +1,6 @@
{
"replace": false,
"values": [
"minecraft:porkchop",
"minecraft:beef",
"minecraft:mutton",
"minecraft:rabbit",
"minecraft:chicken"
"#c:raw_meats"
]
}

View file

@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"minecraft:rotten_flesh"
"#c:rotten_meats"
]
}

View file

@ -4,7 +4,7 @@
"rarity": 3,
"drops": [
{ "weight": 1, "item": "unicopia:rotten_apple" },
{ "weight": 2, "item": "unicopia:acorn" },
{ "weight": 3, "item": "minecraft:stick" }
{ "weight": 2, "tag": "c:acorns" },
{ "weight": 3, "tag": "c:stick" }
]
}

View file

@ -4,7 +4,7 @@
"wideTrunk": true,
"rarity": 3,
"drops": [
{ "weight": 1, "item": "unicopia:pinecone" },
{ "weight": 4, "item": "unicopia:stick" }
{ "weight": 1, "tag": "c:pinecones" },
{ "weight": 4, "tag": "c:sticks" }
]
}