Skip to content

Commit

Permalink
Start on data generation
Browse files Browse the repository at this point in the history
  • Loading branch information
Prospector committed Apr 5, 2020
1 parent 60f7eb5 commit 6191d26
Show file tree
Hide file tree
Showing 332 changed files with 2,985 additions and 1,491 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@ bin/
# fabric

run/

# minecraft

generated/
logs/
18 changes: 15 additions & 3 deletions src/main/java/com/campanion/Campanion.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,32 @@
import com.campanion.block.CampanionBlocks;
import com.campanion.blockentity.CampanionBlockEntities;
import com.campanion.config.CampanionConfigManager;
import com.campanion.data.CampanionData;
import com.campanion.entity.CampanionEntities;
import com.campanion.item.BackpackItem;
import com.campanion.item.CampanionItems;
import com.campanion.network.C2SEmptyBackpack;
import com.campanion.network.C2SRotateHeldItem;
import com.campanion.network.S2CClearBackpackHeldItem;
import com.campanion.sound.CampanionSoundEvents;
import com.campanion.stat.CampanionStats;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
import net.fabricmc.fabric.api.event.server.ServerTickCallback;
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
import net.minecraft.data.Main;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.DefaultedList;
import net.minecraft.util.Identifier;
import net.minecraft.util.ItemScatterer;
import net.minecraft.util.registry.Registry;

import java.util.Objects;
import java.io.IOException;

public class Campanion implements ModInitializer {

Expand All @@ -47,16 +49,26 @@ public static void register() {
CampanionBlocks.register();
CampanionBlockEntities.register();
CampanionEntities.register();

CampanionCriteria.loadClass();
CampanionStats.loadClass();

FabricItemGroupBuilder.create(new Identifier(MOD_ID, "items")).icon(() -> Items.CAMPFIRE.asItem().getStackForRender()).appendItems(stacks -> Registry.ITEM.forEach(item -> {
FabricItemGroupBuilder.create(new Identifier(MOD_ID, "items")).icon(() -> CampanionItems.SMORE.asItem().getStackForRender()).appendItems(stacks -> Registry.ITEM.forEach(item -> {
if (Registry.ITEM.getId(item).getNamespace().equals(MOD_ID)) {
item.appendStacks(item.getGroup(), (DefaultedList<ItemStack>) stacks);
}
})).build();

registerServerboundPackets();
registerBackpackHandler();

if (CampanionData.ENABLED) {
try {
Main.main(new String[]{"--server"});
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void registerServerboundPackets() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

public class CampanionCriteria {
public static final LocationArrivalCriterion SLEPT_IN_SLEEPING_BAG = register(new LocationArrivalCriterion(new Identifier(Campanion.MOD_ID, "slept_in_sleeping_bag")));
public static final CountCriterion STONE_SKIPS = register(new CountCriterion(new Identifier(Campanion.MOD_ID, "stone_skips")));
public static final KilledWithStoneCriterion KILLED_WITH_STONE = register(new KilledWithStoneCriterion());

private static <T extends Criterion<?>> T register(T criterion) {
return AccessorCriterions.callRegister(criterion);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.campanion.advancement.criterion;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.advancement.criterion.AbstractCriterionConditions;
import net.minecraft.predicate.NumberRange;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;

public class CountCriterion extends AbstractCriterion<CountCriterion.Conditions> {
public final Identifier id;

public CountCriterion(Identifier id) {
this.id = id;
}

public Identifier getId() {
return id;
}

public CountCriterion.Conditions conditionsFromJson(JsonObject json, JsonDeserializationContext context) {
NumberRange.IntRange count = NumberRange.IntRange.fromJson(json.get("count"));
return new CountCriterion.Conditions(id, count);
}

public void trigger(ServerPlayerEntity player, int count) {
this.test(player.getAdvancementTracker(), (conditions) -> conditions.matches(count));
}

public static class Conditions extends AbstractCriterionConditions {
private final NumberRange.IntRange count;

public Conditions(Identifier id, NumberRange.IntRange count) {
super(id);
this.count = count;
}

public static CountCriterion.Conditions create(Identifier id, NumberRange.IntRange count) {
return new CountCriterion.Conditions(id, count);
}

public boolean matches(int count) {
return this.count.test(count);
}

public JsonElement toJson() {
JsonObject json = new JsonObject();
json.add("count", this.count.toJson());
return json;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.campanion.advancement.criterion;

import com.campanion.Campanion;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.advancement.criterion.AbstractCriterionConditions;
import net.minecraft.entity.Entity;
import net.minecraft.predicate.NumberRange;
import net.minecraft.predicate.entity.EntityPredicate;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.Identifier;

public class KilledWithStoneCriterion extends AbstractCriterion<KilledWithStoneCriterion.Conditions> {
public static final Identifier ID = new Identifier(Campanion.MOD_ID, "killed_with_stone");

public Identifier getId() {
return ID;
}

public KilledWithStoneCriterion.Conditions conditionsFromJson(JsonObject json, JsonDeserializationContext context) {
return new KilledWithStoneCriterion.Conditions(EntityPredicate.fromJson(json.get("entity")), NumberRange.IntRange.fromJson(json.get("skips")));
}

public void trigger(ServerPlayerEntity player, Entity entity, int count) {
this.test(player.getAdvancementTracker(), (conditions) -> conditions.matches(player, entity, count));
}

public static class Conditions extends AbstractCriterionConditions {
private final EntityPredicate entity;
private final NumberRange.IntRange skips;

public Conditions(EntityPredicate entity, NumberRange.IntRange skips) {
super(KilledWithStoneCriterion.ID);
this.entity = entity;
this.skips = skips;
}

public static KilledWithStoneCriterion.Conditions create(EntityPredicate entity, NumberRange.IntRange count) {
return new KilledWithStoneCriterion.Conditions(entity, count);
}

public boolean matches(ServerPlayerEntity player, Entity entity, int count) {
return this.skips.test(count) && this.entity.test(player, entity);
}

public JsonElement toJson() {
JsonObject json = new JsonObject();
json.add("entity", this.entity.serialize());
json.add("skips", this.skips.toJson());
return json;
}
}
}
78 changes: 37 additions & 41 deletions src/main/java/com/campanion/block/CampanionBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,17 @@
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.DyeColor;
import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
import net.minecraft.util.registry.Registry;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;

public class CampanionBlocks {

private static final Map<Identifier, BlockItem> ITEMS = new LinkedHashMap<>();
private static final Map<Identifier, Block> BLOCKS = new LinkedHashMap<>();

public static final Block ROPE_BRIDGE_ANCHOR = add("rope_bridge_post", new RopeBridgePostBlock(FabricBlockSettings.of(Material.WOOD).sounds(BlockSoundGroup.WOOD).strength(1.0F, 1.0F).dynamicBounds().nonOpaque().build()), ItemGroup.TOOLS);
public static final Block ROPE_BRIDGE_POST = add("rope_bridge_post", new RopeBridgePostBlock(FabricBlockSettings.of(Material.WOOD).sounds(BlockSoundGroup.WOOD).strength(1.0F, 1.0F).dynamicBounds().nonOpaque().build()), ItemGroup.TOOLS);
public static final Block ROPE_BRIDGE_PLANKS = add("rope_bridge_planks", new RopeBridgePlanksBlock(FabricBlockSettings.of(Material.WOOD).sounds(BlockSoundGroup.WOOD).strength(0.5F, 1.0F).dynamicBounds().nonOpaque().build()));
public static final Block ROPE_LADDER = add("rope_ladder", new RopeLadderBlock(FabricBlockSettings.of(Material.WOOD).nonOpaque().hardness(0.2F).sounds(BlockSoundGroup.LADDER).build()), ItemGroup.DECORATIONS);

Expand Down Expand Up @@ -83,39 +79,39 @@ public class CampanionBlocks {
public static final TentTopBlock RED_TENT_TOP = tentTop(DyeColor.RED);
public static final TentTopBlock BLACK_TENT_TOP = tentTop(DyeColor.BLACK);

public static final TentTopPoleBlock WHITE_TENT_TOP_POLE = tentTopPole(DyeColor.WHITE);
public static final TentTopPoleBlock ORANGE_TENT_TOP_POLE = tentTopPole(DyeColor.ORANGE);
public static final TentTopPoleBlock MAGENTA_TENT_TOP_POLE = tentTopPole(DyeColor.MAGENTA);
public static final TentTopPoleBlock LIGHT_BLUE_TENT_TOP_POLE = tentTopPole(DyeColor.LIGHT_BLUE);
public static final TentTopPoleBlock YELLOW_TENT_TOP_POLE = tentTopPole(DyeColor.YELLOW);
public static final TentTopPoleBlock LIME_TENT_TOP_POLE = tentTopPole(DyeColor.LIME);
public static final TentTopPoleBlock PINK_TENT_TOP_POLE = tentTopPole(DyeColor.PINK);
public static final TentTopPoleBlock GRAY_TENT_TOP_POLE = tentTopPole(DyeColor.GRAY);
public static final TentTopPoleBlock LIGHT_GRAY_TENT_TOP_POLE = tentTopPole(DyeColor.LIGHT_GRAY);
public static final TentTopPoleBlock CYAN_TENT_TOP_POLE = tentTopPole(DyeColor.CYAN);
public static final TentTopPoleBlock PURPLE_TENT_TOP_POLE = tentTopPole(DyeColor.PURPLE);
public static final TentTopPoleBlock BLUE_TENT_TOP_POLE = tentTopPole(DyeColor.BLUE);
public static final TentTopPoleBlock BROWN_TENT_TOP_POLE = tentTopPole(DyeColor.BROWN);
public static final TentTopPoleBlock GREEN_TENT_TOP_POLE = tentTopPole(DyeColor.GREEN);
public static final TentTopPoleBlock RED_TENT_TOP_POLE = tentTopPole(DyeColor.RED);
public static final TentTopPoleBlock BLACK_TENT_TOP_POLE = tentTopPole(DyeColor.BLACK);

public static final TentTopFlatBlock WHITE_TENT_TOP_FLAT = tentTopFlat(DyeColor.WHITE);
public static final TentTopFlatBlock ORANGE_TENT_TOP_FLAT = tentTopFlat(DyeColor.ORANGE);
public static final TentTopFlatBlock MAGENTA_TENT_TOP_FLAT = tentTopFlat(DyeColor.MAGENTA);
public static final TentTopFlatBlock LIGHT_BLUE_TENT_TOP_FLAT = tentTopFlat(DyeColor.LIGHT_BLUE);
public static final TentTopFlatBlock YELLOW_TENT_TOP_FLAT = tentTopFlat(DyeColor.YELLOW);
public static final TentTopFlatBlock LIME_TENT_TOP_FLAT = tentTopFlat(DyeColor.LIME);
public static final TentTopFlatBlock PINK_TENT_TOP_FLAT = tentTopFlat(DyeColor.PINK);
public static final TentTopFlatBlock GRAY_TENT_TOP_FLAT = tentTopFlat(DyeColor.GRAY);
public static final TentTopFlatBlock LIGHT_GRAY_TENT_TOP_FLAT = tentTopFlat(DyeColor.LIGHT_GRAY);
public static final TentTopFlatBlock CYAN_TENT_TOP_FLAT = tentTopFlat(DyeColor.CYAN);
public static final TentTopFlatBlock PURPLE_TENT_TOP_FLAT = tentTopFlat(DyeColor.PURPLE);
public static final TentTopFlatBlock BLUE_TENT_TOP_FLAT = tentTopFlat(DyeColor.BLUE);
public static final TentTopFlatBlock BROWN_TENT_TOP_FLAT = tentTopFlat(DyeColor.BROWN);
public static final TentTopFlatBlock GREEN_TENT_TOP_FLAT = tentTopFlat(DyeColor.GREEN);
public static final TentTopFlatBlock RED_TENT_TOP_FLAT = tentTopFlat(DyeColor.RED);
public static final TentTopFlatBlock BLACK_TENT_TOP_FLAT = tentTopFlat(DyeColor.BLACK);
public static final TentTopPoleBlock WHITE_TOPPED_TENT_POLE = toppedTentPole(DyeColor.WHITE);
public static final TentTopPoleBlock ORANGE_TOPPED_TENT_POLE = toppedTentPole(DyeColor.ORANGE);
public static final TentTopPoleBlock MAGENTA_TOPPED_TENT_POLE = toppedTentPole(DyeColor.MAGENTA);
public static final TentTopPoleBlock LIGHT_BLUE_TOPPED_TENT_POLE = toppedTentPole(DyeColor.LIGHT_BLUE);
public static final TentTopPoleBlock YELLOW_TOPPED_TENT_POLE = toppedTentPole(DyeColor.YELLOW);
public static final TentTopPoleBlock LIME_TOPPED_TENT_POLE = toppedTentPole(DyeColor.LIME);
public static final TentTopPoleBlock PINK_TOPPED_TENT_POLE = toppedTentPole(DyeColor.PINK);
public static final TentTopPoleBlock GRAY_TOPPED_TENT_POLE = toppedTentPole(DyeColor.GRAY);
public static final TentTopPoleBlock LIGHT_GRAY_TOPPED_TENT_POLE = toppedTentPole(DyeColor.LIGHT_GRAY);
public static final TentTopPoleBlock CYAN_TOPPED_TENT_POLE = toppedTentPole(DyeColor.CYAN);
public static final TentTopPoleBlock PURPLE_TOPPED_TENT_POLE = toppedTentPole(DyeColor.PURPLE);
public static final TentTopPoleBlock BLUE_TOPPED_TENT_POLE = toppedTentPole(DyeColor.BLUE);
public static final TentTopPoleBlock BROWN_TOPPED_TENT_POLE = toppedTentPole(DyeColor.BROWN);
public static final TentTopPoleBlock GREEN_TOPPED_TENT_POLE = toppedTentPole(DyeColor.GREEN);
public static final TentTopPoleBlock RED_TOPPED_TENT_POLE = toppedTentPole(DyeColor.RED);
public static final TentTopPoleBlock BLACK_TOPPED_TENT_POLE = toppedTentPole(DyeColor.BLACK);

public static final TentTopFlatBlock WHITE_FLAT_TENT_TOP = tentTopFlat(DyeColor.WHITE);
public static final TentTopFlatBlock ORANGE_FLAT_TENT_TOP = tentTopFlat(DyeColor.ORANGE);
public static final TentTopFlatBlock MAGENTA_FLAT_TENT_TOP = tentTopFlat(DyeColor.MAGENTA);
public static final TentTopFlatBlock LIGHT_BLUE_FLAT_TENT_TOP = tentTopFlat(DyeColor.LIGHT_BLUE);
public static final TentTopFlatBlock YELLOW_FLAT_TENT_TOP = tentTopFlat(DyeColor.YELLOW);
public static final TentTopFlatBlock LIME_FLAT_TENT_TOP = tentTopFlat(DyeColor.LIME);
public static final TentTopFlatBlock PINK_FLAT_TENT_TOP = tentTopFlat(DyeColor.PINK);
public static final TentTopFlatBlock GRAY_FLAT_TENT_TOP = tentTopFlat(DyeColor.GRAY);
public static final TentTopFlatBlock LIGHT_GRAY_FLAT_TENT_TOP = tentTopFlat(DyeColor.LIGHT_GRAY);
public static final TentTopFlatBlock CYAN_FLAT_TENT_TOP = tentTopFlat(DyeColor.CYAN);
public static final TentTopFlatBlock PURPLE_FLAT_TENT_TOP = tentTopFlat(DyeColor.PURPLE);
public static final TentTopFlatBlock BLUE_FLAT_TENT_TOP = tentTopFlat(DyeColor.BLUE);
public static final TentTopFlatBlock BROWN_FLAT_TENT_TOP = tentTopFlat(DyeColor.BROWN);
public static final TentTopFlatBlock GREEN_FLAT_TENT_TOP = tentTopFlat(DyeColor.GREEN);
public static final TentTopFlatBlock RED_FLAT_TENT_TOP = tentTopFlat(DyeColor.RED);
public static final TentTopFlatBlock BLACK_FLAT_TENT_TOP = tentTopFlat(DyeColor.BLACK);

public static final Block TENT_POLE = add("tent_pole", new TentPoleBlock(FabricBlockSettings.of(Material.WOOD).nonOpaque().hardness(-1F).sounds(BlockSoundGroup.WOOD).build()), (ItemGroup) null);

Expand Down Expand Up @@ -166,12 +162,12 @@ private static TentTopBlock tentTop(DyeColor color) {
return add(color.getName() + "_tent_top", new TentTopBlock(FabricBlockSettings.of(Material.WOOL).nonOpaque().hardness(-1).sounds(BlockSoundGroup.WOOL).build(), color), (ItemGroup) null);
}

private static TentTopPoleBlock tentTopPole(DyeColor color) {
return add(color.getName() + "_tent_top_pole", new TentTopPoleBlock(FabricBlockSettings.of(Material.WOOL).nonOpaque().hardness(-1).sounds(BlockSoundGroup.WOOL).build(), color), (ItemGroup) null);
private static TentTopPoleBlock toppedTentPole(DyeColor color) {
return add(color.getName() + "_topped_tent_pole", new TentTopPoleBlock(FabricBlockSettings.of(Material.WOOL).nonOpaque().hardness(-1).sounds(BlockSoundGroup.WOOL).build(), color), (ItemGroup) null);
}

private static TentTopFlatBlock tentTopFlat(DyeColor color) {
return add(color.getName() + "_tent_top_flat", new TentTopFlatBlock(FabricBlockSettings.of(Material.WOOL).nonOpaque().hardness(-1).sounds(BlockSoundGroup.WOOL).build(), color), (ItemGroup) null);
return add(color.getName() + "_flat_tent_top", new TentTopFlatBlock(FabricBlockSettings.of(Material.WOOL).nonOpaque().hardness(-1).sounds(BlockSoundGroup.WOOL).build(), color), (ItemGroup) null);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class CampanionBlockEntities {
private static final Map<Identifier, BlockEntityType<? extends BlockEntity>> BLOCK_ENTITY_TYPES = new LinkedHashMap<>();

public static final BlockEntityType<RopeBridgePlanksBlockEntity> ROPE_BRIDGE_PLANK = add("rope_bridge_planks", RopeBridgePlanksBlockEntity::new, CampanionBlocks.ROPE_BRIDGE_PLANKS);
public static final BlockEntityType<RopeBridgePostBlockEntity> ROPE_BRIDGE_POST = add("rope_bridge_post", RopeBridgePostBlockEntity::new, CampanionBlocks.ROPE_BRIDGE_ANCHOR);
public static final BlockEntityType<RopeBridgePostBlockEntity> ROPE_BRIDGE_POST = add("rope_bridge_post", RopeBridgePostBlockEntity::new, CampanionBlocks.ROPE_BRIDGE_POST);

public static final BlockEntityType<LawnChairBlockEntity> LAWN_CHAIR = add("lawn_chair", LawnChairBlockEntity::new, WHITE_LAWN_CHAIR,
ORANGE_LAWN_CHAIR, MAGENTA_LAWN_CHAIR, LIGHT_BLUE_LAWN_CHAIR, YELLOW_LAWN_CHAIR, LIME_LAWN_CHAIR, PINK_LAWN_CHAIR,GRAY_LAWN_CHAIR, LIGHT_GRAY_LAWN_CHAIR,
Expand All @@ -31,12 +31,12 @@ public class CampanionBlockEntities {
PINK_TENT_SIDE, GRAY_TENT_SIDE, LIGHT_GRAY_TENT_SIDE, CYAN_TENT_SIDE, PURPLE_TENT_SIDE, BLUE_TENT_SIDE, BROWN_TENT_SIDE,
GREEN_TENT_SIDE, RED_TENT_SIDE, BLACK_TENT_SIDE, WHITE_TENT_TOP, ORANGE_TENT_TOP, MAGENTA_TENT_TOP, LIGHT_BLUE_TENT_TOP,
YELLOW_TENT_TOP, LIME_TENT_TOP, PINK_TENT_TOP, GRAY_TENT_TOP, LIGHT_GRAY_TENT_TOP, CYAN_TENT_TOP, PURPLE_TENT_TOP, BLUE_TENT_TOP,
BROWN_TENT_TOP, GREEN_TENT_TOP, RED_TENT_TOP, BLACK_TENT_TOP, WHITE_TENT_TOP_POLE, ORANGE_TENT_TOP_POLE, MAGENTA_TENT_TOP_POLE,
LIGHT_BLUE_TENT_TOP_POLE, YELLOW_TENT_TOP_POLE, LIME_TENT_TOP_POLE, PINK_TENT_TOP_POLE, GRAY_TENT_TOP_POLE, LIGHT_GRAY_TENT_TOP_POLE,
CYAN_TENT_TOP_POLE, PURPLE_TENT_TOP_POLE, BLUE_TENT_TOP_POLE, BROWN_TENT_TOP_POLE, GREEN_TENT_TOP_POLE, RED_TENT_TOP_POLE,
BLACK_TENT_TOP_POLE, WHITE_TENT_TOP_FLAT, ORANGE_TENT_TOP_FLAT, MAGENTA_TENT_TOP_FLAT, LIGHT_BLUE_TENT_TOP_FLAT, YELLOW_TENT_TOP_FLAT,
LIME_TENT_TOP_FLAT, PINK_TENT_TOP_FLAT, GRAY_TENT_TOP_FLAT, LIGHT_GRAY_TENT_TOP_FLAT, CYAN_TENT_TOP_FLAT, PURPLE_TENT_TOP_FLAT,
BLUE_TENT_TOP_FLAT, BROWN_TENT_TOP_FLAT, GREEN_TENT_TOP_FLAT, RED_TENT_TOP_FLAT, BLACK_TENT_TOP_FLAT
BROWN_TENT_TOP, GREEN_TENT_TOP, RED_TENT_TOP, BLACK_TENT_TOP, WHITE_TOPPED_TENT_POLE, ORANGE_TOPPED_TENT_POLE, MAGENTA_TOPPED_TENT_POLE,
LIGHT_BLUE_TOPPED_TENT_POLE, YELLOW_TOPPED_TENT_POLE, LIME_TOPPED_TENT_POLE, PINK_TOPPED_TENT_POLE, GRAY_TOPPED_TENT_POLE, LIGHT_GRAY_TOPPED_TENT_POLE,
CYAN_TOPPED_TENT_POLE, PURPLE_TOPPED_TENT_POLE, BLUE_TOPPED_TENT_POLE, BROWN_TOPPED_TENT_POLE, GREEN_TOPPED_TENT_POLE, RED_TOPPED_TENT_POLE,
BLACK_TOPPED_TENT_POLE, WHITE_FLAT_TENT_TOP, ORANGE_FLAT_TENT_TOP, MAGENTA_FLAT_TENT_TOP, LIGHT_BLUE_FLAT_TENT_TOP, YELLOW_FLAT_TENT_TOP,
LIME_FLAT_TENT_TOP, PINK_FLAT_TENT_TOP, GRAY_FLAT_TENT_TOP, LIGHT_GRAY_FLAT_TENT_TOP, CYAN_FLAT_TENT_TOP, PURPLE_FLAT_TENT_TOP,
BLUE_FLAT_TENT_TOP, BROWN_FLAT_TENT_TOP, GREEN_FLAT_TENT_TOP, RED_FLAT_TENT_TOP, BLACK_FLAT_TENT_TOP
);

private static <T extends BlockEntity> BlockEntityType<T> add(String name, Supplier<? extends T> supplier, Block... blocks) {
Expand Down
Loading

0 comments on commit 6191d26

Please sign in to comment.