diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..f811f6ae --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Disable autocrlf on generated files, they always generate with LF +# Add any extra files or paths here to make git stop saying they +# are changed when only line endings change. +src/generated/**/.cache/cache text eol=lf +src/generated/**/*.json text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..12f86447 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run + +# Files from Forge MDK +forge*changelog.txt diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..93a70288 --- /dev/null +++ b/build.gradle @@ -0,0 +1,251 @@ +buildscript { + repositories { + // These repositories are only for Gradle plugins, put any other repositories in the repository block further below + maven { url = 'https://maven.minecraftforge.net' } + jcenter() + mavenCentral() + maven { name="sponge"; url 'https://repo.spongepowered.org/repository/maven-public/' } + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true + classpath 'org.spongepowered:mixingradle:0.7.32' + } +} +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. +plugins { + id 'eclipse' + id 'maven-publish' +} +apply plugin: 'net.minecraftforge.gradle' + +apply plugin: 'org.spongepowered.mixin' + + +version = '3.0' +group = 'com.hexagram2021.emeraldcraft' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = 'emeraldcraft' + +// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. +java.toolchain.languageVersion = JavaLanguageVersion.of(17) + +println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" +minecraft { + // The mappings can be changed at any time and must be in the following format. + // Channel: Version: + // official MCVersion Official field/method names from Mojang mapping files + // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official + // + // You must be aware of the Mojang license when using the 'official' or 'parchment' mappings. + // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md + // + // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge + // Additional setup is needed to use their mappings: https://github.com/ParchmentMC/Parchment/wiki/Getting-Started + // + // Use non-default mappings at your own risk. They may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'official', version: '1.18.2' + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default. + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. + runs { + client { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + + // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + arg "-mixin.config=emeraldcraft.mixins.json" + + // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + // This run config launches GameTestServer and runs all registered gametests, then exits. + // By default, the server will crash when no gametests are provided. + // The gametest system is also enabled by default for other run configs under the /test command. + gameTestServer { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + + // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be added/remove as needed separated by commas. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + + args '--mod', 'emeraldcraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + } +} + +// Include resources generated by data generators. +sourceSets.main.resources { srcDir 'src/generated/resources' } + +repositories { + // Put repositories for dependencies here + // ForgeGradle automatically adds the Forge maven and Maven Central for you + + // If you have mod jar dependencies in ./libs, you can declare them as a repository like so: + // flatDir { + // dir 'libs' + // } + maven { // TOP + url "https://cursemaven.com" + } + maven { // JEI + name 'DVS1 Maven FS' + url 'https://dvs1.progwml6.com/files/maven' + } + maven { //mirror + name = "ModMaven" + url = "https://modmaven.dev" + } +} + +dependencies { + minecraft 'net.minecraftforge:forge:1.18.2-40.1.0' + + compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.5.5.174:api") // Adds JEI API as a compile dependency + + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + + implementation fg.deobf("com.github.glitchfiend:TerraBlender-forge:1.18.2-1.1.0.99") //TerraBlender +} + +// Example for how to get properties into the manifest for reading at runtime. +jar { + manifest { + attributes([ + "Specification-Title" : "Emerald Craft Mod", + "Specification-Vendor" : "Hexagram", + "Specification-Version" : "1", // We are version 1 of ourselves + "Implementation-Title" : project.name, + "Implementation-Version" : project.jar.archiveVersion, + "Implementation-Vendor" : "Hexagram", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), + 'FMLCorePluginContainsFMLMod': 'true' + ]) + } +} + +// Example configuration to allow publishing using the maven-publish plugin +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing +// publish.dependsOn('reobfJar') + +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } + } + repositories { + maven { + url "file://${project.projectDir}/mcmodsrepo" + } + } +} + +mixin { + // MixinGradle Settings + add sourceSets.main, 'emeraldcraft.refmap.json' + config 'emeraldcraft.mixins.json' + + debug.verbose = true + debug.export = true +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java b/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java new file mode 100644 index 00000000..aed05cdc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java @@ -0,0 +1,112 @@ +package com.hexagram2021.emeraldcraft; + +import com.hexagram2021.emeraldcraft.client.ClientProxy; +import com.hexagram2021.emeraldcraft.common.CommonProxy; +import com.hexagram2021.emeraldcraft.common.ECContent; +import com.hexagram2021.emeraldcraft.common.ECSaveData; +import com.hexagram2021.emeraldcraft.common.ModVanillaCompat; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.world.ECWorldGen; +import com.hexagram2021.emeraldcraft.common.world.Villages; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.*; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.server.ServerStartedEvent; +import net.minecraftforge.eventbus.api.EventPriority; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.*; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLLoader; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.simple.SimpleChannel; +import org.apache.logging.log4j.LogManager; + +import javax.annotation.Nonnull; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Supplier; + +@Mod(EmeraldCraft.MODID) +public class EmeraldCraft { + public static final String MODID = "emeraldcraft"; + public static final String MODNAME = "Emerald Craft"; + public static final String VERSION = "${version}"; + + public static final CommonProxy proxy = DistExecutor.safeRunForDist(bootstrapErrorToXCPInDev(() -> ClientProxy::new), bootstrapErrorToXCPInDev(() -> CommonProxy::new)); + + public static final SimpleChannel packetHandler = NetworkRegistry.ChannelBuilder + .named(new ResourceLocation(MODID, "main")) + .networkProtocolVersion(() -> VERSION) + .serverAcceptedVersions(VERSION::equals) + .clientAcceptedVersions(VERSION::equals) + .simpleChannel(); + + // Complete hack: DistExecutor::safeRunForDist intentionally tries to access the "wrong" supplier in dev, which + // throws an error (rather than an exception) on J16 due to trying to load a client-only class. So we need to + // replace the error with an exception in dev. + //* + public static + Supplier bootstrapErrorToXCPInDev(Supplier in) { + if(FMLLoader.isProduction()) { + return in; + } + return () -> { + try { + return in.get(); + } catch(BootstrapMethodError e) { + throw new RuntimeException(e); + } + }; + } + //*/ + + public EmeraldCraft() { + ECLogger.logger = LogManager.getLogger(MODID); + IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + // bus.addListener(this::enqueueIMCs); + // MinecraftForge.EVENT_BUS.addListener(this::registerCommands); + MinecraftForge.EVENT_BUS.addListener(this::serverStarted); + // ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ECCommonConfig.CONFIG_SPEC.getBaseSpec()); + // ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, ECClientConfig.CONFIG_SPEC.getBaseSpec()); + // ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ECServerConfig.CONFIG_SPEC.getBaseSpec()); + DeferredWorkQueue queue = DeferredWorkQueue.lookup(Optional.of(ModLoadingStage.CONSTRUCT)).orElseThrow(); + Consumer runLater = job -> queue.enqueueWork( + ModLoadingContext.get().getActiveContainer(), job + ); + ECContent.modConstruction(bus, runLater); + DistExecutor.safeRunWhenOn(Dist.CLIENT, bootstrapErrorToXCPInDev(() -> ClientProxy::modConstruction)); + + MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, ECWorldGen::biomeModification); + bus.addListener(this::setup); + MinecraftForge.EVENT_BUS.register(this); + } + + public void setup(FMLCommonSetupEvent event) { + event.enqueueWork(Villages::init); + event.enqueueWork(ECContent::init); + event.enqueueWork(ModVanillaCompat::setup); + } + + public void serverStarted(ServerStartedEvent event) { + ServerLevel world = event.getServer().getLevel(Level.OVERWORLD); + if(!world.isClientSide) { + ECSaveData worldData = world.getDataStorage().computeIfAbsent(ECSaveData::new, ECSaveData::new, ECSaveData.dataName); + ECSaveData.setInstance(worldData); + } + } + + public static final CreativeModeTab ITEM_GROUP = new CreativeModeTab(MODID) { + @Override + @Nonnull + public ItemStack makeIcon() { + return new ItemStack(ECBlocks.TO_STAIRS.get(new ResourceLocation(ResourceLocation.DEFAULT_NAMESPACE, "emerald_block"))); + } + }; +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java new file mode 100644 index 00000000..2fe30c1a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientEventHandler.java @@ -0,0 +1,14 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; +import org.jetbrains.annotations.NotNull; + + +public class ClientEventHandler implements ResourceManagerReloadListener { + @Override + public void onResourceManagerReload(@NotNull ResourceManager resourceManager) { + EmeraldCraft.proxy.clearRenderCaches(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java new file mode 100644 index 00000000..8bd8d4d1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.client; + + +import com.hexagram2021.emeraldcraft.client.models.*; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraft.client.model.BoatModel; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@EventBusSubscriber(modid = MODID, value = Dist.CLIENT, bus = EventBusSubscriber.Bus.MOD) +public class ClientMobEventSubscriber { + @SubscribeEvent + public static void onRegisterLayers(EntityRenderersEvent.RegisterLayerDefinitions event) { + event.registerLayerDefinition(PiglinCuteyModel.LAYER_LOCATION, PiglinCuteyModel::createBodyLayer); + event.registerLayerDefinition(NetherPigmanModel.LAYER_LOCATION, NetherPigmanModel::createBodyLayer); + event.registerLayerDefinition(NetherLambmanModel.LAYER_LOCATION, NetherLambmanModel::createBodyLayer); + + for(ECBoat.ECBoatType type: ECBoat.ECBoatType.values()) { + ForgeHooksClient.registerLayerDefinition(ECBoatRenderer.createBoatModelName(type), BoatModel::createBodyModel); + } + } + + @SubscribeEvent + public static void onRegisterRenderer(EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(ECEntities.PIGLIN_CUTEY.get(), PiglinCuteyRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_PIGMAN.get(), NetherPigmanRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_LAMBMAN.get(), NetherLambmanRenderer::new); + event.registerEntityRenderer(ECEntities.BOAT.get(), ECBoatRenderer::new); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java new file mode 100644 index 00000000..7f4e1a7e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java @@ -0,0 +1,77 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.common.CommonProxy; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.*; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECWoodType; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.level.FoliageColor; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.ColorHandlerEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + + +@Mod.EventBusSubscriber(value = Dist.CLIENT, modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ClientProxy extends CommonProxy { + public static void modConstruction() { + + } + + @SubscribeEvent + public static void setup(final FMLClientSetupEvent event) { + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.WARPED_WART.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.CYAN_PETUNIA.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.MAGENTA_PETUNIA.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.GINKGO_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.POTTED_CYAN_PETUNIA.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.POTTED_MAGENTA_PETUNIA.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.POTTED_GINKGO_SAPLING.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.Plant.GINKGO_LEAVES.get(), RenderType.cutoutMipped()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.TO_DOOR.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.TO_TRAPDOOR.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.WorkStation.CARPENTRY_TABLE.get(), RenderType.cutout()); + ItemBlockRenderTypes.setRenderLayer(ECBlocks.WorkStation.CRYSTALBALL_TABLE.get(), RenderType.translucent()); + + registerContainersAndScreens(); + + registerWoodTypes(); + } + + private static void registerContainersAndScreens() { + MenuScreens.register(ECContainerTypes.CARPENTRY_TABLE_MENU.get(), CarpentryTableScreen::new); + MenuScreens.register(ECContainerTypes.GLASS_KILN_MENU.get(), GlassKilnScreen::new); + MenuScreens.register(ECContainerTypes.MINERAL_TABLE_MENU.get(), MineralTableScreen::new); + MenuScreens.register(ECContainerTypes.CONTINUOUS_MINER_MENU.get(), ContinuousMinerScreen::new); + MenuScreens.register(ECContainerTypes.ICE_MAKER_MENU.get(), IceMakerScreen::new); + MenuScreens.register(ECContainerTypes.MELTER_MENU.get(), MelterScreen::new); + } + + private static void registerWoodTypes() { + Sheets.addWoodType(ECWoodType.GINKGO); + } + + + @SubscribeEvent + public static void registerBlockColors(ColorHandlerEvent.Block event) { + event.getBlockColors().register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageFoliageColor(world, pos) : FoliageColor.get(0.5D, 1.0D), + ECBlocks.Plant.GINKGO_LEAVES.get()); + } + + @SubscribeEvent + public static void registerItemColors(ColorHandlerEvent.Item event) { + event.getItemColors().register((stack, tintIndex) -> + event.getBlockColors().getColor(((BlockItem)stack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex), + ECBlocks.Plant.GINKGO_LEAVES); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/ECBoatRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/ECBoatRenderer.java new file mode 100644 index 00000000..5470f2fb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ECBoatRenderer.java @@ -0,0 +1,47 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.mojang.datafixers.util.Pair; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.renderer.entity.BoatRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.Map; +import java.util.stream.Stream; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class ECBoatRenderer extends BoatRenderer { + private final Map> boatResources; + + public ECBoatRenderer(EntityRendererProvider.Context context) { + super(context); + this.boatResources = Stream.of(ECBoat.ECBoatType.values()).collect( + ImmutableMap.toImmutableMap((key) -> key, + (model) -> Pair.of( + new ResourceLocation(MODID, "textures/entity/boat/" + model.getName() + ".png"), + new BoatModel(context.bakeLayer(createBoatModelName(model))) + )) + ); + } + + @Override + public Pair getModelWithLocation(Boat boat) { + return this.boatResources.get(((ECBoat)boat).getECBoatType()); + } + + private static ModelLayerLocation createLocation(String name, String layer) { + return new ModelLayerLocation(new ResourceLocation(MODID, name), layer); + } + + public static ModelLayerLocation createBoatModelName(ECBoat.ECBoatType model) { + return createLocation("boat/" + model.getName(), "main"); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/NetherLambmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/NetherLambmanRenderer.java new file mode 100644 index 00000000..2edd87f4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/NetherLambmanRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.client.models.NetherLambmanModel; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherLambmanRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/nether_lambman/nether_lambman.png"); + + public NetherLambmanRenderer(EntityRendererProvider.Context manager) { + super(manager, new NetherLambmanModel<>(manager.bakeLayer(NetherLambmanModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull NetherLambmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/NetherPigmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/NetherPigmanRenderer.java new file mode 100644 index 00000000..26d2431b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/NetherPigmanRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.client.models.NetherPigmanModel; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherPigmanRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/nether_pigman/nether_pigman.png"); + + public NetherPigmanRenderer(EntityRendererProvider.Context manager) { + super(manager, new NetherPigmanModel<>(manager.bakeLayer(NetherPigmanModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull NetherPigmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/PiglinCuteyRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/PiglinCuteyRenderer.java new file mode 100644 index 00000000..5441fb82 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/PiglinCuteyRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import com.hexagram2021.emeraldcraft.client.models.PiglinCuteyModel; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class PiglinCuteyRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/piglin_cutey/piglin_cutey.png"); + + public PiglinCuteyRenderer(EntityRendererProvider.Context manager) { + super(manager, new PiglinCuteyModel<>(manager.bakeLayer(PiglinCuteyModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull PiglinCuteyEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java new file mode 100644 index 00000000..24647f82 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherLambmanModel extends PlayerModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "nether_lambman"), "main"); + public NetherLambmanModel(ModelPart root) { + super(root, false); + } + + public static LayerDefinition createBodyLayer() { + return LayerDefinition.create(PlayerModel.createMesh(new CubeDeformation(0.0F), false), 64, 64); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java new file mode 100644 index 00000000..1403d7dc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import net.minecraft.client.model.PlayerModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class NetherPigmanModel extends PlayerModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "nether_pigman"), "main"); + public NetherPigmanModel(ModelPart root) { + super(root, false); + } + + public static LayerDefinition createBodyLayer() { + return LayerDefinition.create(PlayerModel.createMesh(new CubeDeformation(0.0F), false), 64, 64); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java new file mode 100644 index 00000000..916b8b95 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java @@ -0,0 +1,288 @@ +// Made with Blockbench 4.1.4 +// Exported for Minecraft version 1.17 with Mojang mappings +// Paste this class into your mod and generate all required imports +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.model.*; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class PiglinCuteyModel extends HierarchicalModel implements ArmedModel, HeadedModel { + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "piglin_cutey"), "main"); + private final ModelPart root; + private final ModelPart body; + private final ModelPart head; + private final ModelPart LeftEar; + private final ModelPart RightEar; + private final ModelPart LeftArm; + private final ModelPart RightArm; + private final ModelPart LeftLeg; + private final ModelPart RightLeg; + + public HumanoidModel.ArmPose leftArmPose = HumanoidModel.ArmPose.EMPTY; + public HumanoidModel.ArmPose rightArmPose = HumanoidModel.ArmPose.EMPTY; + + public PiglinCuteyModel(ModelPart root) { + this.root = root; + this.body = root.getChild("body"); + this.head = root.getChild("head"); + this.LeftEar = this.head.getChild("left_ear"); + this.RightEar = this.head.getChild("right_ear"); + this.LeftArm = root.getChild("left_arm"); + this.RightArm = root.getChild("right_arm"); + this.LeftLeg = root.getChild("left_leg"); + this.RightLeg = root.getChild("right_leg"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition bodyDef = partdefinition.addOrReplaceChild("body", CubeListBuilder.create().texOffs(16, 16).addBox(-4.0F, 1.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(16, 32).addBox(-4.0F, 1.0F, -2.0F, 8.0F, 12.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition headDef = partdefinition.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-5.0F, -7.0F, -4.0F, 10.0F, 8.0F, 8.0F, new CubeDeformation(0.24F)) + .texOffs(29, 1).addBox(-4.0F, -3.0F, -4.0F, 8.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(2, 4).addBox(3.0F, -4.0F, -5.0F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(2, 0).addBox(-4.0F, -4.0F, -5.0F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition leftEar = headDef.addOrReplaceChild( + "left_ear", + CubeListBuilder.create().texOffs(51, 6) + .addBox(-0.5F, 1.0F, -2.0F, 1.0F, 5.0F, 4.0F, + new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(5.0F, -6.0F, 0.0F, 0.0F, 0.0F, -0.3491F) + ); + PartDefinition rightEar = headDef.addOrReplaceChild( + "right_ear", + CubeListBuilder.create().texOffs(39, 6) + .addBox(-0.5F, 1.0F, -2.0F, 1.0F, 5.0F, 4.0F, + new CubeDeformation(0.0F)), + PartPose.offsetAndRotation(-5.0F, -6.0F, 0.0F, 0.0F, 0.0F, 0.3491F) + ); + PartDefinition LeftArm = partdefinition.addOrReplaceChild( + "left_arm", CubeListBuilder.create().texOffs(34, 48) + .addBox(-1.0F, -1.0F, -2.0F, 3.0F, 10.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(5.0F, 2.0F, 0.0F) + ); + PartDefinition RightArm = partdefinition.addOrReplaceChild( + "right_arm", + CubeListBuilder.create().texOffs(42, 16) + .addBox(-2.0F, -1.0F, -2.0F, 3.0F, 10.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(-5.0F, 2.0F, 0.0F) + ); + PartDefinition LeftLeg = partdefinition.addOrReplaceChild( + "left_leg", + CubeListBuilder.create().texOffs(18, 48) + .addBox(-1.4F, 1.0F, -2.0F, 3.0F, 11.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(1.9F, 11.0F, 0.0F) + ); + PartDefinition RightLeg = partdefinition.addOrReplaceChild( + "right_leg", + CubeListBuilder.create().texOffs(2, 16) + .addBox(-1.6F, 1.0F, -2.0F, 3.0F, 11.0F, 3.0F, + new CubeDeformation(0.0F)), + PartPose.offset(-1.9F, 11.0F, 0.0F) + ); + + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + this.head.yRot = netHeadYaw * ((float)Math.PI / 180F); + this.head.xRot = headPitch * ((float)Math.PI / 180F); + + this.body.yRot = 0.0F; + this.LeftArm.z = 0.0F; + this.LeftArm.x = 5.0F; + this.RightArm.z = 0.0F; + this.RightArm.x = -5.0F; + + this.LeftArm.xRot = Mth.cos(limbSwing * 0.6662F) * 2.0F * limbSwingAmount * 0.5F; + this.RightArm.xRot = Mth.cos(limbSwing * 0.6662F + (float)Math.PI) * 2.0F * limbSwingAmount * 0.5F; + this.LeftArm.zRot = 0.0F; + this.RightArm.zRot = 0.0F; + this.LeftLeg.xRot = Mth.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount; + this.RightLeg.xRot = Mth.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount; + this.LeftLeg.yRot = 0.0F; + this.RightLeg.yRot = 0.0F; + this.LeftLeg.zRot = 0.0F; + this.RightLeg.zRot = 0.0F; + if (this.riding) { + this.LeftArm.xRot += (-(float)Math.PI / 5F); + this.RightArm.xRot += (-(float)Math.PI / 5F); + this.LeftLeg.xRot = -1.4137167F; + this.LeftLeg.yRot = (-(float)Math.PI / 10F); + this.LeftLeg.zRot = -0.07853982F; + this.RightLeg.xRot = -1.4137167F; + this.RightLeg.yRot = ((float)Math.PI / 10F); + this.RightLeg.zRot = 0.07853982F; + } + + this.LeftArm.yRot = 0.0F; + this.RightArm.yRot = 0.0F; + + boolean rightHanded = entity.getMainArm() == HumanoidArm.RIGHT; + if (entity.isUsingItem()) { + boolean mainHandUseItem = entity.getUsedItemHand() == InteractionHand.MAIN_HAND; + if (mainHandUseItem == rightHanded) { + this.poseRightArm(entity); + } else { + this.poseLeftArm(entity); + } + } else { + boolean oppositeTwoHanded = rightHanded ? this.leftArmPose.isTwoHanded() : this.rightArmPose.isTwoHanded(); + if (rightHanded != oppositeTwoHanded) { + this.poseLeftArm(entity); + this.poseRightArm(entity); + } else { + this.poseRightArm(entity); + this.poseLeftArm(entity); + } + } + + this.body.xRot = 0.0F; + this.LeftLeg.z = 0.1F; + this.RightLeg.z = 0.1F; + this.LeftLeg.y = 12.0F; + this.RightLeg.y = 12.0F; + this.head.y = 0.0F; + this.body.y = 0.0F; + this.LeftArm.y = 2.0F; + this.RightArm.y = 2.0F; + + if (this.rightArmPose != HumanoidModel.ArmPose.SPYGLASS) { + AnimationUtils.bobModelPart(this.RightArm, ageInTicks, 1.0F); + } + + if (this.leftArmPose != HumanoidModel.ArmPose.SPYGLASS) { + AnimationUtils.bobModelPart(this.LeftArm, ageInTicks, -1.0F); + } + } + + public void copyPropertiesTo(PiglinCuteyModel model) { + super.copyPropertiesTo(model); + model.leftArmPose = this.leftArmPose; + model.rightArmPose = this.rightArmPose; + model.head.copyFrom(this.head); + model.body.copyFrom(this.body); + model.LeftArm.copyFrom(this.LeftArm); + model.RightArm.copyFrom(this.RightArm); + model.LeftLeg.copyFrom(this.LeftLeg); + model.RightLeg.copyFrom(this.RightLeg); + } + + private void poseRightArm(T entity) { + switch(this.rightArmPose) { + case EMPTY: + this.RightArm.yRot = 0.0F; + break; + case BLOCK: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - 0.9424779F; + this.RightArm.yRot = (-(float)Math.PI / 6F); + break; + case ITEM: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - ((float)Math.PI / 10F); + this.RightArm.yRot = 0.0F; + break; + case THROW_SPEAR: + this.RightArm.xRot = this.RightArm.xRot * 0.5F - (float)Math.PI; + this.RightArm.yRot = 0.0F; + break; + case BOW_AND_ARROW: + this.RightArm.yRot = -0.1F + this.head.yRot; + this.LeftArm.yRot = 0.1F + this.head.yRot + 0.4F; + this.RightArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + this.LeftArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + break; + case CROSSBOW_CHARGE: + AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, true); + break; + case CROSSBOW_HOLD: + AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, true); + break; + case SPYGLASS: + this.RightArm.xRot = Mth.clamp(this.head.xRot - 1.9198622F - (entity.isCrouching() ? 0.2617994F : 0.0F), -2.4F, 3.3F); + this.RightArm.yRot = this.head.yRot - 0.2617994F; + } + + } + + private void poseLeftArm(T entity) { + switch(this.leftArmPose) { + case EMPTY: + this.LeftArm.yRot = 0.0F; + break; + case BLOCK: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - 0.9424779F; + this.LeftArm.yRot = ((float)Math.PI / 6F); + break; + case ITEM: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - ((float)Math.PI / 10F); + this.LeftArm.yRot = 0.0F; + break; + case THROW_SPEAR: + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - (float)Math.PI; + this.LeftArm.yRot = 0.0F; + break; + case BOW_AND_ARROW: + this.RightArm.yRot = -0.1F + this.head.yRot - 0.4F; + this.LeftArm.yRot = 0.1F + this.head.yRot; + this.RightArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + this.LeftArm.xRot = (-(float)Math.PI / 2F) + this.head.xRot; + break; + case CROSSBOW_CHARGE: + AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, false); + break; + case CROSSBOW_HOLD: + AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, false); + break; + case SPYGLASS: + this.LeftArm.xRot = Mth.clamp(this.head.xRot - 1.9198622F - (entity.isCrouching() ? 0.2617994F : 0.0F), -2.4F, 3.3F); + this.LeftArm.yRot = this.head.yRot + 0.2617994F; + } + + } + + protected ModelPart getArm(HumanoidArm pSide) { + return pSide == HumanoidArm.LEFT ? this.LeftArm : this.RightArm; + } + + private HumanoidArm getAttackArm(T pEntity) { + HumanoidArm humanoidarm = pEntity.getMainArm(); + return pEntity.swingingArm == InteractionHand.MAIN_HAND ? humanoidarm : humanoidarm.getOpposite(); + } + + @Override + public ModelPart root() { + return root; + } + + @Override + public void translateToHand(HumanoidArm side, PoseStack matrixStack) { + this.getArm(side).translateAndRotate(matrixStack); + } + + @Override + public ModelPart getHead() { + return this.head; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java b/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java new file mode 100644 index 00000000..cb8a176c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java @@ -0,0 +1,38 @@ +/* + * Copyright by BluSunrize + */ + +package com.hexagram2021.emeraldcraft.common; + +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class CommonProxy { + public void onWorldLoad() { } + + public void resetManual() { } + + public void handleTileSound(SoundEvent soundEvent, BlockEntity tile, boolean tileActive, float volume, float pitch) { } + + public void stopTileSound(String soundName, BlockEntity tile) { } + + public Level getClientWorld() + { + return null; + } + + public Player getClientPlayer() + { + return null; + } + + public void reInitGui() { } + + public void clearRenderCaches() { } + + public void openManual() { } + + public void openTileScreen(String guiId, BlockEntity tileEntity) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java new file mode 100644 index 00000000..283a3183 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java @@ -0,0 +1,57 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.common.register.*; +import com.hexagram2021.emeraldcraft.common.world.Villages; +import com.hexagram2021.emeraldcraft.common.world.compat.*; +import com.hexagram2021.emeraldcraft.common.world.surface.ECSurfaceRules; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import terrablender.api.Regions; +import terrablender.api.SurfaceRuleManager; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) +public class ECContent { + public static void modConstruction(IEventBus bus, Consumer runLater) { + ECWoodType.init(); + ECBlocks.init(bus); + ECItems.init(bus); + Villages.Registers.POINTS_OF_INTEREST.register(bus); + Villages.Registers.PROFESSIONS.register(bus); + ECContainerTypes.init(bus); + ECRecipeSerializer.init(bus); + ECBlockEntity.init(bus); + ECEntities.init(bus); + } + + public static void init() { + SurfaceRuleManager.addSurfaceRules(SurfaceRuleManager.RuleCategory.OVERWORLD, MODID, ECSurfaceRules.overworld()); + SurfaceRuleManager.addSurfaceRules(SurfaceRuleManager.RuleCategory.NETHER, MODID, ECSurfaceRules.nether()); + Regions.register(new ECOverworldBiomeRegion(40)); + Regions.register(new ECNetherBiomeRegion(40)); + } + + @SubscribeEvent + public static void registerBiomes(RegistryEvent.Register event) { + ECBiomes.init(event); + } + + @SubscribeEvent + public static void registerFeatures(RegistryEvent.Register> event) { + ECFeatures.init(event); + } + + @SubscribeEvent + public static void registerStructures(RegistryEvent.Register> event) { + ECStructures.init(event); + ECConfiguredStructures.init(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java new file mode 100644 index 00000000..c3e6aeb8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java @@ -0,0 +1,47 @@ +package com.hexagram2021.emeraldcraft.common; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.world.level.saveddata.SavedData; + +import javax.annotation.Nonnull; + +public class ECSaveData extends SavedData { + private static ECSaveData INSTANCE; + public static final String dataName = "EmeraldCraft-SaveData"; + + public ECSaveData() + { + super(); + } + + public ECSaveData(CompoundTag nbt) { + this(); + } + + @Nonnull + @Override + public CompoundTag save(@Nonnull CompoundTag nbt) { + ListTag dimensionList = new ListTag(); + + //nbt.put("", dimensionList); + + + ListTag receivedShaderList = new ListTag(); + //nbt.put("", receivedShaderList); + + return nbt; + } + + + public static void markInstanceDirty() + { + if(INSTANCE!=null) + INSTANCE.setDirty(); + } + + public static void setInstance(ECSaveData in) + { + INSTANCE = in; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java b/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java new file mode 100644 index 00000000..9d6cb420 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class MobAttributeEventSubscriber { + + @SubscribeEvent + public static void onAttributeCreate(EntityAttributeCreationEvent event) { + event.put(ECEntities.PIGLIN_CUTEY.get(), PiglinCuteyEntity.createAttributes().build()); + event.put(ECEntities.NETHER_PIGMAN.get(), NetherPigmanEntity.createAttributes().build()); + event.put(ECEntities.NETHER_LAMBMAN.get(), NetherLambmanEntity.createAttributes().build()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java new file mode 100644 index 00000000..e480a920 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java @@ -0,0 +1,52 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.block.FireBlock; + +import java.util.HashMap; +import java.util.Map; + +public class ModVanillaCompat { + public static void setup() { + Map strippables = Maps.newHashMap(AxeItem.STRIPPABLES); + strippables.putAll( + ImmutableMap.builder() + .put(ECBlocks.Plant.GINKGO_LOG.get(), ECBlocks.Plant.STRIPPED_GINKGO_LOG.get()) + .put(ECBlocks.Plant.GINKGO_WOOD.get(), ECBlocks.Plant.STRIPPED_GINKGO_WOOD.get()) + .build() + ); + AxeItem.STRIPPABLES = strippables; + + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.GINKGO_LEAVES.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.GINKGO_SAPLING.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECItems.GINKGO_NUT.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.CYAN_PETUNIA.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.MAGENTA_PETUNIA.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECItems.WARPED_WART.asItem(), 0.65F); + + registerFlammable(ECBlocks.Plant.GINKGO_LEAVES.get(), 30, 60); + registerFlammable(ECBlocks.Plant.GINKGO_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.GINKGO_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_GINKGO_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_GINKGO_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.GINKGO_PLANKS.get(), 5, 20); + registerFlammable(ECBlocks.TO_SLAB.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_STAIRS.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE_GATE.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + } + + private static final FireBlock fireblock = (FireBlock)Blocks.FIRE; + + public static void registerFlammable(Block blockIn, int encouragement, int flammability) { + fireblock.setFlammable(blockIn, encouragement, flammability); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java new file mode 100644 index 00000000..49557400 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java @@ -0,0 +1,354 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.ContinuousMinerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.entity.HopperBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; +import java.util.Random; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ContinuousMinerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + protected static final int SLOT_INPUT = 0; + protected static final int SLOT_RESULT = 1; + public static final int DATA_FLUID = 0; + public static final int DATA_MINE_TIME = 1; + public static final int TOTAL_MINE_TIME = 120; + public static final int FLUID_LEVEL_BUCKET = 100; + public static final int MAX_FLUID_LEVEL = 250; + private static final int[] SLOTS_FOR_UP = new int[]{0}; + private static final int[] SLOTS_FOR_SIDES = new int[]{0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{1}; + protected NonNullList items = NonNullList.withSize(2, ItemStack.EMPTY); + + int fluid; + int mineTime; + + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case DATA_FLUID -> ContinuousMinerBlockEntity.this.fluid; + case DATA_MINE_TIME -> ContinuousMinerBlockEntity.this.mineTime; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case DATA_FLUID -> ContinuousMinerBlockEntity.this.fluid = value; + case DATA_MINE_TIME -> ContinuousMinerBlockEntity.this.mineTime = value; + } + + } + + public int getCount() { + return ContinuousMinerMenu.DATA_COUNT; + } + }; + + @Override @NotNull + protected Component getDefaultName() { + return new TranslatableComponent("container.continuous_miner"); + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + + return true; + } + + public ContinuousMinerBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.CONTINUOUS_MINER.get(), pos, state); + } + + private boolean isMining() { + return this.mineTime > 0; + } + + public int getFluidLevel() { + return this.fluid; + } + + public void setFluidLevel(int newFluidLevel) { + this.fluid = newFluidLevel; + } + + @Override + public void load(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.fluid = nbt.getInt("Fluid"); + this.mineTime = nbt.getInt("MineTime"); + } + + @Override + public void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("Fluid", this.fluid); + nbt.putInt("MineTime", this.mineTime); + ContainerHelper.saveAllItems(nbt, this.items); + } + + public static ItemStack byState(BlockState blockState, ServerLevel level, Random random) { + ResourceLocation rl; + if (blockState.is(BlockTags.OAK_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/oak_logs"); + } else if (blockState.is(BlockTags.SPRUCE_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/spruce_logs"); + } else if (blockState.is(BlockTags.BIRCH_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/birch_logs"); + } else if (blockState.is(BlockTags.JUNGLE_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/jungle_logs"); + } else if (blockState.is(BlockTags.ACACIA_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/acacia_logs"); + } else if (blockState.is(BlockTags.DARK_OAK_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/dark_oak_logs"); + } else if(blockState.is(BlockTags.CRIMSON_STEMS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/crimson_stems"); + } else if(blockState.is(BlockTags.WARPED_STEMS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/warped_stems"); + } else if(blockState.is(Blocks.CRIMSON_NYLIUM)) { + rl = new ResourceLocation(MODID, "continuous_miner/nylium/crimson_nylium"); + } else if(blockState.is(Blocks.WARPED_NYLIUM)) { + rl = new ResourceLocation(MODID, "continuous_miner/nylium/warped_nylium"); + } else if(blockState.is(BlockTags.BASE_STONE_NETHER) || blockState.is(Blocks.SOUL_SAND) || blockState.is(Blocks.SOUL_SOIL)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/nether"); + } else if(blockState.is(BlockTags.BASE_STONE_OVERWORLD) || blockState.is(Blocks.COBBLESTONE) || blockState.is(Blocks.COBBLED_DEEPSLATE)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/overworld"); + } else if(blockState.is(Blocks.GRAVEL) || blockState.is(Blocks.MAGMA_BLOCK)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/flint"); + } else if(blockState.is(Blocks.OBSIDIAN) || blockState.is(Blocks.CRYING_OBSIDIAN) || blockState.is(Blocks.BEDROCK)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/obsidian"); + } else { + return new ItemStack(Items.AIR); + } + List list = level.getServer().getLootTables().get(rl).getRandomItems( + new LootContext.Builder(level).withRandom(random).create(LootContextParamSets.EMPTY) + ); + return list.isEmpty() ? new ItemStack(Items.AIR) : list.get(0); + } + + protected void dispenseFrom(BlockState blockState, ServerLevel level, BlockPos pos, Random random) { + final double velo = 0.1D; + + Direction facing = blockState.getValue(ContinuousMinerBlock.FACING); + BlockState front = level.getBlockState(pos.relative(facing)); + ItemStack itemstack = byState(front, level, random); + if(!itemstack.is(Items.AIR)) { + this.fluid -= 1; + this.mineTime = TOTAL_MINE_TIME; + level.playSound(null, pos, ECSounds.VILLAGER_WORK_GEOLOGIST, SoundSource.BLOCKS, 1.0F, 1.0F); + if(itemstack.is(Items.STRUCTURE_VOID)) { + return; + } + + Direction opposite = facing.getOpposite(); + BlockPos resultPos = pos.relative(opposite); + Container container = HopperBlockEntity.getContainerAt(level, resultPos); + if(container == null) { + ItemEntity itemEntity = new ItemEntity(level, resultPos.getX() + 0.5D, resultPos.getY() + 1.2D, resultPos.getZ() + 0.5D, itemstack); + itemEntity.setDeltaMovement(random.nextGaussian() * 0.001D + (double)opposite.getStepX() * velo, random.nextGaussian() * 0.001D + 0.2D, random.nextGaussian() * 0.001D + (double)opposite.getStepZ() * velo); + level.addFreshEntity(itemEntity); + } else { + ItemStack addItemstack = HopperBlockEntity.addItem(null, container, itemstack.copy().split(1), facing.getOpposite()); + if(!addItemstack.isEmpty()) { + ItemEntity itemEntity = new ItemEntity(level, resultPos.getX() + 0.5D, resultPos.getY() + 1.2D, resultPos.getZ() + 0.5D, itemstack); + itemEntity.setDeltaMovement(random.nextGaussian() * 0.001D + (double)opposite.getStepX() * velo, random.nextGaussian() * 0.001D + 0.2D, random.nextGaussian() * 0.001D + (double)opposite.getStepZ() * velo); + level.addFreshEntity(itemEntity); + } + } + } + } + + public static void serverTick(Level level, BlockPos blockPos, BlockState blockState, ContinuousMinerBlockEntity blockEntity) { + if(blockState.getValue(ContinuousMinerBlock.TRIGGERED)) { + if(blockEntity.isMining()) { + blockEntity.mineTime -= 1; + } + if(!blockEntity.isMining() && blockEntity.getFluidLevel() > 0) { + blockEntity.dispenseFrom(blockState, (ServerLevel)level, blockPos, level.getRandom()); + } + } + ItemStack ingredient = blockEntity.items.get(0); + ItemStack result = blockEntity.items.get(1); + if(!ingredient.isEmpty()) { + if(ingredient.is(ECItems.MELTED_EMERALD_BUCKET.get())) { + if(blockEntity.fluid <= MAX_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(result.isEmpty()) { + ingredient.shrink(1); + blockEntity.items.set(1, new ItemStack(Items.BUCKET)); + } else if(result.is(Items.BUCKET)) { + ingredient.shrink(1); + result.grow(1); + } else { + return; + } + blockEntity.fluid += FLUID_LEVEL_BUCKET; + } + } else if(ingredient.is(Items.BUCKET)) { + if(blockEntity.fluid >= FLUID_LEVEL_BUCKET) { + if(result.isEmpty()) { + ingredient.shrink(1); + blockEntity.items.set(1, new ItemStack(ECItems.MELTED_EMERALD_BUCKET.get())); + } else if(result.is(ECItems.MELTED_EMERALD_BUCKET.get()) && result.getCount() < result.getMaxStackSize()) { + ingredient.shrink(1); + result.grow(1); + } else { + return; + } + blockEntity.fluid -= FLUID_LEVEL_BUCKET; + } + } + } + } + + @Override + public int[] getSlotsForFace(@NotNull Direction direction) { + if(direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if(direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public boolean stillValid(@NotNull Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + } + + @Override + public boolean canPlaceItem(int index, ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public boolean canPlaceItemThroughFace(int index, ItemStack itemStack, Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, ItemStack itemStack, Direction direction) { + return true; + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new ContinuousMinerMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java new file mode 100644 index 00000000..b74445ec --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +public class GlassKilnBlockEntity extends AbstractFurnaceBlockEntity { + public GlassKilnBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.GLASS_KILN.get(), pos, state, ECRecipes.GLASS_KILN_TYPE); + } + + @Override @NotNull + protected Component getDefaultName() { + return new TranslatableComponent("container.glass_kiln"); + } + + @Override + protected int getBurnDuration(@NotNull ItemStack itemStack) { + return super.getBurnDuration(itemStack) / 2; + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new GlassKilnMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java new file mode 100644 index 00000000..13b978e3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java @@ -0,0 +1,376 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.IceMakerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity.FLUID_LEVEL_BUCKET; + +public class IceMakerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + public static final int MAX_INGREDIENT_FLUID_LEVEL = 1000; + public static final int MAX_CONDENSATE_FLUID_LEVEL = 800; + public static final int WATER_BUCKET_CONDENSATE_LEVEL = 100; + + private static final int[] SLOTS_FOR_UP = new int[]{0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{3, 1}; + private static final int[] SLOTS_FOR_SIDES = new int[]{2}; + + protected NonNullList items = NonNullList.withSize(IceMakerMenu.SLOT_COUNT, ItemStack.EMPTY); + int inputFluidType; + int inputFluidAmount; + int freezingProgress; + int freezingTotalTime; + int condensateFluidAmount; + + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case 0 -> IceMakerBlockEntity.this.inputFluidType; + case 1 -> IceMakerBlockEntity.this.inputFluidAmount; + case 2 -> IceMakerBlockEntity.this.freezingProgress; + case 3 -> IceMakerBlockEntity.this.freezingTotalTime; + case 4 -> IceMakerBlockEntity.this.condensateFluidAmount; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case 0 -> IceMakerBlockEntity.this.inputFluidType = value; + case 1 -> IceMakerBlockEntity.this.inputFluidAmount = value; + case 2 -> IceMakerBlockEntity.this.freezingProgress = value; + case 3 -> IceMakerBlockEntity.this.freezingTotalTime = value; + case 4 -> IceMakerBlockEntity.this.condensateFluidAmount = value; + } + + } + + public int getCount() { + return IceMakerMenu.DATA_COUNT; + } + }; + + public IceMakerBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.ICE_MAKER.get(), pos, state); + } + + @Override @NotNull + protected Component getDefaultName() { + return new TranslatableComponent("container.ice_maker"); + } + + public int getInputFluidTypeIndex() { + return this.inputFluidType; + } + + private boolean isLit() { + return this.condensateFluidAmount > 0; + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, IceMakerBlockEntity blockEntity) { + boolean flag = blockEntity.isLit() && blockEntity.inputFluidAmount > 0; + boolean flag1 = false; + + if (!blockEntity.items.get(IceMakerMenu.CONDENSATE_SLOT).isEmpty() && + blockEntity.items.get(IceMakerMenu.CONDENSATE_SLOT).is(Items.WATER_BUCKET) && + blockEntity.condensateFluidAmount <= MAX_CONDENSATE_FLUID_LEVEL - WATER_BUCKET_CONDENSATE_LEVEL * 2) { + blockEntity.condensateFluidAmount += WATER_BUCKET_CONDENSATE_LEVEL * 2; + blockEntity.items.set(IceMakerMenu.CONDENSATE_SLOT, new ItemStack(Items.BUCKET)); + } + + if (blockEntity.isLit() && blockEntity.inputFluidAmount > 0) { + IceMakerRecipe recipe = level.getRecipeManager().getRecipeFor(ECRecipes.ICE_MAKER_TYPE, blockEntity, level).orElse(null); + + if (blockEntity.canFreeze(recipe, blockEntity.items, blockEntity.getMaxStackSize())) { + ++blockEntity.freezingProgress; + --blockEntity.condensateFluidAmount; + if (blockEntity.freezingProgress == blockEntity.freezingTotalTime) { + blockEntity.freezingProgress = 0; + blockEntity.freezingTotalTime = getTotalFreezeTime(level, blockEntity); + blockEntity.freeze(recipe, blockEntity.items, blockEntity.getMaxStackSize()); + + flag1 = true; + } + } else { + blockEntity.freezingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.freezingProgress > 0) { + blockEntity.freezingProgress = Mth.clamp(blockEntity.freezingProgress - 2, 0, blockEntity.freezingTotalTime); + } + + boolean nextFlag = blockEntity.isLit() && blockEntity.inputFluidAmount > 0; + if (flag != nextFlag) { + flag1 = true; + blockState = blockState.setValue(IceMakerBlock.LIT, nextFlag); + level.setBlock(pos, blockState, Block.UPDATE_ALL); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + ItemStack ingredientInput = blockEntity.items.get(IceMakerMenu.INGREDIENT_INPUT_SLOT); + ItemStack ingredientOutput = blockEntity.items.get(IceMakerMenu.INGREDIENT_OUTPUT_SLOT); + if(!ingredientInput.isEmpty()) { + if(ingredientInput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType]))) { + if(blockEntity.inputFluidAmount <= MAX_INGREDIENT_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(ingredientOutput.is(Items.BUCKET) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount += FLUID_LEVEL_BUCKET; + } + } else if(ingredientInput.is(Items.BUCKET)) { + if(blockEntity.inputFluidAmount >= FLUID_LEVEL_BUCKET) { + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType]))); + } else if(ingredientOutput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.inputFluidType])) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount -= FLUID_LEVEL_BUCKET; + } + } else if(blockEntity.inputFluidAmount <= 0 && IceMakerMenu.isFluidBucket(ingredientInput)) { + blockEntity.inputFluidType = FluidType.getFluidFromBucketItem(ingredientInput.getItem()).getID(); + blockEntity.freezingTotalTime = getTotalFreezeTime(level, blockEntity); + if(ingredientOutput.isEmpty()) { + ingredientInput.shrink(1); + blockEntity.items.set(IceMakerMenu.INGREDIENT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(ingredientOutput.is(Items.BUCKET) && ingredientOutput.getCount() < ingredientOutput.getMaxStackSize()) { + ingredientInput.shrink(1); + ingredientOutput.grow(1); + } else { + return; + } + blockEntity.inputFluidAmount = FLUID_LEVEL_BUCKET; + } + } + } + + private boolean canFreeze(@Nullable IceMakerRecipe recipe, NonNullList container, int maxCount) { + if (recipe == null) { + return false; + } + ItemStack result = recipe.assemble(this); + if (result.isEmpty()) { + return false; + } + ItemStack itemstack = container.get(IceMakerMenu.RESULT_SLOT); + if(itemstack.isEmpty()) { + return true; + } + if(!itemstack.sameItem(result)) { + return false; + } + if(itemstack.getCount() + result.getCount() <= maxCount && itemstack.getCount() + result.getCount() <= itemstack.getMaxStackSize()) { + return true; + } + return itemstack.getCount() + result.getCount() <= result.getMaxStackSize(); + } + + private boolean freeze(@Nullable IceMakerRecipe recipe, NonNullList container, int maxCount) { + if (this.canFreeze(recipe, container, maxCount)) { + ItemStack result = recipe.assemble(this); + ItemStack itemstack = container.get(IceMakerMenu.RESULT_SLOT); + if(itemstack.isEmpty()) { + container.set(IceMakerMenu.RESULT_SLOT, result.copy()); + } else if (itemstack.is(result.getItem())) { + itemstack.grow(result.getCount()); + } + + this.inputFluidAmount -= recipe.getFluidAmount(); + return true; + } + return false; + } + + @Override + public boolean stillValid(@NotNull Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override + public void load(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.inputFluidType = nbt.getInt("InputFluidType"); + this.inputFluidAmount = nbt.getInt("InputFluidAmount"); + this.freezingProgress = nbt.getInt("FreezingProgress"); + this.freezingTotalTime = nbt.getInt("FreezingTimeTotal"); + this.condensateFluidAmount = nbt.getInt("CondensateFluidAmount"); + } + + @Override + public void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("InputFluidType", this.inputFluidType); + nbt.putInt("InputFluidAmount", this.inputFluidAmount); + nbt.putInt("FreezingProgress", this.freezingProgress); + nbt.putInt("FreezingTimeTotal", this.freezingTotalTime); + nbt.putInt("CondensateFluidAmount", this.condensateFluidAmount); + ContainerHelper.saveAllItems(nbt, this.items); + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + return true; + } + + @Override @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + } + + @Override + public boolean canPlaceItem(int index, @NotNull ItemStack itemStack) { + if (index == IceMakerMenu.RESULT_SLOT) { + return false; + } + if (index == IceMakerMenu.CONDENSATE_SLOT) { + return itemStack.is(Items.BUCKET) || itemStack.is(Items.WATER_BUCKET); + } + return itemStack.is(Items.BUCKET) || IceMakerMenu.isFluidBucket(itemStack); + } + + private static int getTotalFreezeTime(Level level, Container container) { + return level.getRecipeManager().getRecipeFor(ECRecipes.ICE_MAKER_TYPE, container, level).map(IceMakerRecipe::getFreezingTime).orElse(IceMakerRecipe.FREEZING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(@NotNull Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if (direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public boolean canPlaceItemThroughFace(int index, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == IceMakerMenu.CONDENSATE_SLOT) { + return itemStack.is(Items.BUCKET); + } + return true; + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new IceMakerMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java new file mode 100644 index 00000000..ccd19ca3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java @@ -0,0 +1,402 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.blocks.workstation.MelterBlock; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.MelterMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.ContainerHelper; +import net.minecraft.world.WorldlyContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity.FLUID_LEVEL_BUCKET; + +public class MelterBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, StackedContentsCompatible { + public static final int MAX_FLUID_LEVEL = 1000; + + private static final int[] SLOTS_FOR_UP = new int[]{2, 0}; + private static final int[] SLOTS_FOR_DOWN = new int[]{3, 1}; + private static final int[] SLOTS_FOR_SIDES = new int[]{2, 1}; + + protected NonNullList items = NonNullList.withSize(MelterMenu.SLOT_COUNT, ItemStack.EMPTY); + int litTime; + int litDuration; + int meltingProgress; + int meltingTotalTime; + int fluidType; + int fluidAmount; + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case 0 -> MelterBlockEntity.this.litTime; + case 1 -> MelterBlockEntity.this.litDuration; + case 2 -> MelterBlockEntity.this.meltingProgress; + case 3 -> MelterBlockEntity.this.meltingTotalTime; + case 4 -> MelterBlockEntity.this.fluidType; + case 5 -> MelterBlockEntity.this.fluidAmount; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case 0 -> MelterBlockEntity.this.litTime = value; + case 1 -> MelterBlockEntity.this.litDuration = value; + case 2 -> MelterBlockEntity.this.meltingProgress = value; + case 3 -> MelterBlockEntity.this.meltingTotalTime = value; + case 4 -> MelterBlockEntity.this.fluidType = value; + case 5 -> MelterBlockEntity.this.fluidAmount = value; + } + + } + + public int getCount() { + return MelterMenu.DATA_COUNT; + } + }; + private final Object2IntOpenHashMap recipesUsed = new Object2IntOpenHashMap<>(); + + public MelterBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.MELTER.get(), pos, state); + } + + private boolean isLit() { + return this.litTime > 0; + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, MelterBlockEntity blockEntity) { + boolean flag = blockEntity.isLit(); + boolean flag1 = false; + if (blockEntity.isLit()) { + --blockEntity.litTime; + } + + ItemStack fuelItemStack = blockEntity.items.get(MelterMenu.FUEL_SLOT); + if (blockEntity.isLit() || !fuelItemStack.isEmpty() && !blockEntity.items.get(MelterMenu.INGREDIENT_SLOT).isEmpty()) { + MelterRecipe recipe = level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, blockEntity, level).orElse(null); + if (!blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items)) { + blockEntity.litTime = blockEntity.getBurnDuration(fuelItemStack); + blockEntity.litDuration = blockEntity.litTime; + if (blockEntity.isLit()) { + flag1 = true; + if (fuelItemStack.hasContainerItem()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getContainerItem()); + } else if (!fuelItemStack.isEmpty()) { + fuelItemStack.shrink(1); + if (fuelItemStack.isEmpty()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getContainerItem()); + } + } + } + } + + if (blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items)) { + ++blockEntity.meltingProgress; + if (blockEntity.meltingProgress == blockEntity.meltingTotalTime) { + blockEntity.meltingProgress = 0; + blockEntity.meltingTotalTime = getTotalMeltTime(level, blockEntity); + blockEntity.burn(recipe, blockEntity.items); + + flag1 = true; + } + } else { + blockEntity.meltingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.meltingProgress > 0) { + blockEntity.meltingProgress = Mth.clamp(blockEntity.meltingProgress - 2, 0, blockEntity.meltingTotalTime); + } + + if (flag != blockEntity.isLit()) { + flag1 = true; + blockState = blockState.setValue(MelterBlock.LIT, blockEntity.isLit()); + level.setBlock(pos, blockState, 3); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + ItemStack resultInput = blockEntity.items.get(MelterMenu.RESULT_INPUT_SLOT); + ItemStack resultOutput = blockEntity.items.get(MelterMenu.RESULT_OUTPUT_SLOT); + if(!resultInput.isEmpty()) { + if(resultInput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType]))) { + if(blockEntity.fluidAmount <= MAX_FLUID_LEVEL - FLUID_LEVEL_BUCKET) { + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(resultOutput.is(Items.BUCKET) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount += FLUID_LEVEL_BUCKET; + } + } else if(resultInput.is(Items.BUCKET)) { + if(blockEntity.fluidAmount >= FLUID_LEVEL_BUCKET) { + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType]))); + } else if(resultOutput.is(FluidType.getFluidBucketItem(FluidType.FLUID_TYPES[blockEntity.fluidType])) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount -= FLUID_LEVEL_BUCKET; + } + } else if(blockEntity.fluidAmount <= 0 && MelterMenu.isFluidBucket(resultInput)) { + blockEntity.fluidType = FluidType.getFluidFromBucketItem(resultInput.getItem()).getID(); + if(resultOutput.isEmpty()) { + resultInput.shrink(1); + blockEntity.items.set(MelterMenu.RESULT_OUTPUT_SLOT, new ItemStack(Items.BUCKET)); + } else if(resultOutput.is(Items.BUCKET) && resultOutput.getCount() < resultOutput.getMaxStackSize()) { + resultInput.shrink(1); + resultOutput.grow(1); + } else { + return; + } + blockEntity.fluidAmount = FLUID_LEVEL_BUCKET; + } + } + } + + private boolean canBurn(MelterRecipe recipe, NonNullList container) { + if (recipe == null || container.get(0).isEmpty()) { + return false; + } + if (recipe.getFluidType().getID() != this.fluidType) { + return this.fluidAmount == 0; + } + return recipe.getFluidAmount() + this.fluidAmount <= MAX_FLUID_LEVEL; + } + + private boolean burn(@Nullable MelterRecipe recipe, NonNullList container) { + if (this.canBurn(recipe, container)) { + ItemStack itemstack = container.get(0); + if (recipe.getFluidType().getID() != this.fluidType) { + this.fluidType = recipe.getFluidType().getID(); + } + this.fluidAmount += recipe.getFluidAmount(); + + itemstack.shrink(1); + return true; + } + return false; + } + + @Override + public boolean stillValid(@NotNull Player player) { + if (this.level.getBlockEntity(this.worldPosition) != this) { + return false; + } + return player.distanceToSqr((double)this.worldPosition.getX() + 0.5D, (double)this.worldPosition.getY() + 0.5D, (double)this.worldPosition.getZ() + 0.5D) <= 64.0D; + } + + @Override + public void load(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.litTime = nbt.getInt("BurnTime"); + this.litDuration = this.getBurnDuration(this.items.get(1)); + this.meltingProgress = nbt.getInt("MeltTime"); + this.meltingTotalTime = nbt.getInt("MeltTimeTotal"); + this.fluidType = nbt.getInt("FluidType"); + this.fluidAmount = nbt.getInt("FluidAmount"); + CompoundTag compoundtag = nbt.getCompound("RecipesUsed"); + + for(String s : compoundtag.getAllKeys()) { + this.recipesUsed.put(new ResourceLocation(s), compoundtag.getInt(s)); + } + + } + + @Override + public void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("BurnTime", this.litTime); + nbt.putInt("CookTime", this.meltingProgress); + nbt.putInt("CookTimeTotal", this.meltingTotalTime); + nbt.putInt("FluidType", this.fluidType); + nbt.putInt("FluidAmount", this.fluidAmount); + ContainerHelper.saveAllItems(nbt, this.items); + CompoundTag compoundtag = new CompoundTag(); + this.recipesUsed.forEach((p_58382_, p_58383_) -> { + compoundtag.putInt(p_58382_.toString(), p_58383_); + }); + nbt.put("RecipesUsed", compoundtag); + } + + @Override @NotNull + protected Component getDefaultName() { + return new TranslatableComponent("container.melter"); + } + + @Override + public int getContainerSize() { + return this.items.size(); + } + + @Override + public boolean isEmpty() { + for(ItemStack itemstack : this.items) { + if (!itemstack.isEmpty()) { + return false; + } + } + return true; + } + + @Override @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, ItemStack itemStack) { + ItemStack itemstack = this.items.get(index); + boolean flag = !itemStack.isEmpty() && itemStack.sameItem(itemstack) && ItemStack.tagMatches(itemStack, itemstack); + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + + if (index == 0 && !flag) { + this.meltingTotalTime = getTotalMeltTime(this.level, this); + this.meltingProgress = 0; + this.setChanged(); + } + } + + @Override + public boolean canPlaceItem(int index, @NotNull ItemStack itemStack) { + if (index == MelterMenu.RESULT_INPUT_SLOT || index == MelterMenu.RESULT_OUTPUT_SLOT) { + return itemStack.is(Items.BUCKET) || MelterMenu.isFluidBucket(itemStack); + } + if (index != MelterMenu.FUEL_SLOT) { + return true; + } + ItemStack fuelItemStack = this.items.get(MelterMenu.FUEL_SLOT); + return net.minecraftforge.common.ForgeHooks.getBurnTime(itemStack, null) > 0 || itemStack.is(Items.BUCKET) && !fuelItemStack.is(Items.BUCKET); + } + + protected int getBurnDuration(ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return net.minecraftforge.common.ForgeHooks.getBurnTime(itemStack, null); + } + + private static int getTotalMeltTime(Level level, Container container) { + return level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, container, level).map(MelterRecipe::getMeltingTime).orElse(MelterRecipe.MELTING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(@NotNull Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } + if (direction == Direction.UP) { + return SLOTS_FOR_UP; + } + return SLOTS_FOR_SIDES; + } + + @Override + public boolean canPlaceItemThroughFace(int index, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == 1) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.BUCKET); + } else { + return true; + } + } + + net.minecraftforge.common.util.LazyOptional[] handlers = + net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public net.minecraftforge.common.util.LazyOptional getCapability(net.minecraftforge.common.capabilities.Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == net.minecraftforge.items.CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + if (facing == Direction.UP) { + return handlers[0].cast(); + } else if (facing == Direction.DOWN) { + return handlers[1].cast(); + } else { + return handlers[2].cast(); + } + } + return super.getCapability(capability, facing); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + for (net.minecraftforge.common.util.LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = net.minecraftforge.items.wrapper.SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new MelterMenu(id, inventory, this, this.dataAccess); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java new file mode 100644 index 00000000..70118bac --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java @@ -0,0 +1,51 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +public class MineralTableBlockEntity extends AbstractFurnaceBlockEntity { + public MineralTableBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.MINERAL_TABLE.get(), pos, state, ECRecipes.MINERAL_TABLE_TYPE); + } + + @Override @NotNull + protected Component getDefaultName() { + return new TranslatableComponent("container.mineral_table"); + } + + @Override + protected int getBurnDuration(ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return itemStack.is(Items.BLAZE_POWDER) ? MineralTableRecipe.BURN_TIME * 20 : 0; + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new MineralTableMenu(id, inventory, this, this.dataAccess); + } + + @Override + public boolean canPlaceItem(int index, @NotNull ItemStack itemStack) { + if (index == MineralTableMenu.RESULT_SLOT) { + return false; + } + if (index != MineralTableMenu.FUEL_SLOT) { + return true; + } + return itemStack.is(Items.BLAZE_POWDER); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java new file mode 100644 index 00000000..540c3cd8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java @@ -0,0 +1,100 @@ +package com.hexagram2021.emeraldcraft.common.blocks.plant; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.NonNullList; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.BushBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraftforge.common.PlantType; + +import java.util.EnumMap; +import java.util.Random; +import java.util.function.Supplier; + +public class WarpedWartBlock extends BushBlock { + public static final int MAX_AGE = 3; + public static final IntegerProperty AGE = BlockStateProperties.AGE_3; + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{ + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 5.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 11.0D, 16.0D), + Block.box(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D) + }; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.PLANT) + .sound(SoundType.NETHER_WART) + .noCollission() + .strength(0) + .randomTicks(); + + public WarpedWartBlock(Properties props) { + super(props); + this.registerDefaultState(this.stateDefinition.any().setValue(AGE, 0)); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, CollisionContext context) { + return SHAPE_BY_AGE[state.getValue(AGE)]; + } + + @Override + public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { + return super.canSurvive(state, world, pos); + } + + @Override + protected boolean mayPlaceOn(BlockState state, BlockGetter world, BlockPos pos) { + return state.is(Blocks.SOUL_SAND); + } + + @Override + public boolean isRandomlyTicking(BlockState state) { + return state.getValue(AGE) < MAX_AGE; + } + + @Override + public void randomTick(BlockState state, ServerLevel level, BlockPos pos, Random random) { + int i = state.getValue(AGE); + if (i < MAX_AGE && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(level, pos, state, random.nextInt(10) == 0)) { + state = state.setValue(AGE, i + 1); + level.setBlock(pos, state, Block.UPDATE_CLIENTS); + net.minecraftforge.common.ForgeHooks.onCropsGrowPost(level, pos, state); + } + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(AGE); + } + + @Override + public PlantType getPlantType(BlockGetter world, BlockPos pos) { + return PlantType.NETHER; + } + + @Override + public ItemStack getCloneItemStack(BlockGetter p_54973_, BlockPos p_54974_, BlockState p_54975_) { + return new ItemStack(ECItems.WARPED_WART.asItem()); + } + + @Override + public Item asItem() { + return ECItems.WARPED_WART.asItem(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java new file mode 100644 index 00000000..7a6d04b8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java @@ -0,0 +1,48 @@ +package com.hexagram2021.emeraldcraft.common.blocks.sculpture; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.function.Supplier; + +public class SculptureBlock extends Block { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD) + .strength(2.0F) + .sound(SoundType.WOOD); + + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + protected static final VoxelShape AABB = Block.box(3.0D, 3.0D, 0.0D, 13.0D, 13.0D, 15.0D); + + public SculptureBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState p_154346_, BlockGetter p_154347_, BlockPos p_154348_, CollisionContext p_154349_) { + return AABB; + } + + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + public BlockState mirror(BlockState blockState, Mirror mirror) { + return blockState.setValue(FACING, mirror.mirror(blockState.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + super.createBlockStateDefinition(builder); + builder.add(FACING); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java new file mode 100644 index 00000000..96ec2e64 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java @@ -0,0 +1,92 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableMenu; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.SimpleMenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +public class CarpentryTableBlock extends Block { + private static final Component CONTAINER_TITLE = new TranslatableComponent("container.carpentry"); + protected static final VoxelShape SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 9.0D, 16.0D); + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD) + .sound(SoundType.WOOD) + .strength(2.5F); + + public CarpentryTableBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Override + @Nullable + public MenuProvider getMenuProvider(BlockState blockState, Level level, BlockPos blockPos) { + return new SimpleMenuProvider((id, inventory, levelAccess) -> + new CarpentryTableMenu(id, inventory, ContainerLevelAccess.create(level, blockPos)), CONTAINER_TITLE); + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(BlockState blockState) { + return true; + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override + public BlockState mirror(BlockState blockState, Mirror rotation) { + return blockState.rotate(rotation.getRotation(blockState.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(FACING); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java new file mode 100644 index 00000000..10997315 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/ContinuousMinerBlock.java @@ -0,0 +1,139 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.*; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.*; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.function.Supplier; + +public class ContinuousMinerBlock extends BaseEntityBlock { + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + public static final BooleanProperty TRIGGERED = BlockStateProperties.TRIGGERED; + + public static final Map MINER_MAIN = Maps.newEnumMap(ImmutableMap.of( + Direction.NORTH, Block.box(0, 0, 3, 16, 16, 16), + Direction.SOUTH, Block.box(0, 0, 0, 16, 16, 13), + Direction.EAST, Block.box(0, 0, 0, 13, 16, 16), + Direction.WEST, Block.box(3, 0, 0, 16, 16, 16) + )); + public static final Map ROCK_BREAKER = Maps.newEnumMap(ImmutableMap.of( + Direction.NORTH, Block.box(0, 2, -6, 16, 11, 3), + Direction.SOUTH, Block.box(0, 2, 13, 16, 11, 22), + Direction.EAST, Block.box(13, 2, 0, 22, 11, 16), + Direction.WEST, Block.box(-6, 2, 0, 3, 11, 16) + )); + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public ContinuousMinerBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + this.registerDefaultState(this.stateDefinition.any().setValue(TRIGGERED, Boolean.FALSE)); + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new ContinuousMinerBlockEntity(blockPos, blockState); + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return MINER_MAIN.get(blockState.getValue(FACING)); + } + + @Override + public VoxelShape getCollisionShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return Shapes.or(MINER_MAIN.get(blockState.getValue(FACING)), ROCK_BREAKER.get(blockState.getValue(FACING))); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createContinuousMinerTicker(level, type, ECBlockEntity.CONTINUOUS_MINER.get()); + } + + @Override + public void onPlace(BlockState blockState, Level level, BlockPos blockPos, BlockState neighbor, boolean v) { + level.setBlock(blockPos, blockState.setValue(TRIGGERED, level.hasNeighborSignal(blockPos) || level.hasNeighborSignal(blockPos.above())), Block.UPDATE_CLIENTS); + } + + @Override + public void neighborChanged(BlockState blockState, Level level, BlockPos blockPos, Block block, BlockPos neighbor, boolean v) { + level.setBlock(blockPos, blockState.setValue(TRIGGERED, level.hasNeighborSignal(blockPos) || level.hasNeighborSignal(blockPos.above())), Block.UPDATE_CLIENTS); + } + + @Override + public BlockState getStateForPlacement(BlockPlaceContext context) { + return this.defaultBlockState().setValue(FACING, context.getHorizontalDirection()); + } + + @Override + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override + public BlockState mirror(BlockState blockState, Mirror rotation) { + return blockState.rotate(rotation.getRotation(blockState.getValue(FACING))); + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, TRIGGERED); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + protected static BlockEntityTicker createContinuousMinerTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, ContinuousMinerBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java new file mode 100644 index 00000000..017404a8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java @@ -0,0 +1,89 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperty; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.ExperienceOrb; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.Random; +import java.util.function.Supplier; + +public class CrystalballTableBlock extends Block { + public static final IntegerProperty EXP_COUNT = ECProperty.EXP_COUNT; + + protected static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 14.0D, 14.0D); + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.AMETHYST).sound(SoundType.AMETHYST).strength(3.5F).lightLevel((bs) -> 7); + + public CrystalballTableBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(EXP_COUNT, 0)); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + int i = blockState.getValue(EXP_COUNT); + if(i != 0) { + level.addFreshEntity(new ExperienceOrb(level, player.getX(), player.getY() + 0.5D, player.getZ(), i * 20)); + level.setBlock(blockPos, blockState.setValue(EXP_COUNT, 0), Block.UPDATE_CLIENTS); + } + return InteractionResult.CONSUME; + } + + @Override + public void randomTick(BlockState blockState, ServerLevel level, BlockPos blockPos, Random random) { + if(level.random.nextInt(250) == 0) { + int i = blockState.getValue(EXP_COUNT); + if(i < 15) { + level.playSound(null, blockPos, ECSounds.VILLAGER_WORK_ASTROLOGIST, SoundSource.BLOCKS, 0.6F, 0.9F + random.nextFloat() * 0.2F); + level.setBlock(blockPos, blockState.setValue(EXP_COUNT, i + 1), Block.UPDATE_CLIENTS); + } + } + } + + @Override + public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(BlockState blockState) { + return true; + } + + @Override + public RenderShape getRenderShape(BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(EXP_COUNT); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java new file mode 100644 index 00000000..105915d1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java @@ -0,0 +1,95 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.GlassKilnBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class GlassKilnBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.STONE) + .sound(SoundType.STONE) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public GlassKilnBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } else { + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createFurnaceTicker(level, type, ECBlockEntity.GLASS_KILN.get()); + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof GlassKilnBlockEntity) { + player.openMenu((MenuProvider)blockentity); + // player.awardStat(Stats.INTERACT_WITH_FURNACE); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { + return new GlassKilnBlockEntity(pos, state); + } + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java new file mode 100644 index 00000000..c5029031 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java @@ -0,0 +1,102 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractFurnaceBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class IceMakerBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public IceMakerBlock(Properties properties) { + super(properties); + } + + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createIceMakerTicker(level, type, ECBlockEntity.ICE_MAKER.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof IceMakerBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new IceMakerBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.PLAYER_HURT_FREEZE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.WHITE_ASH, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createIceMakerTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, IceMakerBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java new file mode 100644 index 00000000..fcccc42b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java @@ -0,0 +1,101 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractFurnaceBlock; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class MelterBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Properties.of(Material.METAL) + .sound(SoundType.METAL) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public MelterBlock(Properties properties) { + super(properties); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createMelterTicker(level, type, ECBlockEntity.MELTER.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MelterBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new MelterBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createMelterTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, MelterBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java new file mode 100644 index 00000000..aad00648 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java @@ -0,0 +1,101 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MineralTableBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Supplier; + +public class MineralTableBlock extends AbstractFurnaceBlock { + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.STONE) + .sound(SoundType.STONE) + .requiresCorrectToolForDrops() + .strength(3.5F); + + public MineralTableBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { + return createMineralTableTicker(level, type, ECBlockEntity.MINERAL_TABLE.get()); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, BlockPos pos, Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MineralTableBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new MineralTableBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, Level level, BlockPos blockPos, Random random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = (double)blockPos.getY(); + double d2 = (double)blockPos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + level.playLocalSound(d0, d1, d2, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = state.getValue(FACING); + Direction.Axis direction$axis = direction.getAxis(); + double d3 = 0.52D; + double d4 = random.nextDouble() * 0.6D - 0.3D; + double d5 = direction$axis == Direction.Axis.X ? (double)direction.getStepX() * d3 : d4; + double d6 = random.nextDouble() * 9.0D / 16.0D; + double d7 = direction$axis == Direction.Axis.Z ? (double)direction.getStepZ() * d3 : d4; + level.addParticle(ParticleTypes.SMOKE, d0 + d5, d1 + d6, d2 + d7, 0.0D, 0.0D, 0.0D); + } + } + + @Nullable + protected static BlockEntityTicker createMineralTableTicker(Level level, BlockEntityType type, BlockEntityType blockEntityType) { + return level.isClientSide ? null : createTickerHelper(type, blockEntityType, MineralTableBlockEntity::serverTick); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java new file mode 100644 index 00000000..2a8fc2ac --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java @@ -0,0 +1,152 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperty; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.phys.BlockHitResult; + +import java.util.function.Supplier; + +import static net.minecraftforge.common.ToolActions.SHEARS_HARVEST; + +public class SqueezerBlock extends Block { + public static final IntegerProperty HONEY_COUNT = ECProperty.HONEY_COUNT; + + public static final Supplier PROPERTIES = () -> Block.Properties.of(Material.WOOD).sound(SoundType.WOOD).strength(0.6F); + + public SqueezerBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HONEY_COUNT, 0)); + } + + @Override + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + ItemStack itemstack = player.getItemInHand(interactionHand); + ItemStack itemstack2 = player.getItemInHand(InteractionHand.OFF_HAND); + if (interactionHand == InteractionHand.MAIN_HAND && + !isSqueezable(itemstack) && !isEmptyBottle(itemstack) && !itemstack.canPerformAction(SHEARS_HARVEST) && + (isSqueezable(itemstack2) || isEmptyBottle(itemstack2) || itemstack2.canPerformAction(SHEARS_HARVEST))) { + return InteractionResult.PASS; + } + + if (isSqueezable(itemstack) && canBeCharged(blockState)) { + charge(level, blockPos, blockState); + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + + return InteractionResult.sidedSuccess(level.isClientSide); + } + if (blockState.getValue(HONEY_COUNT) != 0) { + if (isEmptyBottle(itemstack)) { + itemstack.shrink(1); + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + SoundEvents.BOTTLE_FILL, + SoundSource.NEUTRAL, + 1.0F, 1.0F + ); + if (itemstack.isEmpty()) { + player.setItemInHand(interactionHand, new ItemStack(Items.HONEY_BOTTLE)); + } else if (!player.getInventory().add(new ItemStack(Items.HONEY_BOTTLE))) { + player.drop(new ItemStack(Items.HONEY_BOTTLE), false); + } + level.gameEvent(player, GameEvent.FLUID_PICKUP, blockPos); + resetHoneyCount(level, blockState, blockPos); + + return InteractionResult.sidedSuccess(level.isClientSide); + } + if (itemstack.canPerformAction(SHEARS_HARVEST)) { + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + SoundEvents.BEEHIVE_SHEAR, + SoundSource.NEUTRAL, + 1.0F, 1.0F + ); + dropHoneycomb(level, blockPos); + itemstack.hurtAndBreak(1, player, (player2) -> { + player2.broadcastBreakEvent(interactionHand); + }); + level.gameEvent(player, GameEvent.SHEAR, blockPos); + resetHoneyCount(level, blockState, blockPos); + + return InteractionResult.sidedSuccess(level.isClientSide); + } + } + return InteractionResult.CONSUME; + } + + public static void dropHoneycomb(Level level, BlockPos blockPos) { + popResource(level, blockPos, new ItemStack(Items.HONEYCOMB)); + } + + public boolean hasAnalogOutputSignal(BlockState blockState) { + return true; + } + + public int getAnalogOutputSignal(BlockState blockState, Level level, BlockPos blockPos) { + return blockState.getValue(HONEY_COUNT); + } + + private static boolean isSqueezable(ItemStack itemStack) { + return itemStack.is(Items.HONEYCOMB_BLOCK); + } + + private static boolean isEmptyBottle(ItemStack itemStack) { + return itemStack.is(Items.GLASS_BOTTLE); + } + + private static boolean canBeCharged(BlockState blockState) { + return blockState.getValue(HONEY_COUNT) < 4; + } + + public void resetHoneyCount(Level level, BlockState blockState, BlockPos blockPos) { + level.setBlock(blockPos, blockState.setValue(HONEY_COUNT, blockState.getValue(HONEY_COUNT) - 1), Block.UPDATE_ALL); + } + + public static void charge(Level level, BlockPos blockPos, BlockState blockState) { + level.setBlock(blockPos, blockState.setValue(HONEY_COUNT, blockState.getValue(HONEY_COUNT) + 4), Block.UPDATE_ALL); + level.playSound( + null, + (double)blockPos.getX() + 0.5D, + (double)blockPos.getY() + 0.5D, + (double)blockPos.getZ() + 0.5D, + ECSounds.VILLAGER_WORK_BEEKEEPER, SoundSource.BLOCKS, + 1.0F, 1.0F + ); + } + + @Override + public boolean isPathfindable(BlockState state, BlockGetter getter, BlockPos blockPos, PathComputationType type) { + return false; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder definition) { + definition.add(HONEY_COUNT); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java new file mode 100644 index 00000000..9d73b793 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableMenu.java @@ -0,0 +1,234 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import java.util.List; + +public class CarpentryTableMenu extends AbstractContainerMenu { + public static final int INPUT_SLOT = 0; + public static final int RESULT_SLOT = 1; + private static final int INV_SLOT_START = 2; + private static final int INV_SLOT_END = 29; + private static final int USE_ROW_SLOT_START = 29; + private static final int USE_ROW_SLOT_END = 38; + + private final ContainerLevelAccess access; + private final DataSlot selectedRecipeIndex = DataSlot.standalone(); + private final Level level; + private List recipes = Lists.newArrayList(); + private ItemStack input = ItemStack.EMPTY; + long lastSoundTime; + final Slot inputSlot; + final Slot resultSlot; + Runnable slotUpdateListener = () -> { + }; + public final Container container = new SimpleContainer(1) { + public void setChanged() { + super.setChanged(); + CarpentryTableMenu.this.slotsChanged(this); + CarpentryTableMenu.this.slotUpdateListener.run(); + } + }; + final ResultContainer resultContainer = new ResultContainer(); + + public CarpentryTableMenu(int id, Inventory inventory) { + this(id, inventory, ContainerLevelAccess.NULL); + } + + public CarpentryTableMenu(int id, Inventory inventory, final ContainerLevelAccess access) { + super(ECContainerTypes.CARPENTRY_TABLE_MENU.get(), id); + this.access = access; + this.level = inventory.player.level; + this.inputSlot = this.addSlot(new Slot(this.container, 0, 20, 33)); + this.resultSlot = this.addSlot(new Slot(this.resultContainer, 1, 143, 33) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + itemStack.onCraftedBy(player.level, player, itemStack.getCount()); + CarpentryTableMenu.this.resultContainer.awardUsedRecipes(player); + ItemStack itemstack = CarpentryTableMenu.this.inputSlot.remove(1); + if (!itemstack.isEmpty()) { + CarpentryTableMenu.this.setupResultSlot(); + } + + access.execute((level, blockPos) -> { + long l = level.getGameTime(); + if (CarpentryTableMenu.this.lastSoundTime != l) { + level.playSound(null, blockPos, ECSounds.VILLAGER_WORK_CARPENTER, SoundSource.BLOCKS, 1.0F, 1.0F); + CarpentryTableMenu.this.lastSoundTime = l; + } + + }); + super.onTake(player, itemStack); + } + }); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + + this.addDataSlot(this.selectedRecipeIndex); + } + + public int getSelectedRecipeIndex() { + return this.selectedRecipeIndex.get(); + } + + public List getRecipes() { + return this.recipes; + } + + public int getNumRecipes() { + return this.recipes.size(); + } + + public boolean hasInputItem() { + return this.inputSlot.hasItem() && !this.recipes.isEmpty(); + } + + @Override + public boolean stillValid(Player player) { + return stillValid(this.access, player, ECBlocks.WorkStation.CARPENTRY_TABLE.get()); + } + + @Override + public boolean clickMenuButton(Player player, int index) { + if (this.isValidRecipeIndex(index)) { + this.selectedRecipeIndex.set(index); + this.setupResultSlot(); + } + + return true; + } + + private boolean isValidRecipeIndex(int index) { + return index >= 0 && index < this.recipes.size(); + } + + @Override + public void slotsChanged(Container container) { + ItemStack itemstack = this.inputSlot.getItem(); + if (!itemstack.is(this.input.getItem())) { + this.input = itemstack.copy(); + this.setupRecipeList(container, itemstack); + } + + } + + private void setupRecipeList(Container container, ItemStack itemStack) { + this.recipes.clear(); + this.selectedRecipeIndex.set(-1); + this.resultSlot.set(ItemStack.EMPTY); + if (!itemStack.isEmpty()) { + this.recipes = this.level.getRecipeManager().getRecipesFor(ECRecipes.CARPENTRY_TABLE_TYPE, container, this.level); + } + + } + + void setupResultSlot() { + if (!this.recipes.isEmpty() && this.isValidRecipeIndex(this.selectedRecipeIndex.get())) { + CarpentryTableRecipe carpentrytableRecipe = this.recipes.get(this.selectedRecipeIndex.get()); + this.resultContainer.setRecipeUsed(carpentrytableRecipe); + this.resultSlot.set(carpentrytableRecipe.assemble(this.container)); + } else { + this.resultSlot.set(ItemStack.EMPTY); + } + + this.broadcastChanges(); + } + + @Override + public MenuType getType() { + return ECContainerTypes.CARPENTRY_TABLE_MENU.get(); + } + + public void registerUpdateListener(Runnable listener) { + this.slotUpdateListener = listener; + } + + @Override + public boolean canTakeItemForPickAll(ItemStack itemStack, Slot slot) { + return slot.container != this.resultContainer && super.canTakeItemForPickAll(itemStack, slot); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot != null && slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + Item item = itemstack1.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + item.onCraftedBy(itemstack1, player.level, player); + if (!this.moveItemStackTo(itemstack1, 2, 38, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, 2, 38, false)) { + return ItemStack.EMPTY; + } + } else if (this.level.getRecipeManager() + .getRecipeFor(ECRecipes.CARPENTRY_TABLE_TYPE, new SimpleContainer(itemstack1), this.level) + .isPresent()) { + if (!this.moveItemStackTo(itemstack1, 0, 1, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } + + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + this.broadcastChanges(); + } + + return itemstack; + } + + @Override + public void removed(Player player) { + super.removed(player); + this.resultContainer.removeItemNoUpdate(1); + this.access.execute((level, blockPos) -> { + this.clearContainer(player, this.container); + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java new file mode 100644 index 00000000..910edc6f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java @@ -0,0 +1,39 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.SingleItemRecipe; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class CarpentryTableRecipe extends SingleItemRecipe { + public static Map recipeList = Collections.emptyMap();; + + public CarpentryTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result) { + super(ECRecipes.CARPENTRY_TABLE_TYPE, ECRecipeSerializer.CARPENTRY_SERIALIZER.get(), id, group, ingredient, result); + } + + /** + * Used to check if a recipe matches current crafting inventory + */ + @Override + public boolean matches(Container inv, Level level) { + return this.ingredient.test(inv.getItem(0)); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE); + } + + public Ingredient getIngredient() { + return ingredient; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java new file mode 100644 index 00000000..128e5137 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/ContinuousMinerMenu.java @@ -0,0 +1,142 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class ContinuousMinerMenu extends AbstractContainerMenu { + public static final int INPUT_SLOT = 0; + public static final int RESULT_SLOT = 1; + private static final int INV_SLOT_START = 2; + private static final int INV_SLOT_END = 29; + private static final int USE_ROW_SLOT_START = 29; + private static final int USE_ROW_SLOT_END = 38; + public static final int SLOT_COUNT = 2; + public static final int DATA_COUNT = 2; + + private final Container continuousMiner; + private final ContainerData continuousMinerData; + protected final Level level; + final Slot inputSlot; + + public ContinuousMinerMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public ContinuousMinerMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.CONTINUOUS_MINER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.continuousMiner = container; + this.continuousMinerData = data; + this.level = inventory.player.level; + + this.inputSlot = this.addSlot(new Slot(container, INPUT_SLOT, 43, 19) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, RESULT_SLOT, 43, 53) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + @Override + public boolean stillValid(Player player) { + return this.continuousMiner.stillValid(player); + } + + @Override + public MenuType getType() { + return ECContainerTypes.CONTINUOUS_MINER_MENU.get(); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if(inputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INPUT_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END) { + if(inputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INPUT_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } + + slot.setChanged(); + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + this.broadcastChanges(); + } + + return itemstack; + } + + public int getFluidLevel() { + return this.continuousMinerData.get(ContinuousMinerBlockEntity.DATA_FLUID); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java new file mode 100644 index 00000000..c402c7a2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/FluidType.java @@ -0,0 +1,59 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; + +public enum FluidType { + water(0), + lava(1), + melted_emerald(2), + melted_iron(3), + melted_gold(4), + melted_copper(5); + + final int id; + + public static final FluidType[] FLUID_TYPES = { water, lava, melted_emerald, melted_iron, melted_gold, melted_copper }; + + FluidType(int id) { + this.id = id; + } + + public static FluidType getFluidFromBucketItem(Item item) { + if(item == Items.WATER_BUCKET) { + return water; + } + if(item == Items.LAVA_BUCKET) { + return lava; + } + if(item == ECItems.MELTED_EMERALD_BUCKET.get()) { + return melted_emerald; + } + if(item == ECItems.MELTED_IRON_BUCKET.get()) { + return melted_iron; + } + if(item == ECItems.MELTED_GOLD_BUCKET.get()) { + return melted_gold; + } + if(item == ECItems.MELTED_COPPER_BUCKET.get()) { + return melted_copper; + } + throw new IllegalStateException("Cannot find fluid from item [" + item.getRegistryName() + "]"); + } + + public static Item getFluidBucketItem(FluidType fluidType) { + return switch (fluidType){ + case water -> Items.WATER_BUCKET; + case lava -> Items.LAVA_BUCKET; + case melted_emerald -> ECItems.MELTED_EMERALD_BUCKET.get(); + case melted_iron -> ECItems.MELTED_IRON_BUCKET.get(); + case melted_gold -> ECItems.MELTED_GOLD_BUCKET.get(); + case melted_copper -> ECItems.MELTED_COPPER_BUCKET.get(); + }; + } + + public int getID() { + return id; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java new file mode 100644 index 00000000..fbb2ff84 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnMenu.java @@ -0,0 +1,204 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.player.StackedContents; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.ForgeHooks; + +public class GlassKilnMenu extends RecipeBookMenu { + private final Container container; + private final ContainerData data; + protected final Level level; + + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_SLOT = 2; + private static final int INV_SLOT_START = 3; + private static final int INV_SLOT_END = 30; + private static final int USE_ROW_SLOT_START = 30; + private static final int USE_ROW_SLOT_END = 39; + public static final int SLOT_COUNT = 3; + public static final int DATA_COUNT = 4; + + public GlassKilnMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public GlassKilnMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.GLASS_KILN_MENU.get(), id); + this.container = container; + this.data = data; + this.level = inventory.player.level; + + this.addSlot(new Slot(this.container, INGREDIENT_SLOT, 56, 17)); + this.addSlot(new GlassKilnMenu.GlassKilnFuelSlot(this, this.container, FUEL_SLOT, 56, 53)); + this.addSlot(new FurnaceResultSlot(inventory.player, this.container, RESULT_SLOT, 116, 35)); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + + this.addDataSlots(this.data); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if (this.canSmelt(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (this.isFuel(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + protected boolean canSmelt(ItemStack itemStack) { + return this.level.getRecipeManager().getRecipeFor(ECRecipes.GLASS_KILN_TYPE, new SimpleContainer(itemStack), this.level).isPresent(); + } + + public boolean isFuel(ItemStack itemStack) { + return ForgeHooks.getBurnTime(itemStack, ECRecipes.GLASS_KILN_TYPE) > 0; + } + + @Override + public boolean stillValid(Player player) { + return this.container.stillValid(player); + } + + @Override + public void fillCraftSlotsStackedContents(StackedContents contents) { + if (this.container instanceof StackedContentsCompatible) { + ((StackedContentsCompatible)this.container).fillStackedContents(contents); + } + } + + @Override + public void clearCraftingContent() { + this.getSlot(INGREDIENT_SLOT).set(ItemStack.EMPTY); + this.getSlot(RESULT_SLOT).set(ItemStack.EMPTY); + } + + public int getBurnProgress() { + int i = this.data.get(2); + int j = this.data.get(3); + return j != 0 && i != 0 ? i * 24 / j : 0; + } + + public int getLitProgress() { + int i = this.data.get(1); + if (i == 0) { + i = 200; + } + + return this.data.get(0) * 13 / i; + } + + public boolean isLit() { + return this.data.get(0) > 0; + } + + @Override + public boolean recipeMatches(Recipe recipe) { + return recipe.matches(this.container, this.level); + } + + @Override + public int getResultSlotIndex() { + return RESULT_SLOT; + } + + @Override + public int getGridWidth() { + return 1; + } + + @Override + public int getGridHeight() { + return 1; + } + + @Override + public int getSize() { + return SLOT_COUNT; + } + + @Override + public RecipeBookType getRecipeBookType() { + return RecipeBookType.FURNACE; + } + + @Override + public boolean shouldMoveToInventory(int flag) { + return flag != 1; + } + + static class GlassKilnFuelSlot extends Slot { + private final GlassKilnMenu menu; + + public GlassKilnFuelSlot(GlassKilnMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + public boolean mayPlace(ItemStack itemStack) { + return this.menu.isFuel(itemStack); + } + + public int getMaxStackSize(ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java new file mode 100644 index 00000000..87deadaf --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; + +import java.util.Collections; +import java.util.Map; + +public class GlassKilnRecipe extends AbstractCookingRecipe { + public static Map recipeList = Collections.emptyMap(); + + public GlassKilnRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.GLASS_KILN_TYPE, id, group, ingredient, result, experience, cookingTime); + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.GLASS_KILN_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.GLASS_KILN); + } + + public Ingredient getIngredient() { + return this.ingredient; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java new file mode 100644 index 00000000..27a4a99a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerMenu.java @@ -0,0 +1,226 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.SimpleContainerData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class IceMakerMenu extends AbstractContainerMenu { + public static final int INGREDIENT_INPUT_SLOT = 0; + public static final int INGREDIENT_OUTPUT_SLOT = 1; + public static final int CONDENSATE_SLOT = 2; + public static final int RESULT_SLOT = 3; + public static final int SLOT_COUNT = 4; + public static final int INV_SLOT_START = 4; + public static final int INV_SLOT_END = 31; + public static final int USE_ROW_SLOT_START = 31; + public static final int USE_ROW_SLOT_END = 40; + public static final int DATA_COUNT = 5; + private final Container iceMaker; + private final ContainerData iceMakerData; + private final Slot ingredientInputSlot; + private final Slot condensateSlot; + protected final Level level; + + public IceMakerMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public IceMakerMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.ICE_MAKER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.iceMaker = container; + this.iceMakerData = data; + this.level = inventory.player.level; + this.addSlot(new IceMakerMenu.IceMakerResultSlot(inventory.player, container, RESULT_SLOT, 134, 35)); + this.ingredientInputSlot = this.addSlot(new Slot(container, INGREDIENT_INPUT_SLOT, 50, 18) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, INGREDIENT_OUTPUT_SLOT, 50, 52) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.condensateSlot = this.addSlot(new Slot(container, CONDENSATE_SLOT, 16, 26) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET); + } + + @Override + public int getMaxStackSize() { + return 1; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + public static boolean isFluidBucket(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET) || + itemStack.is(Items.LAVA_BUCKET) || + itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_IRON_BUCKET.get()) || + itemStack.is(ECItems.MELTED_GOLD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_COPPER_BUCKET.get()); + } + + @Override + public boolean stillValid(Player player) { + return this.iceMaker.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT || index == CONDENSATE_SLOT || index == INGREDIENT_OUTPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != INGREDIENT_INPUT_SLOT) { + if (ingredientInputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_INPUT_SLOT, INGREDIENT_OUTPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (condensateSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, CONDENSATE_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getFluidTypeIndex() { + return this.iceMakerData.get(0); + } + + public FluidType getFluidType() { + return FluidType.FLUID_TYPES[this.iceMakerData.get(0)]; + } + + public int getIngredientFluidLevel() { + return this.iceMakerData.get(1); + } + + public int getCondensateFluidLevel() { + return this.iceMakerData.get(4); + } + + public int getFreezeProgress() { + int i = this.iceMakerData.get(2); + int j = this.iceMakerData.get(3); + return j != 0 && i != 0 ? (i * 24 / j) : 0; + } + + static class IceMakerResultSlot extends Slot { + private final Player player; + private int removeCount; + + public IceMakerResultSlot(Player player, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.player = player; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(ItemStack itemStack, int count) { + this.removeCount += count; + this.checkTakeAchievements(itemStack); + } + + @Override + protected void checkTakeAchievements(ItemStack itemStack) { + itemStack.onCraftedBy(this.player.level, this.player, this.removeCount); + + this.removeCount = 0; + net.minecraftforge.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java new file mode 100644 index 00000000..11ad304b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java @@ -0,0 +1,96 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class IceMakerRecipe implements Recipe { + protected final ResourceLocation id; + protected final String group; + protected final FluidType inputFluid; + protected final int inputAmount; + protected final ItemStack result; + protected final int freezingTime; + + public static Map recipeList = Collections.emptyMap(); + + public static int FREEZING_TIME = 50; + public static int DEFAULT_INPUT_AMOUNT = 100; + + public IceMakerRecipe(ResourceLocation id, String group, FluidType inputFluid, int inputAmount, ItemStack result, int freezingTime) { + this.id = id; + this.group = group; + this.inputFluid = inputFluid; + this.inputAmount = inputAmount; + this.result = result; + this.freezingTime = freezingTime; + } + + @Override + public boolean canCraftInDimensions(int wid, int hgt) { + return true; + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.ICE_MAKER_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.ICE_MAKER); + } + + @Override + public String getGroup() { + return this.group; + } + + public FluidType getFluidType() { + return this.inputFluid; + } + + public int getFluidAmount() { + return this.inputAmount; + } + + public int getFreezingTime() { + return this.freezingTime; + } + + @Override + public ItemStack assemble(Container container) { + return this.result.copy(); + } + + @Override + public ItemStack getResultItem() { + return this.result; + } + + @Override + public boolean matches(Container container, Level level) { + return this.inputFluid.getID() == ((IceMakerBlockEntity)container).getInputFluidTypeIndex(); + } + + @Override + public ResourceLocation getId() { + return this.id; + } + + @Override + public RecipeType getType() { + return ECRecipes.ICE_MAKER_TYPE; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java new file mode 100644 index 00000000..2729b75e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterMenu.java @@ -0,0 +1,220 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ContainerData; +import net.minecraft.world.inventory.SimpleContainerData; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +import static net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity.isFuel; + +public class MelterMenu extends AbstractContainerMenu { + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_INPUT_SLOT = 2; + public static final int RESULT_OUTPUT_SLOT = 3; + public static final int SLOT_COUNT = 4; + public static final int INV_SLOT_START = 4; + public static final int INV_SLOT_END = 31; + public static final int USE_ROW_SLOT_START = 31; + public static final int USE_ROW_SLOT_END = 40; + public static final int DATA_COUNT = 6; + private final Container melter; + private final ContainerData melterData; + private final Slot ingredientSlot; + private final Slot resultInputSlot; + protected final Level level; + + public MelterMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public MelterMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.MELTER_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.melter = container; + this.melterData = data; + this.level = inventory.player.level; + this.ingredientSlot = this.addSlot(new MelterMenu.IngredientSlot(this, container, INGREDIENT_SLOT, 41, 17)); + this.addSlot(new MelterMenu.MelterFuelSlot(container, FUEL_SLOT, 41, 53)); + + this.resultInputSlot = this.addSlot(new Slot(container, RESULT_INPUT_SLOT, 132, 18) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addSlot(new Slot(container, RESULT_OUTPUT_SLOT, 132, 52) { + @Override + public boolean mayPlace(ItemStack itemStack) { + return itemStack.is(Items.BUCKET) || isFluidBucket(itemStack); + } + + @Override + public int getMaxStackSize() { + return 16; + } + }); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + public static boolean isFluidBucket(ItemStack itemStack) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.LAVA_BUCKET) || + itemStack.is(ECItems.MELTED_EMERALD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_IRON_BUCKET.get()) || + itemStack.is(ECItems.MELTED_GOLD_BUCKET.get()) || + itemStack.is(ECItems.MELTED_COPPER_BUCKET.get()); + } + + public boolean isLit() { + return this.melterData.get(0) > 0; + } + + @Override + public boolean stillValid(Player player) { + return this.melter.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_OUTPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index == RESULT_INPUT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if(resultInputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, RESULT_INPUT_SLOT, RESULT_OUTPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (ingredientSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (isFuel(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_INPUT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getBurnProgress() { + int i = this.melterData.get(2); + int j = this.melterData.get(3); + return j != 0 && i != 0 ? (i * 24 / j) : 0; + } + + public int getLitProgress() { + int i = this.melterData.get(1); + if (i == 0) { + i = MelterRecipe.MELTING_TIME; + } + + return this.melterData.get(0) * 13 / i; + } + + public int getFluidTypeIndex() { + return this.melterData.get(4); + } + + public FluidType getFluidType() { + return FluidType.FLUID_TYPES[this.melterData.get(4)]; + } + + public int getFluidLevel() { + return this.melterData.get(5); + } + + static class IngredientSlot extends Slot { + private final MelterMenu menu; + public IngredientSlot(MelterMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return menu.level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE, new SimpleContainer(itemStack), menu.level).isPresent(); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class MelterFuelSlot extends Slot { + + public MelterFuelSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + public boolean mayPlace(ItemStack itemStack) { + return isFuel(itemStack); + } + + public int getMaxStackSize(ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java new file mode 100644 index 00000000..5b369f32 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java @@ -0,0 +1,102 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.core.NonNullList; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.Level; + +import java.util.Collections; +import java.util.Map; + +public class MelterRecipe implements Recipe { + protected final ResourceLocation id; + protected final String group; + protected final Ingredient ingredient; + protected final FluidType resultFluid; + protected final int resultAmount; + protected final int meltingTime; + + public static Map recipeList = Collections.emptyMap(); + + public static int MELTING_TIME = 200; + + public MelterRecipe(ResourceLocation id, String group, Ingredient ingredient, FluidType resultFluid, int resultAmount, int meltingTime) { + this.id = id; + this.group = group; + this.ingredient = ingredient; + this.resultFluid = resultFluid; + this.resultAmount = resultAmount; + this.meltingTime = meltingTime; + } + + @Override + public boolean canCraftInDimensions(int wid, int hgt) { + return true; + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MELTER_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.MELTER); + } + + public Ingredient getIngredient() { + return this.ingredient; + } + + @Override + public NonNullList getIngredients() { + return NonNullList.of(this.ingredient); + } + + @Override + public String getGroup() { + return this.group; + } + + public FluidType getFluidType() { + return resultFluid; + } + + public int getFluidAmount() { + return resultAmount; + } + + public int getMeltingTime() { + return this.meltingTime; + } + + @Override + public ItemStack assemble(Container container) { + return null; + } + + @Override + public ItemStack getResultItem() { + return null; + } + + @Override + public boolean matches(Container container, Level level) { + return this.ingredient.test(container.getItem(MelterMenu.INGREDIENT_SLOT)); + } + + @Override + public ResourceLocation getId() { + return this.id; + } + + @Override + public RecipeType getType() { + return ECRecipes.MELTER_TYPE; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java new file mode 100644 index 00000000..efebc1e4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableMenu.java @@ -0,0 +1,217 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MineralTableBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.Container; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; + +public class MineralTableMenu extends AbstractContainerMenu { + public static final int INGREDIENT_SLOT = 0; + public static final int FUEL_SLOT = 1; + public static final int RESULT_SLOT = 2; + public static final int SLOT_COUNT = 3; + public static final int INV_SLOT_START = 3; + public static final int INV_SLOT_END = 30; + public static final int USE_ROW_SLOT_START = 30; + public static final int USE_ROW_SLOT_END = 39; + public static final int DATA_COUNT = 4; + private final Container mineralTable; + private final ContainerData mineralTableData; + private final Slot ingredientSlot; + protected final Level level; + + public MineralTableMenu(int id, Inventory inventory) { + this(id, inventory, new SimpleContainer(SLOT_COUNT), new SimpleContainerData(DATA_COUNT)); + } + + public MineralTableMenu(int id, Inventory inventory, Container container, ContainerData data) { + super(ECContainerTypes.MINERAL_TABLE_MENU.get(), id); + checkContainerSize(container, SLOT_COUNT); + checkContainerDataCount(data, DATA_COUNT); + this.mineralTable = container; + this.mineralTableData = data; + this.level = inventory.player.level; + this.addSlot(new MineralTableMenu.MineralResultSlot(inventory.player, container, RESULT_SLOT, 79, 58)); + this.ingredientSlot = this.addSlot(new MineralTableMenu.IngredientSlot(this, container, INGREDIENT_SLOT, 79, 17)); + this.addSlot(new MineralTableMenu.FuelSlot(container, FUEL_SLOT, 17, 17)); + this.addDataSlots(data); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 8 + k * 18, 142)); + } + } + + @Override + public boolean stillValid(Player player) { + return this.mineralTable.stillValid(player); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot.hasItem()) { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + if (index == RESULT_SLOT) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return ItemStack.EMPTY; + } + + slot.onQuickCraft(itemstack1, itemstack); + } else if (index != FUEL_SLOT && index != INGREDIENT_SLOT) { + if (ingredientSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_SLOT, FUEL_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (FuelSlot.mayPlaceItem(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, FUEL_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (index >= INV_SLOT_START && index < INV_SLOT_END) { + if (!this.moveItemStackTo(itemstack1, USE_ROW_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (index >= USE_ROW_SLOT_START && index < USE_ROW_SLOT_END && + !this.moveItemStackTo(itemstack1, INV_SLOT_START, INV_SLOT_END, false)) { + return ItemStack.EMPTY; + } + } else if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, false)) { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) { + slot.set(ItemStack.EMPTY); + } else { + slot.setChanged(); + } + + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTake(player, itemstack1); + } + + return itemstack; + } + + public int getBurnProgress() { + int i = this.mineralTableData.get(2); + int j = this.mineralTableData.get(3); + return j != 0 && i != 0 ? ((j - i - 1) * 400 / j) : 0; + } + + public int getLitProgress() { + int i = this.mineralTableData.get(1); + if (i == 0) { + i = MineralTableRecipe.BURN_TIME; + } + + return this.mineralTableData.get(0) * 20 / i; + } + + static class FuelSlot extends Slot { + public FuelSlot(Container container, int slot, int x, int y) { + super(container, slot, x, y); + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return mayPlaceItem(itemStack); + } + + public static boolean mayPlaceItem(ItemStack itemStack) { + return itemStack.is(Items.BLAZE_POWDER); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class IngredientSlot extends Slot { + private final MineralTableMenu menu; + public IngredientSlot(MineralTableMenu menu, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.menu = menu; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return menu.level.getRecipeManager().getRecipeFor(ECRecipes.MINERAL_TABLE_TYPE, new SimpleContainer(itemStack), menu.level).isPresent(); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } + + static class MineralResultSlot extends Slot { + private final Player player; + private int removeCount; + + public MineralResultSlot(Player player, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.player = player; + } + + @Override + public boolean mayPlace(ItemStack itemStack) { + return false; + } + + @Override + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(Player player, ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(ItemStack itemStack, int count) { + this.removeCount += count; + this.checkTakeAchievements(itemStack); + } + + @Override + protected void checkTakeAchievements(ItemStack itemStack) { + itemStack.onCraftedBy(this.player.level, this.player, this.removeCount); + if (this.player instanceof ServerPlayer && this.container instanceof MineralTableBlockEntity) { + ((MineralTableBlockEntity)this.container).awardUsedRecipesAndPopExperience((ServerPlayer)this.player); + } + + this.removeCount = 0; + net.minecraftforge.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java new file mode 100644 index 00000000..f4f38514 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; + +import java.util.Collections; +import java.util.Map; + +public class MineralTableRecipe extends AbstractCookingRecipe { + public static Map recipeList = Collections.emptyMap(); + + public static int BURN_TIME = 500; + + public MineralTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.MINERAL_TABLE_TYPE, id, group, ingredient, result, experience, cookingTime); + } + + @Override + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MINERAL_TABLE_SERIALIZER.get(); + } + + @Override + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE); + } + + public Ingredient getIngredient() { + return this.ingredient; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java new file mode 100644 index 00000000..af2c322f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/CarpentryTableCategory.java @@ -0,0 +1,70 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import mezz.jei.api.constants.RecipeTypes; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.network.chat.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class CarpentryTableCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "carpentry"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_vanilla.png"); + + public static final int width = 82; + public static final int height = 34; + + private final IDrawable background; + private final IDrawable icon; + + public CarpentryTableCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 220, width, height); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM, new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE)); + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return CarpentryTableRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.carpentry_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, CarpentryTableRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 9).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 61, 9).addItemStack(recipe.getResultItem()); + } + + @Override + public boolean isHandled(CarpentryTableRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java new file mode 100644 index 00000000..31833212 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/GlassKilnRecipeCategory.java @@ -0,0 +1,130 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.*; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class GlassKilnRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "glass_kiln"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_vanilla.png"); + public static final int COOKTIME = 100; + + private final IDrawable background; + private final IDrawableAnimated animatedFlame; + private final IDrawable icon; + private final LoadingCache cachedArrows; + + public GlassKilnRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 114, 82, 54); + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 82, 114, 14, 14); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.TOP, true); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM, new ItemStack(ECBlocks.WorkStation.GLASS_KILN)); + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 82, 128, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + } + + protected IDrawableAnimated getArrow(GlassKilnRecipe recipe) { + int cookTime = recipe.getCookingTime(); + if (cookTime <= 0) { + cookTime = COOKTIME; + } + return this.cachedArrows.getUnchecked(cookTime); + } + + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return GlassKilnRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.glass_kiln"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void draw(GlassKilnRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 20); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 24, 18); + + drawExperience(recipe, poseStack, 0); + drawCookTime(recipe, poseStack, 45); + } + + protected void drawExperience(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + float experience = recipe.getExperience(); + if (experience > 0) { + TranslatableComponent experienceString = new TranslatableComponent("gui.emeraldcraft.glass_kiln.experience", experience); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(experienceString); + fontRenderer.draw(poseStack, experienceString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + protected void drawCookTime(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + int cookTime = recipe.getCookingTime(); + if (cookTime > 0) { + int cookTimeSeconds = cookTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.glass_kiln.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, GlassKilnRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 1).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 61, 19).addItemStack(recipe.getResultItem()); + } + + @Override + public boolean isHandled(GlassKilnRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java new file mode 100644 index 00000000..d706b793 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/IceMakerRecipeCategory.java @@ -0,0 +1,127 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class IceMakerRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "ice_maker"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_ice_maker.png"); + + public static final int FREEZETIME = 100; + + private final IDrawable background; + private final IDrawable icon; + private final LoadingCache cachedArrows; + private final IDrawableAnimated animatedFlame; + private final IDrawableStatic[] inputFluids; + + public IceMakerRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 148, 56); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM, new ItemStack(ECBlocks.WorkStation.ICE_MAKER)); + + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 148, 8, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 148, 0, 32, 8); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.LEFT, true); + + this.inputFluids = new IDrawableStatic[] { + guiHelper.createDrawable(TEXTURE, 0, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 12, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 24, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 36, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 48, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 60, 56, 12, 49) + }; + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return IceMakerRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.ice_maker"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void draw(IceMakerRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 47); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 90, 16); + drawCookTime(recipe, poseStack, 49); + + inputFluids[recipe.getFluidType().getID()].draw(poseStack, 72, 1); + } + + protected void drawCookTime(IceMakerRecipe recipe, PoseStack poseStack, int y) { + int freezeTime = recipe.getFreezingTime(); + if (freezeTime > 0) { + int cookTimeSeconds = freezeTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.ice_maker.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, IceMakerRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.OUTPUT, 128, 19).addItemStack(recipe.getResultItem()); + } + + protected IDrawableAnimated getArrow(IceMakerRecipe recipe) { + int freezeTime = recipe.getFreezingTime(); + if (freezeTime <= 0) { + freezeTime = FREEZETIME; + } + return this.cachedArrows.getUnchecked(freezeTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java new file mode 100644 index 00000000..1306d0d4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/JEIHelper.java @@ -0,0 +1,124 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.GlassKilnScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.IceMakerScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.MelterScreen; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.MineralTableScreen; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.constants.VanillaRecipeCategoryUid; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.registration.*; +import mezz.jei.api.runtime.IJeiRuntime; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@JeiPlugin +public class JEIHelper implements IModPlugin { + private static final ResourceLocation UID = new ResourceLocation(MODID, "main"); + public static IDrawableStatic slotDrawable; + + @Override + public ResourceLocation getPluginUid() { + return UID; + } + + @Override + public void registerItemSubtypes(ISubtypeRegistration subtypeRegistry) { } + + @Override + public void registerIngredients(IModIngredientRegistration registry) { } + + @Override + public void registerCategories(IRecipeCategoryRegistration registry) { + //Recipes + IGuiHelper guiHelper = registry.getJeiHelpers().getGuiHelper(); + registry.addRecipeCategories( + new CarpentryTableCategory(guiHelper), + new GlassKilnRecipeCategory(guiHelper), + new MineralTableRecipeCategory(guiHelper), + new MelterRecipeCategory(guiHelper), + new IceMakerRecipeCategory(guiHelper) + ); + + slotDrawable = guiHelper.getSlotDrawable(); + } + + @Override + public void registerVanillaCategoryExtensions(IVanillaCategoryExtensionRegistration registration) { } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + ECLogger.info("Adding recipes to JEI!!"); + registration.addRecipes(new ArrayList<>(CarpentryTableRecipe.recipeList.values()), CarpentryTableCategory.UID); + registration.addRecipes(new ArrayList<>(GlassKilnRecipe.recipeList.values()), GlassKilnRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(MineralTableRecipe.recipeList.values()), MineralTableRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(MelterRecipe.recipeList.values()), MelterRecipeCategory.UID); + registration.addRecipes(new ArrayList<>(IceMakerRecipe.recipeList.values()), IceMakerRecipeCategory.UID); + } + + @Override + public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) { + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + GlassKilnRecipeCategory.UID, + GlassKilnMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + VanillaRecipeCategoryUid.FUEL, + GlassKilnMenu.FUEL_SLOT,1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MineralTableMenu.class, + MineralTableRecipeCategory.UID, + MineralTableMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + MelterRecipeCategory.UID, + MelterMenu.INGREDIENT_SLOT, 1, + 3, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + VanillaRecipeCategoryUid.FUEL, + MelterMenu.FUEL_SLOT,1, + 3, 36 + ); + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE), CarpentryTableCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.GLASS_KILN), GlassKilnRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE), MineralTableRecipeCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MELTER), MelterRecipeCategory.UID); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.ICE_MAKER), IceMakerRecipeCategory.UID); + } + + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registration) { + registration.addRecipeClickArea(GlassKilnScreen.class, 78, 32, 28, 23, GlassKilnRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeClickArea(MineralTableScreen.class, 97, 16, 14, 30, MineralTableRecipeCategory.UID); + registration.addRecipeClickArea(MelterScreen.class, 63, 32, 28, 23, MelterRecipeCategory.UID, VanillaRecipeCategoryUid.FUEL); + registration.addRecipeClickArea(IceMakerScreen.class, 96, 32, 28, 23, IceMakerRecipeCategory.UID); + } + + @Override + public void registerAdvanced(IAdvancedRegistration registration) { } + + @Override + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java new file mode 100644 index 00000000..d319c1d2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MelterRecipeCategory.java @@ -0,0 +1,132 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MelterRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "melter"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_melter.png"); + + public static final int MELTTIME = 200; + + private final IDrawable background; + private final IDrawable icon; + private final LoadingCache cachedArrows; + private final IDrawableAnimated animatedFlame; + private final IDrawableStatic[] resultFluids; + + public MelterRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 109, 54); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM, new ItemStack(ECBlocks.WorkStation.MELTER)); + + this.cachedArrows = CacheBuilder.newBuilder() + .maximumSize(25) + .build(new CacheLoader<>() { + @Override + public IDrawableAnimated load(Integer cookTime) { + return guiHelper.drawableBuilder(TEXTURE, 109, 14, 24, 17) + .buildAnimated(cookTime, IDrawableAnimated.StartDirection.LEFT, false); + } + }); + + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 109, 0, 14, 14); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.TOP, true); + + this.resultFluids = new IDrawableStatic[] { + guiHelper.createDrawable(TEXTURE, 0, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 12, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 24, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 36, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 48, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 60, 54, 12, 49) + }; + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return MelterRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.melter"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void draw(MelterRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack poseStack, double mouseX, double mouseY) { + animatedFlame.draw(poseStack, 1, 20); + + IDrawableAnimated arrow = getArrow(recipe); + arrow.draw(poseStack, 24, 18); + drawCookTime(recipe, poseStack, 22); + + resultFluids[recipe.getFluidType().getID()].draw(poseStack, 65, 2); + } + + protected void drawCookTime(MelterRecipe recipe, PoseStack poseStack, int y) { + int meltTime = recipe.getMeltingTime(); + if (meltTime > 0) { + int cookTimeSeconds = meltTime / 20; + TranslatableComponent timeString = new TranslatableComponent("gui.emeraldcraft.melter.time.seconds", cookTimeSeconds); + Minecraft minecraft = Minecraft.getInstance(); + Font fontRenderer = minecraft.font; + int stringWidth = fontRenderer.width(timeString); + fontRenderer.draw(poseStack, timeString, background.getWidth() - stringWidth, y, 0xFF808080); + } + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, MelterRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 1).addIngredients(recipe.getIngredient()); + } + + protected IDrawableAnimated getArrow(MelterRecipe recipe) { + int meltTime = recipe.getMeltingTime(); + if (meltTime <= 0) { + meltTime = MELTTIME; + } + return this.cachedArrows.getUnchecked(meltTime); + } + + @Override + public boolean isHandled(MelterRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java new file mode 100644 index 00000000..07aa5e80 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/MineralTableRecipeCategory.java @@ -0,0 +1,111 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.ITickTimer; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.drawable.IDrawableAnimated; +import mezz.jei.api.gui.drawable.IDrawableStatic; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MineralTableRecipeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "mineral_table"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/gui_mineral_table.png"); + + private final IDrawable background; + private final IDrawable icon; + private final IDrawable slotDrawable; + private final IDrawableAnimated arrow; + private final IDrawableAnimated bubbles; + private final IDrawableStatic blazeHeat; + + public MineralTableRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.drawableBuilder(TEXTURE, 0, 0, 64, 60) + .addPadding(1, 0, 0, 50) + .build(); + icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM, new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE)); + + arrow = guiHelper.drawableBuilder(TEXTURE, 64, 0, 9, 28) + .buildAnimated(400, IDrawableAnimated.StartDirection.TOP, false); + + ITickTimer bubblesTickTimer = new BubblesTickTimer(guiHelper); + bubbles = guiHelper.drawableBuilder(TEXTURE, 73, 0, 12, 29) + .buildAnimated(bubblesTickTimer, IDrawableAnimated.StartDirection.BOTTOM); + + blazeHeat = guiHelper.createDrawable(TEXTURE, 64, 29, 18, 4); + + slotDrawable = guiHelper.getSlotDrawable(); + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return MineralTableRecipe.class; + } + + @Override + public Component getTitle() { + return new TranslatableComponent("block.emeraldcraft.mineral_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void draw(MineralTableRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack poseStack, double mouseX, double mouseY) { + blazeHeat.draw(poseStack, 5, 30); + bubbles.draw(poseStack, 8, 0); + arrow.draw(poseStack, 42, 2); + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, MineralTableRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 24, 3).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 81, 3).addItemStack(recipe.getResultItem()).setBackground(slotDrawable, -1, -1); + } + + private static class BubblesTickTimer implements ITickTimer { + @SuppressWarnings("JavadocReference") + private static final int[] BUBBLE_LENGTHS = new int[]{29, 23, 18, 13, 9, 5, 0}; + private final ITickTimer internalTimer; + + public BubblesTickTimer(IGuiHelper guiHelper) { + this.internalTimer = guiHelper.createTickTimer(14, BUBBLE_LENGTHS.length - 1, false); + } + + @Override + public int getValue() { + int timerValue = this.internalTimer.getValue(); + return BUBBLE_LENGTHS[timerValue]; + } + + @Override + public int getMaxValue() { + return BUBBLE_LENGTHS[0]; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java new file mode 100644 index 00000000..9cccd394 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/package-info.java @@ -0,0 +1,8 @@ + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import net.minecraft.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java new file mode 100644 index 00000000..93c9c80a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/CarpentryTableScreen.java @@ -0,0 +1,182 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableMenu; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class CarpentryTableScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/carpentry.png"); + private float scrollOffs; + private boolean scrolling; + private int startIndex; + private boolean displayRecipes; + + public CarpentryTableScreen(CarpentryTableMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + menu.registerUpdateListener(this::containerChanged); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + this.renderBackground(transform); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = this.leftPos; + int j = this.topPos; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int k = (int)(41.0F * this.scrollOffs); + this.blit(transform, i + 119, j + 15 + k, 176 + (this.isScrollBarActive() ? 0 : 12), 0, 12, 15); + int l = this.leftPos + 52; + int i1 = this.topPos + 14; + int j1 = this.startIndex + 12; + this.renderButtons(transform, x, y, l, i1, j1); + this.renderRecipes(l, i1, j1); + } + + @Override + protected void renderTooltip(PoseStack transform, int x, int y) { + super.renderTooltip(transform, x, y); + if (this.displayRecipes) { + int i = this.leftPos + 52; + int j = this.topPos + 14; + int k = this.startIndex + 12; + List list = this.menu.getRecipes(); + + for(int l = this.startIndex; l < k && l < this.menu.getNumRecipes(); ++l) { + int i1 = l - this.startIndex; + int j1 = i + i1 % 4 * 16; + int k1 = j + i1 / 4 * 18 + 2; + if (x >= j1 && x < j1 + 16 && y >= k1 && y < k1 + 18) { + this.renderTooltip(transform, list.get(l).getResultItem(), x, y); + } + } + } + + } + + private void renderButtons(PoseStack p_99342_, int p_99343_, int p_99344_, int p_99345_, int p_99346_, int p_99347_) { + for(int i = this.startIndex; i < p_99347_ && i < this.menu.getNumRecipes(); ++i) { + int j = i - this.startIndex; + int k = p_99345_ + j % 4 * 16; + int l = j / 4; + int i1 = p_99346_ + l * 18 + 2; + int j1 = this.imageHeight; + if (i == this.menu.getSelectedRecipeIndex()) { + j1 += 18; + } else if (p_99343_ >= k && p_99344_ >= i1 && p_99343_ < k + 16 && p_99344_ < i1 + 18) { + j1 += 36; + } + + this.blit(p_99342_, k, i1 - 1, 0, j1, 16, 18); + } + + } + + private void renderRecipes(int x, int y, int endIndex) { + List list = this.menu.getRecipes(); + + for(int i = this.startIndex; i < endIndex && i < this.menu.getNumRecipes(); ++i) { + int j = i - this.startIndex; + int k = x + j % 4 * 16; + int l = j / 4; + int i1 = y + l * 18 + 2; + this.minecraft.getItemRenderer().renderAndDecorateItem(list.get(i).getResultItem(), k, i1); + } + } + + @Override + public boolean mouseClicked(double p_99318_, double p_99319_, int p_99320_) { + this.scrolling = false; + if (this.displayRecipes) { + int i = this.leftPos + 52; + int j = this.topPos + 14; + int k = this.startIndex + 12; + + for(int l = this.startIndex; l < k; ++l) { + int i1 = l - this.startIndex; + double d0 = p_99318_ - (double)(i + i1 % 4 * 16); + double d1 = p_99319_ - (double)(j + i1 / 4 * 18); + if (d0 >= 0.0D && d1 >= 0.0D && d0 < 16.0D && d1 < 18.0D && this.menu.clickMenuButton(this.minecraft.player, l)) { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_STONECUTTER_SELECT_RECIPE, 1.0F)); + this.minecraft.gameMode.handleInventoryButtonClick((this.menu).containerId, l); + return true; + } + } + + i = this.leftPos + 119; + j = this.topPos + 9; + if (p_99318_ >= (double)i && p_99318_ < (double)(i + 12) && p_99319_ >= (double)j && p_99319_ < (double)(j + 54)) { + this.scrolling = true; + } + } + + return super.mouseClicked(p_99318_, p_99319_, p_99320_); + } + + @Override + public boolean mouseDragged(double p_99322_, double p_99323_, int p_99324_, double p_99325_, double p_99326_) { + if (this.scrolling && this.isScrollBarActive()) { + int i = this.topPos + 14; + int j = i + 54; + this.scrollOffs = ((float)p_99323_ - (float)i - 7.5F) / ((float)(j - i) - 15.0F); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + this.startIndex = (int)((double)(this.scrollOffs * (float)this.getOffscreenRows()) + 0.5D) * 4; + return true; + } else { + return super.mouseDragged(p_99322_, p_99323_, p_99324_, p_99325_, p_99326_); + } + } + + @Override + public boolean mouseScrolled(double p_99314_, double p_99315_, double p_99316_) { + if (this.isScrollBarActive()) { + int i = this.getOffscreenRows(); + this.scrollOffs = (float)((double)this.scrollOffs - p_99316_ / (double)i); + this.scrollOffs = Mth.clamp(this.scrollOffs, 0.0F, 1.0F); + this.startIndex = (int)((double)(this.scrollOffs * (float)i) + 0.5D) * 4; + } + + return true; + } + + private boolean isScrollBarActive() { + return this.displayRecipes && this.menu.getNumRecipes() > 12; + } + + protected int getOffscreenRows() { + return (this.menu.getNumRecipes() + 4 - 1) / 4 - 3; + } + + private void containerChanged() { + this.displayRecipes = this.menu.hasInputItem(); + if (!this.displayRecipes) { + this.scrollOffs = 0.0F; + this.startIndex = 0; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java new file mode 100644 index 00000000..541b3a1f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/ContinuousMinerScreen.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class ContinuousMinerScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/continuous_miner.png"); + + public ContinuousMinerScreen(ContinuousMinerMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int energyLevel = this.menu.getFluidLevel(); + if(energyLevel > 0) { + int k = Mth.clamp((ContinuousMinerBlockEntity.MAX_FLUID_LEVEL - 1 - energyLevel) / 5, 0, 49); + this.blit(transform, i + 119, j + 20 + k, 176, k, 12, 49 - k); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java new file mode 100644 index 00000000..8163c7fd --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java @@ -0,0 +1,82 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + + +import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; +import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nullable; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +@OnlyIn(Dist.CLIENT) +public class GlassKilnRecipeBookComponent extends RecipeBookComponent { + private static final Component FILTER_NAME = new TranslatableComponent("gui.recipebook.toggleRecipes.kilnable"); + + @Nullable + private Ingredient fuels; + + @Override + protected void initFilterButtonTextures() { + this.filterButton.initTextureValues(152, 182, 28, 18, RECIPE_BOOK_LOCATION); + } + + @Override + public void slotClicked(@Nullable Slot p_100120_) { + super.slotClicked(p_100120_); + if (p_100120_ != null && p_100120_.index < this.menu.getSize()) { + this.ghostRecipe.clear(); + } + } + + @Override + public void setupGhostRecipe(Recipe p_100122_, List p_100123_) { + ItemStack itemstack = p_100122_.getResultItem(); + this.ghostRecipe.setRecipe(p_100122_); + this.ghostRecipe.addIngredient(Ingredient.of(itemstack), (p_100123_.get(2)).x, (p_100123_.get(2)).y); + NonNullList ingredients = p_100122_.getIngredients(); + Slot slot = p_100123_.get(1); + if (slot.getItem().isEmpty()) { + if (this.fuels == null) { + this.fuels = Ingredient.of(this.getFuelItems().stream().map(ItemStack::new)); + } + + this.ghostRecipe.addIngredient(this.fuels, slot.x, slot.y); + } + + Iterator iterator = ingredients.iterator(); + + for(int i = 0; i < 2; ++i) { + if (!iterator.hasNext()) { + return; + } + + Ingredient ingredient = iterator.next(); + if (!ingredient.isEmpty()) { + Slot slot1 = p_100123_.get(i); + this.ghostRecipe.addIngredient(ingredient, slot1.x, slot1.y); + } + } + + } + + + @Override + protected Component getRecipeFilterName() { + return FILTER_NAME; + } + + protected Set getFuelItems() { + return AbstractFurnaceBlockEntity.getFuel().keySet(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java new file mode 100644 index 00000000..18cdd6c9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnScreen.java @@ -0,0 +1,131 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.components.ImageButton; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.recipebook.RecipeBookComponent; +import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class GlassKilnScreen extends AbstractContainerScreen implements RecipeUpdateListener { + private static final ResourceLocation RECIPE_BUTTON_LOCATION = new ResourceLocation("textures/gui/recipe_button.png"); + private static final ResourceLocation texture = new ResourceLocation(MODID, "textures/gui/container/glass_kiln.png"); + private static final GlassKilnRecipeBookComponent recipeBookComponent = new GlassKilnRecipeBookComponent(); + + private boolean widthTooNarrow; + + public GlassKilnScreen(GlassKilnMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + } + + @Override + public void init() { + super.init(); + this.widthTooNarrow = this.width < 379; + recipeBookComponent.init(this.width, this.height, this.minecraft, this.widthTooNarrow, this.menu); + this.leftPos = recipeBookComponent.updateScreenPosition(this.width, this.imageWidth); + this.addRenderableWidget(new ImageButton(this.leftPos + 20, this.height / 2 - 49, 20, 18, 0, 0, 19, RECIPE_BUTTON_LOCATION, (p_97863_) -> { + recipeBookComponent.toggleVisibility(); + this.leftPos = recipeBookComponent.updateScreenPosition(this.width, this.imageWidth); + ((ImageButton)p_97863_).setPosition(this.leftPos + 20, this.height / 2 - 49); + })); + this.titleLabelX = (this.imageWidth - this.font.width(this.title)) / 2; + } + + @Override + public void containerTick() { + super.containerTick(); + recipeBookComponent.tick(); + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + if (recipeBookComponent.isVisible() && this.widthTooNarrow) { + this.renderBg(transform, partialTicks, x, y); + recipeBookComponent.render(transform, x, y, partialTicks); + } else { + recipeBookComponent.render(transform, x, y, partialTicks); + super.render(transform, x, y, partialTicks); + recipeBookComponent.renderGhostRecipe(transform, this.leftPos, this.topPos, true, partialTicks); + } + + this.renderTooltip(transform, x, y); + recipeBookComponent.renderTooltip(transform, this.leftPos, this.topPos, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, texture); + int i = this.leftPos; + int j = this.topPos; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + if (this.menu.isLit()) { + int k = this.menu.getLitProgress(); + this.blit(transform, i + 56, j + 36 + 12 - k, 176, 12 - k, 14, k + 1); + } + + int l = this.menu.getBurnProgress(); + this.blit(transform, i + 79, j + 34, 176, 14, l + 1, 16); + } + + @Override + public boolean mouseClicked(double p_97834_, double p_97835_, int p_97836_) { + if (recipeBookComponent.mouseClicked(p_97834_, p_97835_, p_97836_)) { + return true; + } + return widthTooNarrow && recipeBookComponent.isVisible() ? true : super.mouseClicked(p_97834_, p_97835_, p_97836_); + } + + @Override + protected void slotClicked(Slot p_97848_, int p_97849_, int p_97850_, ClickType p_97851_) { + super.slotClicked(p_97848_, p_97849_, p_97850_, p_97851_); + recipeBookComponent.slotClicked(p_97848_); + } + + @Override + public boolean keyPressed(int p_97844_, int p_97845_, int p_97846_) { + return !recipeBookComponent.keyPressed(p_97844_, p_97845_, p_97846_) && super.keyPressed(p_97844_, p_97845_, p_97846_); + } + + @Override + protected boolean hasClickedOutside(double p_97838_, double p_97839_, int p_97840_, int p_97841_, int p_97842_) { + boolean flag = p_97838_ < (double)p_97840_ || p_97839_ < (double)p_97841_ || p_97838_ >= (double)(p_97840_ + this.imageWidth) || p_97839_ >= (double)(p_97841_ + this.imageHeight); + return recipeBookComponent.hasClickedOutside(p_97838_, p_97839_, this.leftPos, this.topPos, this.imageWidth, this.imageHeight, p_97842_) && flag; + } + + @Override + public boolean charTyped(char p_97831_, int p_97832_) { + return recipeBookComponent.charTyped(p_97831_, p_97832_) || super.charTyped(p_97831_, p_97832_); + } + + @Override + public void recipesUpdated() { + recipeBookComponent.recipesUpdated(); + } + + @Override + public RecipeBookComponent getRecipeBookComponent() { + return recipeBookComponent; + } + + @Override + public void removed() { + recipeBookComponent.removed(); + super.removed(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java new file mode 100644 index 00000000..91730788 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/IceMakerScreen.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class IceMakerScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/ice_maker.png"); + + public IceMakerScreen(IceMakerMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + + int l = this.menu.getFreezeProgress(); + this.blit(transform, i + 97, j + 34, 176, 8, l + 1, 16); + + int ingredientLevel = this.menu.getIngredientFluidLevel(); + if(ingredientLevel > 0) { + int k = Mth.clamp((IceMakerBlockEntity.MAX_INGREDIENT_FLUID_LEVEL - 1 - ingredientLevel) / 20, 0, 49); + this.blit(transform, i + 79, j + 18 + k, 12 * menu.getFluidTypeIndex(), 166 + k, 12, 49 - k); + } + + int condensateLevel = this.menu.getCondensateFluidLevel(); + if(condensateLevel > 0) { + int k = Mth.clamp((IceMakerBlockEntity.MAX_CONDENSATE_FLUID_LEVEL - condensateLevel) / 25, 0, 32); + this.blit(transform, i + 8 + k, j + 64, 176 + k, 0, 32 - k, 8); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java new file mode 100644 index 00000000..05a78274 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MelterScreen.java @@ -0,0 +1,56 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.MelterMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class MelterScreen extends AbstractContainerScreen { + private static final ResourceLocation BG_LOCATION = new ResourceLocation(MODID, "textures/gui/container/melter.png"); + + public MelterScreen(MelterMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + --this.titleLabelY; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, BG_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + if (this.menu.isLit()) { + int k = this.menu.getLitProgress(); + this.blit(transform, i + 41, j + 36 + 12 - k, 176, 12 - k, 14, k + 1); + } + + int l = this.menu.getBurnProgress(); + this.blit(transform, i + 64, j + 34, 176, 14, l + 1, 16); + + int energyLevel = this.menu.getFluidLevel(); + if(energyLevel > 0) { + int k = Mth.clamp((MelterBlockEntity.MAX_FLUID_LEVEL - 1 - energyLevel) / 20, 0, 49); + this.blit(transform, i + 105, j + 18 + k, 12 * menu.getFluidTypeIndex(), 166 + k, 12, 49 - k); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java new file mode 100644 index 00000000..30dd2de3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/MineralTableScreen.java @@ -0,0 +1,64 @@ +package com.hexagram2021.emeraldcraft.common.crafting.recipebook; + +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableMenu; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MineralTableScreen extends AbstractContainerScreen { + private static final ResourceLocation MINERAL_TABLE_LOCATION = new ResourceLocation(MODID, "textures/gui/container/mineral_table.png"); + private static final int[] BUBBLELENGTHS = new int[]{29, 24, 20, 16, 11, 6, 0}; + + public MineralTableScreen(MineralTableMenu menu, Inventory inventory, Component component) { + super(menu, inventory, component); + } + + @Override + protected void init() { + super.init(); + this.titleLabelX = (this.imageWidth - this.font.width(this.title)) / 2; + } + + @Override + public void render(PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(PoseStack transform, float partialTicks, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, MINERAL_TABLE_LOCATION); + int i = (this.width - this.imageWidth) / 2; + int j = (this.height - this.imageHeight) / 2; + this.blit(transform, i, j, 0, 0, this.imageWidth, this.imageHeight); + int k = this.menu.getLitProgress(); + int l = Mth.clamp((18 * k + 20 - 1) / 20, 0, 18); + if (l > 0) { + this.blit(transform, i + 60, j + 44, 176, 29, l, 4); + } + + int i1 = this.menu.getBurnProgress(); + if (i1 > 0) { + int j1 = (int)(28.0F * (1.0F - (float)i1 / 400.0F)); + if (j1 > 0) { + this.blit(transform, i + 97, j + 16, 176, 0, 9, j1); + } + + j1 = BUBBLELENGTHS[i1 / 2 % 7]; + if (j1 > 0) { + this.blit(transform, i + 63, j + 14 + 29 - j1, 185, 29 - j1, 12, j1); + } + } + + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java new file mode 100644 index 00000000..90a9dd62 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/CarpentryTableRecipeSerializer.java @@ -0,0 +1,59 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class CarpentryTableRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer{ + private final CarpentryTableRecipeSerializer.Creator factory; + + public CarpentryTableRecipeSerializer(CarpentryTableRecipeSerializer.Creator creator) { + this.factory = creator; + } + + @Override @NotNull + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + Ingredient ingredient; + if (GsonHelper.isArrayNode(json, "ingredients")) { + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonArray(json, "ingredients")); + } else { + ingredient = Ingredient.fromJson(GsonHelper.getAsJsonObject(json, "ingredients")); + } + + String s1 = GsonHelper.getAsString(json, "result"); + int i = GsonHelper.getAsInt(json, "count"); + ItemStack itemstack = new ItemStack(Registry.ITEM.get(new ResourceLocation(s1)), i); + return this.factory.create(id, s, ingredient, itemstack); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + return this.factory.create(id, s, ingredient, itemstack); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack itemStack); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java new file mode 100644 index 00000000..f4c7cd09 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/GlassKilnRecipeSerializer.java @@ -0,0 +1,77 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class GlassKilnRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultCookingTime; + private final GlassKilnRecipeSerializer.Creator factory; + + public GlassKilnRecipeSerializer(GlassKilnRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @Override @NotNull + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + ItemStack itemstack; + if (json.get("result").isJsonObject()) { + itemstack = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + float f = GsonHelper.getAsFloat(json, "experience", 0.0F); + int i = GsonHelper.getAsInt(json, "cookingtime", this.defaultCookingTime); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float f = buf.readFloat(); + int i = buf.readVarInt(); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + buf.writeFloat(recipe.getExperience()); + buf.writeVarInt(recipe.getCookingTime()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingtime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java new file mode 100644 index 00000000..b20331a7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java @@ -0,0 +1,82 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.IceMakerRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.Container; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class IceMakerRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultFreezingTime; + private final IceMakerRecipeSerializer.Creator factory; + + public IceMakerRecipeSerializer(IceMakerRecipeSerializer.Creator creator, int freezingTime) { + this.defaultFreezingTime = freezingTime; + this.factory = creator; + } + + @Override @NotNull + public T fromJson(ResourceLocation id, JsonObject json) { + String group = GsonHelper.getAsString(json, "group", ""); + + if (!json.has("ingredient")) throw new com.google.gson.JsonSyntaxException("Missing ingredient, expected to find an object"); + FluidType fluidType; + int fluidAmount; + if (json.get("ingredient").isJsonObject()) { + JsonObject ingredient = GsonHelper.getAsJsonObject(json, "ingredient"); + fluidType = FluidType.valueOf(GsonHelper.getAsString(ingredient, "fluid")); + fluidAmount = GsonHelper.getAsInt(ingredient, "amount", IceMakerRecipe.DEFAULT_INPUT_AMOUNT); + } else { + throw new IllegalStateException("ingredient is not a Json object"); + } + + ItemStack result; + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + if (json.get("result").isJsonObject()) { + result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + result = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + int i = GsonHelper.getAsInt(json, "freezingtime", this.defaultFreezingTime); + return this.factory.create(id, group, fluidType, fluidAmount, result, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + FluidType fluidType = FluidType.valueOf(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + ItemStack result = buf.readItem(); + int i = buf.readVarInt(); + return this.factory.create(id, group, fluidType, fluidAmount, result, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + buf.writeUtf(recipe.getFluidType().toString()); + buf.writeVarInt(recipe.getFluidAmount()); + buf.writeItem(recipe.getResultItem()); + buf.writeVarInt(recipe.getFreezingTime()); + } + + public interface Creator> { + T create(ResourceLocation id, String group, FluidType inputFluid, int inputAmount, ItemStack result, int freezingTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java new file mode 100644 index 00000000..af001151 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MelterRecipeSerializer.java @@ -0,0 +1,72 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.Container; +import net.minecraft.world.item.crafting.*; +import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class MelterRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultMeltingTime; + private final MelterRecipeSerializer.Creator factory; + + public MelterRecipeSerializer(MelterRecipeSerializer.Creator creator, int meltingTime) { + this.defaultMeltingTime = meltingTime; + this.factory = creator; + } + + @Override @NotNull + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find an object"); + FluidType fluidType; + int fluidAmount; + if (json.get("result").isJsonObject()) { + JsonObject result = GsonHelper.getAsJsonObject(json, "result"); + fluidType = FluidType.valueOf(GsonHelper.getAsString(result, "fluid")); + fluidAmount = GsonHelper.getAsInt(result, "amount"); + } else { + throw new IllegalStateException("result is not a Json object"); + } + int i = GsonHelper.getAsInt(json, "meltingtime", this.defaultMeltingTime); + return this.factory.create(id, s, ingredient, fluidType, fluidAmount, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + FluidType fluidType = FluidType.valueOf(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + int i = buf.readVarInt(); + return this.factory.create(id, group, ingredient, fluidType, fluidAmount, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeUtf(recipe.getFluidType().toString()); + buf.writeVarInt(recipe.getFluidAmount()); + buf.writeVarInt(recipe.getMeltingTime()); + } + + public interface Creator> { + T create(ResourceLocation id, String group, Ingredient ingredient, FluidType resultFluid, int resultAmount, int meltingTime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java new file mode 100644 index 00000000..dc0353dd --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java @@ -0,0 +1,77 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.AbstractCookingRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class MineralTableRecipeSerializer extends ForgeRegistryEntry> implements RecipeSerializer { + private final int defaultCookingTime; + private final MineralTableRecipeSerializer.Creator factory; + + public MineralTableRecipeSerializer(MineralTableRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @Override @NotNull + public T fromJson(ResourceLocation id, JsonObject json) { + String s = GsonHelper.getAsString(json, "group", ""); + JsonElement jsonelement = + GsonHelper.isArrayNode(json, "ingredient") ? + GsonHelper.getAsJsonArray(json, "ingredient") : + GsonHelper.getAsJsonObject(json, "ingredient"); + Ingredient ingredient = Ingredient.fromJson(jsonelement); + + if (!json.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); + ItemStack itemstack; + if (json.get("result").isJsonObject()) { + itemstack = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + } else { + String s1 = GsonHelper.getAsString(json, "result"); + ResourceLocation resourcelocation = new ResourceLocation(s1); + itemstack = new ItemStack(Registry.ITEM.getOptional(resourcelocation).orElseThrow( + () -> new IllegalStateException("Item: " + s1 + " does not exist") + )); + } + float f = GsonHelper.getAsFloat(json, "experience", 0.0F); + int i = GsonHelper.getAsInt(json, "cookingtime", this.defaultCookingTime); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Nullable + @Override + public T fromNetwork(ResourceLocation id, FriendlyByteBuf buf) { + String s = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float f = buf.readFloat(); + int i = buf.readVarInt(); + return this.factory.create(id, s, ingredient, itemstack, f, i); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, T recipe) { + buf.writeUtf(recipe.getGroup()); + recipe.getIngredient().toNetwork(buf); + buf.writeItem(recipe.getResultItem()); + buf.writeFloat(recipe.getExperience()); + buf.writeVarInt(recipe.getCookingTime()); + } + + public interface Creator { + T create(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingtime); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java b/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java new file mode 100644 index 00000000..98f89434 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java @@ -0,0 +1,53 @@ +package com.hexagram2021.emeraldcraft.common.dispenser; + +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockSource; +import net.minecraft.core.Direction; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import org.jetbrains.annotations.NotNull; + +public class ECBoatDispenseItemBehaviour extends DefaultDispenseItemBehavior { + private final DefaultDispenseItemBehavior defaultDispenseItemBehavior = new DefaultDispenseItemBehavior(); + private final ECBoat.ECBoatType type; + + public ECBoatDispenseItemBehaviour(ECBoat.ECBoatType type) { + this.type = type; + } + + @Override @NotNull + public ItemStack execute(BlockSource block, @NotNull ItemStack itemStack) { + Direction direction = block.getBlockState().getValue(DispenserBlock.FACING); + Level level = block.getLevel(); + double d0 = block.x() + (double)((float)direction.getStepX() * 1.125F); + double d1 = block.y() + (double)((float)direction.getStepY() * 1.125F); + double d2 = block.z() + (double)((float)direction.getStepZ() * 1.125F); + BlockPos blockpos = block.getPos().relative(direction); + double d3; + if (level.getFluidState(blockpos).is(FluidTags.WATER)) { + d3 = 1.0D; + } else { + if (!level.getBlockState(blockpos).isAir() || !level.getFluidState(blockpos.below()).is(FluidTags.WATER)) { + return this.defaultDispenseItemBehavior.dispense(block, itemStack); + } + + d3 = 0.0D; + } + + ECBoat boat = new ECBoat(level, d0, d1 + d3, d2); + boat.setECBoatType(this.type); + boat.setYRot(direction.toYRot()); + level.addFreshEntity(boat); + itemStack.shrink(1); + return itemStack; + } + + @Override + protected void playSound(BlockSource block) { + block.getLevel().levelEvent(1000, block.getPos(), 0); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java new file mode 100644 index 00000000..026f8c39 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java @@ -0,0 +1,165 @@ +package com.hexagram2021.emeraldcraft.common.entities; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.network.NetworkHooks; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; + +public class ECBoat extends Boat { + public static final EntityDataAccessor DATA_ID_ECTYPE = SynchedEntityData.defineId(ECBoat.class, EntityDataSerializers.INT); + + public ECBoat(EntityType type, Level level) { + super(type, level); + this.blocksBuilding = true; + } + + public ECBoat(Level level, double x, double y, double z) { + this(ECEntities.BOAT.get(), level); + this.setPos(x, y, z); + this.xo = x; + this.yo = y; + this.zo = z; + } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(DATA_ID_ECTYPE, ECBoatType.GINKGO.ordinal()); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void addAdditionalSaveData(CompoundTag nbt) { + nbt.putString("Type", this.getECBoatType().getName()); + } + + @Override + protected void readAdditionalSaveData(CompoundTag nbt) { + if (nbt.contains("model", 8)) { + this.entityData.set(DATA_ID_ECTYPE, ECBoat.ECBoatType.byName(nbt.getString("model")).ordinal()); + } + + } + + @Override + protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { + this.lastYd = this.getDeltaMovement().y; + if (!this.isPassenger()) { + if (onGround) { + if (this.fallDistance > 3.0F) { + if (this.status != Status.ON_LAND) { + this.resetFallDistance(); + return; + } + + this.causeFallDamage(this.fallDistance, 1.0F, DamageSource.FALL); + if (!this.level.isClientSide && !this.isRemoved()) { + this.kill(); + if (this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + int j; + for(j = 0; j < 3; ++j) { + this.spawnAtLocation(this.getECBoatType().getPlanks()); + } + + for(j = 0; j < 2; ++j) { + this.spawnAtLocation(Items.STICK); + } + } + } + } + + this.resetFallDistance(); + } else if (!this.level.getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && y < 0.0) { + this.fallDistance = (float)((double)this.fallDistance - y); + } + } + + } + + @Override @NotNull + public Item getDropItem() { + return switch (ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE))) { + case GINKGO -> ECItems.GINKGO_BOAT.get(); + default -> Items.OAK_BOAT; + }; + } + + public void setECBoatType(ECBoatType type) { + this.entityData.set(DATA_ID_ECTYPE, type.ordinal()); + } + + public ECBoatType getECBoatType() { + return ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE)); + } + + /** @deprecated */ + @Deprecated + @Override + public void setType(@NotNull Boat.Type vanillaType) { + } + + /** @deprecated */ + @Deprecated + @Override + @NotNull + public Boat.Type getBoatType() { + return Type.OAK; + } + + public enum ECBoatType { + GINKGO("ginkgo", ECBlocks.Plant.GINKGO_PLANKS.get()); + + private final String name; + private final Block planks; + + ECBoatType(String name, Block planks) { + this.name = name; + this.planks = planks; + } + + public String getName() { + return this.name; + } + + public Block getPlanks() { + return this.planks; + } + + public String toString() { + return this.name; + } + + public static ECBoatType byId(int id) { + ECBoatType[] type = values(); + return type[id >= 0 && id < type.length ? id : 0]; + } + + public static ECBoatType byName(String aName) { + ECBoatType[] types = values(); + return Arrays.stream(types).filter((t) -> t.getName().equals(aName)).findFirst().orElse(types[0]); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java new file mode 100644 index 00000000..d423fec4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java @@ -0,0 +1,191 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.*; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; + +import javax.annotation.Nullable; +import java.util.Set; + +public class NetherLambmanEntity extends AbstractVillager { + private static final int NUMBER_OF_TRADE_OFFERS = 2; + + private static final Set WANTED_ITEMS = ImmutableSet.of( + Items.COOKED_MUTTON, Items.MUTTON, + Items.WOODEN_HOE, Items.GOLDEN_HOE, Items.IRON_HOE, + Items.GRASS_BLOCK, Items.GRASS, Items.TALL_GRASS, + Items.FERN, Items.LARGE_FERN + ); + + public NetherLambmanEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, true)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D)); + this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); + this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { + return null; + } + + @Override + public boolean showProgressBar() { + return false; + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.NETHER_LAMBMAN_SPAWN_EGG.get()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //if (hand == InteractionHand.MAIN_HAND) { + // player.awardStat(Stats.TALKED_TO_VILLAGER); + //} + + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); + } + + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.setCanPickUpLoot(true); + } + + @Override + protected void updateTrades() { + VillagerTrades.ItemListing[] list1 = ECTrades.NETHER_LAMBMAN_TRADES.get(1); + VillagerTrades.ItemListing[] list2 = ECTrades.NETHER_LAMBMAN_TRADES.get(2); + VillagerTrades.ItemListing[] list3 = ECTrades.NETHER_LAMBMAN_TRADES.get(3); + if (list1 != null && list2 != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, list1, NUMBER_OF_TRADE_OFFERS); + int i = this.random.nextInt(list2.length); + VillagerTrades.ItemListing itemListing1 = list2[i]; + int j = this.random.nextInt(list3.length); + VillagerTrades.ItemListing itemListing2 = list3[j]; + MerchantOffer merchantoffer1 = itemListing1.getOffer(this, this.random); + if (merchantoffer1 != null) { + merchantoffers.add(merchantoffer1); + } + MerchantOffer merchantoffer2 = itemListing2.getOffer(this, this.random); + if (merchantoffer2 != null) { + merchantoffers.add(merchantoffer2); + } + } + } + + @Override + public boolean removeWhenFarAway(double p_35886_) { + return false; + } + + @Override + protected void rewardTradeXp(MerchantOffer offer) { + if (offer.shouldRewardExp()) { + int i = 3 + this.random.nextInt(4); + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + public void setLastHurtByMob(@Nullable LivingEntity entity) { + if (entity != null && this.level instanceof ServerLevel) { + if (this.isAlive() && entity instanceof Player) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemStack = this.getInventory().getItem(i); + if(itemStack.getCount() != 0) { + int cnt = Math.max(itemStack.getCount(), this.random.nextInt(3)); + this.level.addFreshEntity(new ItemEntity( + this.level, (this.getX() + entity.getX() * 2) / 3, this.getY() + 0.5D, (this.getZ() + entity.getZ() * 2) / 3, new ItemStack(itemStack.getItem(), cnt) + )); + itemStack.shrink(cnt); + } + } + } + } + + super.setLastHurtByMob(entity); + } + + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_LAMBMAN_TRADE : ECSounds.NETHER_LAMBMAN_AMBIENT; + } + + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.NETHER_LAMBMAN_HURT; + } + + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_LAMBMAN_DEATH; + } + + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.NETHER_LAMBMAN_YES : ECSounds.NETHER_LAMBMAN_NO; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 50.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java new file mode 100644 index 00000000..4cfb84a1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java @@ -0,0 +1,191 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.*; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; + +import javax.annotation.Nullable; +import java.util.Set; + +public class NetherPigmanEntity extends AbstractVillager { + private static final int NUMBER_OF_TRADE_OFFERS = 2; + + private static final Set WANTED_ITEMS = ImmutableSet.of( + Items.COOKED_PORKCHOP, Items.PORKCHOP, + Items.IRON_PICKAXE, Items.DIAMOND_PICKAXE, Items.NETHERITE_PICKAXE, + Items.POTATO, Items.BAKED_POTATO, Items.POISONOUS_POTATO, + Items.DIAMOND, ECItems.DIAMOND_NUGGET.get() + ); + + public NetherPigmanEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, false)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, 0.35D)); + this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); + this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + @Nullable + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { + return null; + } + + @Override + public boolean showProgressBar() { + return false; + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.NETHER_PIGMAN_SPAWN_EGG.get()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //if (hand == InteractionHand.MAIN_HAND) { + // player.awardStat(Stats.TALKED_TO_VILLAGER); + //} + + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); + } + + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + @Override + public void readAdditionalSaveData(CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + this.setCanPickUpLoot(true); + } + + @Override + protected void updateTrades() { + VillagerTrades.ItemListing[] list1 = ECTrades.NETHER_PIGMAN_TRADES.get(1); + VillagerTrades.ItemListing[] list2 = ECTrades.NETHER_PIGMAN_TRADES.get(2); + VillagerTrades.ItemListing[] list3 = ECTrades.NETHER_PIGMAN_TRADES.get(3); + if (list1 != null && list2 != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, list1, NUMBER_OF_TRADE_OFFERS); + int i = this.random.nextInt(list2.length); + VillagerTrades.ItemListing itemListing1 = list2[i]; + int j = this.random.nextInt(list3.length); + VillagerTrades.ItemListing itemListing2 = list3[j]; + MerchantOffer merchantoffer1 = itemListing1.getOffer(this, this.random); + if (merchantoffer1 != null) { + merchantoffers.add(merchantoffer1); + } + MerchantOffer merchantoffer2 = itemListing2.getOffer(this, this.random); + if (merchantoffer2 != null) { + merchantoffers.add(merchantoffer2); + } + } + } + + @Override + public boolean removeWhenFarAway(double p_35886_) { + return false; + } + + @Override + protected void rewardTradeXp(MerchantOffer offer) { + if (offer.shouldRewardExp()) { + int i = 3 + this.random.nextInt(4); + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + public void setLastHurtByMob(@Nullable LivingEntity entity) { + if (entity != null && this.level instanceof ServerLevel) { + if (this.isAlive() && entity instanceof Player) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemStack = this.getInventory().getItem(i); + if(itemStack.getCount() != 0) { + int cnt = Math.max(itemStack.getCount(), this.random.nextInt(3)); + this.level.addFreshEntity(new ItemEntity( + this.level, (this.getX() + entity.getX() * 2) / 3, this.getY() + 0.5D, (this.getZ() + entity.getZ() * 2) / 3, new ItemStack(itemStack.getItem(), cnt) + )); + itemStack.shrink(cnt); + } + } + } + } + + super.setLastHurtByMob(entity); + } + + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_PIGMAN_TRADE : ECSounds.NETHER_PIGMAN_AMBIENT; + } + + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.NETHER_PIGMAN_HURT; + } + + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_PIGMAN_DEATH; + } + + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.NETHER_PIGMAN_YES : ECSounds.NETHER_PIGMAN_NO; + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 50.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java new file mode 100644 index 00000000..34df7b97 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public record PiglinCuteyData(int level) { + public static final int MIN_LEVEL = 1; + public static final int MAX_LEVEL = 5; + private static final int[] NEXT_LEVEL_XP_THRESHOLDS = new int[]{0, 15, 75, 180, 300}; + public static final Codec CODEC = RecordCodecBuilder.create( + (in) -> in.group(Codec.INT.fieldOf("level").orElse(1).forGetter( + (data) -> data.level) + ).apply(in, PiglinCuteyData::new) + ); + + public PiglinCuteyData(int level) { + this.level = Math.max(MIN_LEVEL, level); + } + + + public PiglinCuteyData setLevel(int newLevel) { + return new PiglinCuteyData(newLevel); + } + + public static int getMinXpPerLevel(int level) { + return canLevelUp(level) ? NEXT_LEVEL_XP_THRESHOLDS[level - 1] : 0; + } + + public static int getMaxXpPerLevel(int level) { + return canLevelUp(level) ? NEXT_LEVEL_XP_THRESHOLDS[level] : 0; + } + + public static boolean canLevelUp(int level) { + return level >= MIN_LEVEL && level < MAX_LEVEL; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java new file mode 100644 index 00000000..d3911577 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java @@ -0,0 +1,7 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +public interface PiglinCuteyDataHolder { + PiglinCuteyData getPiglinCuteyData(); + + void setPiglinCuteyData(PiglinCuteyData data); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java new file mode 100644 index 00000000..9147d602 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java @@ -0,0 +1,513 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECTrades; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.Dynamic; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializer; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.SimpleContainer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.goal.*; +import net.minecraft.world.entity.ai.navigation.GroundPathNavigation; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.monster.Zoglin; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.hoglin.Hoglin; +import net.minecraft.world.entity.npc.*; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.raid.Raid; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Set; + +public class PiglinCuteyEntity extends AbstractVillager implements PiglinCuteyDataHolder { + public static final EntityDataSerializer PIGLIN_CUTEY_DATA = new EntityDataSerializer<>() { + @Override + public void write(FriendlyByteBuf buf, PiglinCuteyData data) { + buf.writeVarInt(data.level()); + } + + @Override + public PiglinCuteyData read(FriendlyByteBuf buf) { + return new PiglinCuteyData(buf.readVarInt()); + } + + @Override + public PiglinCuteyData copy(PiglinCuteyData data) { + return data; + } + }; + + private static final EntityDataAccessor DATA_PIGLIN_CUTEY_DATA = SynchedEntityData.defineId( + PiglinCuteyEntity.class, PIGLIN_CUTEY_DATA + ); + private static final EntityDataAccessor DATA_IMMUNE_TO_DESPAWN = SynchedEntityData.defineId(PiglinCuteyEntity.class, EntityDataSerializers.BOOLEAN); + public static final int MULTIPLIER_FOOD_THRESHOLD = 200; + public static final Map FOOD_POINTS = ImmutableMap.of(Items.COOKED_PORKCHOP, 4, Items.PORKCHOP, 1); + private static final int TRADES_PER_LEVEL = 3; + private static final Set WANTED_ITEMS = ImmutableSet.of(Items.COOKED_PORKCHOP, Items.PORKCHOP); + @VisibleForTesting + public static final double SPEED_MODIFIER = 0.8D; + private int updateMerchantTimer; + private boolean increaseProfessionLevelOnUpdate; + @Nullable + private Player lastTradedPlayer; + private int foodLevel; + private int cuteyXp; + + @Nullable + protected BlockPos portalTarget = null; + + public PiglinCuteyEntity(EntityType entityType, Level level) { + super(entityType, level); + ((GroundPathNavigation)this.getNavigation()).setCanOpenDoors(true); + this.setCanPickUpLoot(true); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new PiglinCuteyEntity.RushToPortalGoal(this, 1.0D, 50.0D, SPEED_MODIFIER)); + this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); + this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); + this.goalSelector.addGoal(1, new OpenDoorGoal(this, true)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 12.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(1, new PanicGoal(this, SPEED_MODIFIER)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, ZombifiedPiglin.class, 8.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(2, new AvoidEntityGoal<>(this, Hoglin.class, 8.0F, SPEED_MODIFIER, SPEED_MODIFIER)); + this.goalSelector.addGoal(3, new FloatGoal(this)); + this.goalSelector.addGoal(4, new MoveTowardsRestrictionGoal(this, SPEED_MODIFIER * 0.6D)); + this.goalSelector.addGoal(5, new RandomStrollGoal(this, SPEED_MODIFIER * 0.5D)); + this.goalSelector.addGoal(6, new InteractGoal(this, Player.class, 3.0F, 1.0F)); + this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + } + + @Override + protected void customServerAiStep() { + if (!this.isTrading() && this.updateMerchantTimer > 0) { + --this.updateMerchantTimer; + if (this.updateMerchantTimer <= 0) { + if (this.increaseProfessionLevelOnUpdate) { + this.increaseMerchantCareer(); + this.increaseProfessionLevelOnUpdate = false; + } + + this.addEffect(new MobEffectInstance(MobEffects.REGENERATION, 200, 0)); + } + } + + if (!this.isNoAi() && this.random.nextInt(100) == 0) { + Raid raid = ((ServerLevel)this.level).getRaidAt(this.blockPosition()); + if (raid != null && raid.isActive() && !raid.isOver()) { + this.level.broadcastEntityEvent(this, (byte)42); + } + } + + super.customServerAiStep(); + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob mob) { return null; } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(DATA_PIGLIN_CUTEY_DATA, new PiglinCuteyData(1)); + this.entityData.define(DATA_IMMUNE_TO_DESPAWN, false); + } + + @Override + public InteractionResult mobInteract(Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + if (!itemstack.is(ECItems.PIGLIN_CUTEY_SPAWN_EGG.asItem()) && this.isAlive() && !this.isTrading() && !this.isBaby()) { + //TODO: player.awardStat + if (this.getOffers().isEmpty()) { + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + if (!this.level.isClientSide) { + this.startTrading(player); + } + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + return super.mobInteract(player, hand); + } + + private boolean shouldIncreaseLevel() { + int i = this.getPiglinCuteyData().level(); + return PiglinCuteyData.canLevelUp(i) && this.cuteyXp >= PiglinCuteyData.getMaxXpPerLevel(i); + } + + private void increaseMerchantCareer() { + this.setPiglinCuteyData(this.getPiglinCuteyData().setLevel(this.getPiglinCuteyData().level() + 1)); + this.updateTrades(); + } + + @Override + public int getVillagerXp() { + return this.cuteyXp; + } + + @Override + protected void rewardTradeXp(MerchantOffer merchantOffer) { + int i = 3 + this.random.nextInt(4); + this.cuteyXp += merchantOffer.getXp(); + this.lastTradedPlayer = this.getTradingPlayer(); + if (this.shouldIncreaseLevel()) { + this.updateMerchantTimer = 40; + this.increaseProfessionLevelOnUpdate = true; + i += 5; + } + + if (merchantOffer.shouldRewardExp()) { + this.level.addFreshEntity(new ExperienceOrb(this.level, this.getX(), this.getY() + 0.5D, this.getZ(), i)); + } + } + + @Override + protected void updateTrades() { + PiglinCuteyData cuteyData = this.getPiglinCuteyData(); + Int2ObjectMap allTrades = ECTrades.PIGLIN_CUTEY_TRADES; + if (!allTrades.isEmpty()) { + VillagerTrades.ItemListing[] trades = allTrades.get(cuteyData.level()); + if (trades != null) { + MerchantOffers merchantoffers = this.getOffers(); + this.addOffersFromItemListings(merchantoffers, trades, TRADES_PER_LEVEL); + } + } + } + + @Override + public PiglinCuteyData getPiglinCuteyData() { + return this.entityData.get(DATA_PIGLIN_CUTEY_DATA); + } + + @Override + public void setPiglinCuteyData(PiglinCuteyData data) { + this.entityData.set(DATA_PIGLIN_CUTEY_DATA, data); + } + + @Override + public boolean wantsToPickUp(ItemStack itemStack) { + Item item = itemStack.getItem(); + return WANTED_ITEMS.contains(item) && this.getInventory().canAddItem(itemStack); + } + + private boolean hungry() { return this.foodLevel < MULTIPLIER_FOOD_THRESHOLD; } + + private int countFoodPointsInInventory() { + SimpleContainer simplecontainer = this.getInventory(); + return FOOD_POINTS.entrySet().stream().mapToInt((food) -> simplecontainer.countItem(food.getKey()) * food.getValue()).sum(); + } + + @Override + public void aiStep() { + super.aiStep(); + if (!this.level.isClientSide) { + this.maybeDespawn(); + } + } + + private boolean isImmuneToDespawn() { + return this.getEntityData().get(DATA_IMMUNE_TO_DESPAWN); + } + + private void maybeDespawn() { + if (!this.level.dimensionType().piglinSafe() && !isImmuneToDespawn() && !this.isNoAi()) { + this.discard(); + } + } + + private void startTrading(Player player) { + this.eatUntilFull(); + this.updateSpecialPrices(player); + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), this.getPiglinCuteyData().level()); + } + + @Override + public void setTradingPlayer(@Nullable Player player) { + boolean flag = this.getTradingPlayer() != null && player == null; + super.setTradingPlayer(player); + if (flag) { + this.stopTrading(); + } + } + + @Override + protected void stopTrading() { + super.stopTrading(); + this.resetSpecialPrices(); + } + + private void resetSpecialPrices() { + for(MerchantOffer merchantoffer : this.getOffers()) { + merchantoffer.resetSpecialPriceDiff(); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.PIGLIN_CUTEY_TRADE : ECSounds.PIGLIN_CUTEY_AMBIENT; + } + + @Override + public void playCelebrateSound() { + this.playSound(ECSounds.PIGLIN_CUTEY_CELEBRATE, this.getSoundVolume(), this.getVoicePitch()); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damageSource) { + return ECSounds.PIGLIN_CUTEY_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.PIGLIN_CUTEY_DEATH; + } + + @Override + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.PIGLIN_CUTEY_YES : ECSounds.PIGLIN_CUTEY_NO; + } + + @Override + public SoundEvent getNotifyTradeSound() { + return ECSounds.PIGLIN_CUTEY_YES; + } + + private void eatUntilFull() { + if (this.hungry() && this.countFoodPointsInInventory() != 0) { + for(int i = 0; i < this.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = this.getInventory().getItem(i); + if (!itemstack.isEmpty()) { + Integer integer = FOOD_POINTS.get(itemstack.getItem()); + if (integer != null) { + int j = itemstack.getCount(); + + for(int k = j; k > 0; --k) { + this.foodLevel = this.foodLevel + integer; + this.getInventory().removeItem(i, 1); + if (!this.hungry()) { + return; + } + } + } + } + } + } + } + + private void updateSpecialPrices(Player pPlayer) { + int i = this.getPlayerReputation(pPlayer); + if (i != 0) { + for(MerchantOffer merchantoffer : this.getOffers()) { + merchantoffer.addToSpecialPriceDiff(-Mth.floor((float)i * merchantoffer.getPriceMultiplier())); + } + } + + if (pPlayer.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)) { + MobEffectInstance mobeffectinstance = pPlayer.getEffect(MobEffects.HERO_OF_THE_VILLAGE); + int k = mobeffectinstance.getAmplifier(); + + for(MerchantOffer merchantoffer : this.getOffers()) { + double d0 = 0.1D + 0.05D * (double)k; + int j = (int)Math.floor(d0 * (double)merchantoffer.getBaseCostA().getCount()); + merchantoffer.addToSpecialPriceDiff(-Math.max(j, 1)); + } + } + } + + public int getPlayerReputation(Player player) { + return (int)Math.floor(foodLevel / (MULTIPLIER_FOOD_THRESHOLD * 0.025D)); + } + + private static final int SearchRange = 30; + private static final int VerticalSearchRange = 10; + protected void findNearestPortal() { + BlockPos blockpos = this.blockPosition(); + BlockPos.MutableBlockPos mutableblockpos = new BlockPos.MutableBlockPos(); + + for(int k = 0; k <= VerticalSearchRange; k = k > 0 ? -k : 1 - k) { + for(int l = 0; l < SearchRange; ++l) { + for(int i1 = 0; i1 <= l; i1 = i1 > 0 ? -i1 : 1 - i1) { + for(int j1 = 0; j1 <= l; j1 = j1 > 0 ? -j1 : 1 - j1) { + mutableblockpos.setWithOffset(blockpos, i1, k, j1); + if (this.isWithinRestriction(mutableblockpos) && level.getBlockState(mutableblockpos).is(Blocks.NETHER_PORTAL)) { + this.portalTarget = mutableblockpos; + return; + } + } + } + } + } + + this.portalTarget = null; + } + + private BlockPos getPortalTarget() { + return portalTarget; + } + + @Override + public void addAdditionalSaveData(@NotNull CompoundTag pCompound) { + super.addAdditionalSaveData(pCompound); + PiglinCuteyData.CODEC.encodeStart(NbtOps.INSTANCE, this.getPiglinCuteyData()).resultOrPartial(ECLogger::error).ifPresent( + (p_35454_) -> pCompound.put("PiglinCuteyData", p_35454_) + ); + pCompound.putInt("FoodLevel", this.foodLevel); + pCompound.putInt("Xp", this.cuteyXp); + } + + @Override + public void readAdditionalSaveData(@NotNull CompoundTag pCompound) { + super.readAdditionalSaveData(pCompound); + if (pCompound.contains("PiglinCuteyData", 10)) { + DataResult dataResult = PiglinCuteyData.CODEC.parse(new Dynamic<>(NbtOps.INSTANCE, pCompound.get("PiglinCuteyData"))); + dataResult.resultOrPartial(ECLogger::error).ifPresent(this::setPiglinCuteyData); + } + + if (pCompound.contains("FoodLevel", 1)) { + this.foodLevel = pCompound.getInt("FoodLevel"); + } + + if (pCompound.contains("Xp", 3)) { + this.cuteyXp = pCompound.getInt("Xp"); + } + + this.setCanPickUpLoot(true); + } + + @Override + public boolean removeWhenFarAway(double pDistanceToClosestPlayer) { return false; } + + class RushToPortalGoal extends Goal { + final PiglinCuteyEntity cutey; + final double stopDistance; + final double giveupDistance; + final double speedModifier; + private static final int INTERVAL_TICKS = 20; + protected int nextStartTick; + + RushToPortalGoal(PiglinCuteyEntity cutey, double stopDistance, double giveupDistance, double speedModifier) { + this.cutey = cutey; + this.stopDistance = stopDistance; + this.giveupDistance = giveupDistance; + this.speedModifier = speedModifier; + } + + @Override + public void start() { + this.cutey.playCelebrateSound(); + } + + @Override + public void stop() { + this.cutey.navigation.stop(); + + if(this.cutey.lastTradedPlayer != null && !isTooFarAway(this.cutey.lastTradedPlayer, this.giveupDistance)) { + this.cutey.level.addFreshEntity(new ItemEntity( + this.cutey.level, + this.cutey.lastTradedPlayer.getX(), + this.cutey.lastTradedPlayer.getY() + 0.5D, + this.cutey.lastTradedPlayer.getZ(), + new ItemStack(Items.GOLD_BLOCK, 16) + )); + } + + this.cutey.discard(); + } + + @Override + public boolean canUse() { + if (this.nextStartTick > 0) { + --this.nextStartTick; + return false; + } + + this.nextStartTick = this.nextStartTick(this.cutey); + this.cutey.findNearestPortal(); + BlockPos blockpos = this.cutey.getPortalTarget(); + return blockpos != null && this.isTooFarAway(blockpos, this.stopDistance); + } + + protected int nextStartTick(PathfinderMob mob) { return INTERVAL_TICKS + mob.getRandom().nextInt(INTERVAL_TICKS); } + + @Override + public boolean canContinueToUse() { + return true; + } + + @Override + public void tick() { + BlockPos blockpos = this.cutey.getPortalTarget(); + if (blockpos != null && PiglinCuteyEntity.this.navigation.isDone()) { + if (this.isTooFarAway(blockpos, 10.0D)) { + Vec3 vec3 = (new Vec3( + (double)blockpos.getX() - this.cutey.getX(), + (double)blockpos.getY() - this.cutey.getY(), + (double)blockpos.getZ() - this.cutey.getZ() + )).normalize(); + Vec3 vec31 = vec3.scale(10.0D).add(this.cutey.getX(), this.cutey.getY(), this.cutey.getZ()); + PiglinCuteyEntity.this.navigation.moveTo(vec31.x, vec31.y, vec31.z, this.speedModifier); + } else if(this.isTooFarAway(blockpos, this.stopDistance)) { + PiglinCuteyEntity.this.navigation.moveTo(blockpos.getX(), blockpos.getY(), blockpos.getZ(), this.speedModifier); + } else { + this.stop(); + } + } + } + + private boolean isTooFarAway(BlockPos blockpos, double dist) { + Vec3 targetPos = new Vec3(blockpos.getX(), this.cutey.position().y, blockpos.getZ()); + return !targetPos.closerThan(this.cutey.position(), dist); + } + + private boolean isTooFarAway(Entity entity, double dist) { + return !entity.closerThan(this.cutey, dist); + } + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes() + .add(Attributes.MAX_HEALTH, 25.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } + + static { + EntityDataSerializers.registerSerializer(PIGLIN_CUTEY_DATA); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java new file mode 100644 index 00000000..ce0f62f1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java @@ -0,0 +1,80 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.common.dispenser.ECBoatDispenseItemBehaviour; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import net.minecraft.core.BlockPos; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.function.Predicate; + +public class ECBoatItem extends Item { + private static final Predicate ENTITY_PREDICATE = EntitySelector.NO_SPECTATORS.and(Entity::isPickable);; + private final ECBoat.ECBoatType type; + + public ECBoatItem(ECBoat.ECBoatType type, Item.Properties properties) { + super(properties); + this.type = type; + DispenserBlock.registerBehavior(this, new ECBoatDispenseItemBehaviour(type)); + } + + @Override + @NotNull + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + HitResult hitresult = getPlayerPOVHitResult(level, player, ClipContext.Fluid.ANY); + if (hitresult.getType() == HitResult.Type.MISS) { + return InteractionResultHolder.pass(itemstack); + } else { + Vec3 vec3 = player.getViewVector(1.0F); + List list = level.getEntities(player, player.getBoundingBox().expandTowards(vec3.scale(5.0D)).inflate(1.0D), ENTITY_PREDICATE); + if (!list.isEmpty()) { + Vec3 vec31 = player.getEyePosition(); + + for(Entity entity : list) { + AABB aabb = entity.getBoundingBox().inflate(entity.getPickRadius()); + if (aabb.contains(vec31)) { + return InteractionResultHolder.pass(itemstack); + } + } + } + + if (hitresult.getType() == HitResult.Type.BLOCK) { + ECBoat boat = new ECBoat(level, hitresult.getLocation().x, hitresult.getLocation().y, hitresult.getLocation().z); + boat.setECBoatType(this.type); + boat.setYRot(player.getYRot()); + if (!level.noCollision(boat, boat.getBoundingBox())) { + return InteractionResultHolder.fail(itemstack); + } else { + if (!level.isClientSide) { + level.addFreshEntity(boat); + level.gameEvent(player, GameEvent.ENTITY_PLACE, new BlockPos(hitresult.getLocation())); + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + } + + player.awardStat(Stats.ITEM_USED.get(this)); + return InteractionResultHolder.sidedSuccess(itemstack, level.isClientSide()); + } + } else { + return InteractionResultHolder.pass(itemstack); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java new file mode 100644 index 00000000..31690450 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java @@ -0,0 +1,73 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.LazyLoadedValue; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class EmeraldArmorItem extends ArmorItem { + private static final int[] HEALTH_PER_SLOT = new int[]{13, 15, 16, 11}; + + private static final String name = "emerald"; + private static final int durabilityMultiplier = 12; + private static final int[] slotProtections = new int[]{2, 5, 7, 3}; + private static final int enchantmentValue = 25; + private static final SoundEvent sound = SoundEvents.ARMOR_EQUIP_GOLD; + private static final float toughness = 0.0F; + private static final float knockbackResistance = 0.0F; + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.EMERALD)); + + public static ArmorMaterial mat = new EmeraldArmorMaterial(); + + public EmeraldArmorItem(EquipmentSlot type) { + super(mat, type, new Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return MODID+":textures/models/armor_emerald"+(slot==EquipmentSlot.LEGS?"_legs": "")+".png"; + } + + private static class EmeraldArmorMaterial implements ArmorMaterial { + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + public int getEnchantmentValue() { + return enchantmentValue; + } + + public SoundEvent getEquipSound() { + return sound; + } + + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + public String getName() { + return name; + } + + public float getToughness() { + return toughness; + } + + public float getKnockbackResistance() { + return knockbackResistance; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java new file mode 100644 index 00000000..9b3d8b12 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java @@ -0,0 +1,73 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.LazyLoadedValue; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class LapisArmorItem extends ArmorItem { + private static final int[] HEALTH_PER_SLOT = new int[]{13, 15, 16, 11}; + + private static final String name = "lapis"; + private static final int durabilityMultiplier = 6; + private static final int[] slotProtections = new int[]{1, 3, 4, 1}; + private static final int enchantmentValue = 40; + private static final SoundEvent sound = SoundEvents.ARMOR_EQUIP_GOLD; + private static final float toughness = 0.0F; + private static final float knockbackResistance = 0.0F; + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.LAPIS_LAZULI)); + + public static ArmorMaterial mat = new LapisArmorMaterial(); + + public LapisArmorItem(EquipmentSlot type) { + super(mat, type, new Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)); + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, String type) { + return MODID+":textures/models/armor_lapis"+(slot==EquipmentSlot.LEGS?"_legs": "")+".png"; + } + + private static class LapisArmorMaterial implements ArmorMaterial { + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + public int getEnchantmentValue() { + return enchantmentValue; + } + + public SoundEvent getEquipSound() { + return sound; + } + + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + public String getName() { + return name; + } + + public float getToughness() { + return toughness; + } + + public float getKnockbackResistance() { + return knockbackResistance; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java new file mode 100644 index 00000000..46beabb2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java @@ -0,0 +1,44 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomeKeys { +//Overworld + //Ocean + public static final ResourceKey DEAD_CRIMSON_OCEAN = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "dead_crimson_ocean")); + public static final ResourceKey DEAD_WARPED_OCEAN = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "dead_warped_ocean")); + + public static final ResourceKey DEEP_DEAD_CRIMSON_OCEAN = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "deep_dead_crimson_ocean")); + public static final ResourceKey DEEP_DEAD_WARPED_OCEAN = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "deep_dead_warped_ocean")); + + //Island + public static final ResourceKey XANADU = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "xanadu")); + + //Forest + public static final ResourceKey GINKGO_FOREST = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "ginkgo_forest")); + + //Hills + public static final ResourceKey KARST_HILLS = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "karst_hills")); + + //Plain + public static final ResourceKey PETUNIA_PLAINS = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "petunia_plains")); + + //Beach + public static final ResourceKey GOLDEN_BEACH = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "golden_beach")); + + //Desert + public static final ResourceKey AZURE_DESERT = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "azure_desert")); + public static final ResourceKey JADEITE_DESERT = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "jadeite_desert")); + + //Underground + public static final ResourceKey VOLCANIC_CAVES = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "volcanic_caves")); + +//Nether + public static final ResourceKey EMERY_DESERT = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "emery_desert")); + public static final ResourceKey QUARTZ_DESERT = ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, "quartz_desert")); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java new file mode 100644 index 00000000..dc7d5ad9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.biome.Biome; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomeTags { + public static final TagKey HAS_SHELTER = create("has_structure/shelter"); + public static final TagKey HAS_NETHER_WARFIELD = create("has_structure/nether_warfield"); + + + private static TagKey create(String name) { + return TagKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(MODID, name)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java new file mode 100644 index 00000000..1d62d4de --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java @@ -0,0 +1,516 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.data.worldgen.*; +import net.minecraft.data.worldgen.placement.*; +import net.minecraft.resources.ResourceKey; +import net.minecraft.sounds.Music; +import net.minecraft.sounds.Musics; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.level.biome.*; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.event.RegistryEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomes { + public static final Biome DEAD_CRIMSON_OCEAN = DeadCrimsonOcean(false); + public static final Biome DEAD_WARPED_OCEAN = DeadWarpedOcean(false); + public static final Biome DEEP_DEAD_CRIMSON_OCEAN = DeadCrimsonOcean(true); + public static final Biome DEEP_DEAD_WARPED_OCEAN = DeadWarpedOcean(true); + public static final Biome XANADU = Xanadu(); + public static final Biome GINKGO_FOREST = GinkgoForest(); + public static final Biome KARST_HILLS = KarstHills(); + public static final Biome PETUNIA_PLAINS = PetuniaPlains(); + public static final Biome GOLDEN_BEACH = GoldenBeach(); + public static final Biome AZURE_DESERT = AzureDesertBiome(); + public static final Biome JADEITE_DESERT = JadeiteDesertBiome(); + public static final Biome VOLCANIC_CAVES = VolcanicCaves(); + public static final Biome EMERY_DESERT = EmeryDesertBiome(); + public static final Biome QUARTZ_DESERT = QuartzDesertBiome(); + + public static void init(RegistryEvent.Register event) { + DEAD_CRIMSON_OCEAN.setRegistryName(MODID, "dead_crimson_ocean"); + DEAD_WARPED_OCEAN.setRegistryName(MODID, "dead_warped_ocean"); + DEEP_DEAD_CRIMSON_OCEAN.setRegistryName(MODID, "deep_dead_crimson_ocean"); + DEEP_DEAD_WARPED_OCEAN.setRegistryName(MODID, "deep_dead_warped_ocean"); + XANADU.setRegistryName(MODID, "xanadu"); + GINKGO_FOREST.setRegistryName(MODID, "ginkgo_forest"); + KARST_HILLS.setRegistryName(MODID, "karst_hills"); + PETUNIA_PLAINS.setRegistryName(MODID, "petunia_plains"); + GOLDEN_BEACH.setRegistryName(MODID, "golden_beach"); + AZURE_DESERT.setRegistryName(MODID, "azure_desert"); + JADEITE_DESERT.setRegistryName(MODID, "jadeite_desert"); + VOLCANIC_CAVES.setRegistryName(MODID, "volcanic_caves"); + EMERY_DESERT.setRegistryName(MODID, "emery_desert"); + QUARTZ_DESERT.setRegistryName(MODID, "quartz_desert"); + + event.getRegistry().register(DEAD_CRIMSON_OCEAN); + event.getRegistry().register(DEAD_WARPED_OCEAN); + event.getRegistry().register(DEEP_DEAD_CRIMSON_OCEAN); + event.getRegistry().register(DEEP_DEAD_WARPED_OCEAN); + event.getRegistry().register(XANADU); + event.getRegistry().register(GINKGO_FOREST); + event.getRegistry().register(KARST_HILLS); + event.getRegistry().register(PETUNIA_PLAINS); + event.getRegistry().register(GOLDEN_BEACH); + event.getRegistry().register(AZURE_DESERT); + event.getRegistry().register(JADEITE_DESERT); + event.getRegistry().register(VOLCANIC_CAVES); + event.getRegistry().register(EMERY_DESERT); + event.getRegistry().register(QUARTZ_DESERT); + + registerBiomesToDictionary(); + } + + private static void globalOverworldGeneration(BiomeGenerationSettings.Builder builder) { + BiomeDefaultFeatures.addDefaultCarversAndLakes(builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(builder); + BiomeDefaultFeatures.addDefaultMonsterRoom(builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(builder); + BiomeDefaultFeatures.addDefaultSprings(builder); + BiomeDefaultFeatures.addSurfaceFreezing(builder); + } + + private static Biome baseOcean(MobSpawnSettings.Builder mobSpawnSetting, int waterColor, int waterFogColor, int fogColor, BiomeGenerationSettings.Builder biomeGenerationSetting) { + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.OCEAN) + .temperature(0.5F).downfall(0.5F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(waterColor).waterFogColor(waterFogColor) + .fogColor(fogColor).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobSpawnSetting.build()) + .generationSettings(biomeGenerationSetting.build()).build(); + } + + private static BiomeGenerationSettings.Builder baseOceanGeneration() { + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + BiomeDefaultFeatures.addWaterTrees(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultFlowers(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomegenerationsettings$builder); + return biomegenerationsettings$builder; + } + + public static Biome DeadCrimsonOcean(boolean isDeep) { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + if (isDeep) { + BiomeDefaultFeatures.oceanSpawns(mobspawnsettings$builder, 8, 4, 8); + } else { + BiomeDefaultFeatures.oceanSpawns(mobspawnsettings$builder, 10, 2, 15); + } + + mobspawnsettings$builder.addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(EntityType.PUFFERFISH, 5, 1, 3)).addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(EntityType.TROPICAL_FISH, 25, 8, 8)).addSpawn(MobCategory.WATER_CREATURE, new MobSpawnSettings.SpawnerData(EntityType.DOLPHIN, 2, 1, 2)); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = baseOceanGeneration(); + biomegenerationsettings$builder.addFeature( + GenerationStep.Decoration.VEGETAL_DECORATION, + isDeep ? AquaticPlacements.SEAGRASS_DEEP_WARM : AquaticPlacements.SEAGRASS_WARM + ); + if (isDeep) { + BiomeDefaultFeatures.addDefaultSeagrass(biomegenerationsettings$builder); + } + + BiomeDefaultFeatures.addLukeWarmKelp(biomegenerationsettings$builder); + return baseOcean(mobspawnsettings$builder, 0x804cd6, 0x370537, 0xd86064, biomegenerationsettings$builder); + } + + public static Biome DeadWarpedOcean(boolean isDeep) { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.oceanSpawns(mobspawnsettings$builder, 3, 4, 15); + mobspawnsettings$builder.addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(EntityType.SALMON, 15, 1, 5)); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = baseOceanGeneration(); + biomegenerationsettings$builder.addFeature( + GenerationStep.Decoration.VEGETAL_DECORATION, + isDeep ? AquaticPlacements.SEAGRASS_DEEP_COLD : AquaticPlacements.SEAGRASS_COLD + ); + BiomeDefaultFeatures.addDefaultSeagrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addColdOceanExtraVegetation(biomegenerationsettings$builder); + return baseOcean(mobspawnsettings$builder, 0x1a9ed6, 0x052d41, 0x60d2d8, biomegenerationsettings$builder); + } + + private static Biome Xanadu() { + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + MobSpawnSettings.Builder mobspawnsettings$builder = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.DONKEY, 4, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.HORSE, 4, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.CHICKEN, 7, 2, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.WOLF, 2, 1, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SHEEP, 4, 2, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.MOOSHROOM, 1, 1, 2)); + BiomeDefaultFeatures.caveSpawns(mobspawnsettings$builder); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addPlainGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + addXanaduVegetation(biomegenerationsettings$builder); + BiomeDefaultFeatures.addInfestedStone(biomegenerationsettings$builder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_MEADOW); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.MOUNTAIN) + .temperature(1.0F).downfall(0.9F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(1.0F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome GinkgoForest() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.farmAnimals(mobspawnsettings$builder); + mobspawnsettings$builder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.WOLF, 8, 4, 4)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.RABBIT, 4, 2, 3)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.FOX, 8, 2, 4)); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addFerns(biomegenerationsettings$builder); + addGinkgoTrees(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultFlowers(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomegenerationsettings$builder); + BiomeDefaultFeatures.addCommonBerryBushes(biomegenerationsettings$builder); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.FOREST) + .temperature(0.5F).downfall(0.9F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533).grassColorOverride(0xfadc50).foliageColorOverride(0xfadc50) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome KarstHills() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.oceanSpawns(mobspawnsettings$builder, 8, 4, 8); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + BiomeDefaultFeatures.addExtraEmeralds(biomegenerationsettings$builder); + BiomeDefaultFeatures.addInfestedStone(biomegenerationsettings$builder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_STONY_PEAKS); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.FOREST) + .temperature(1.0F).downfall(0.3F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4445678).waterFogColor(270131) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(1.0F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome PetuniaPlains() { + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + MobSpawnSettings.Builder mobspawnsettings$builder = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.DONKEY, 1, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.RABBIT, 2, 2, 6)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SHEEP, 2, 2, 4)); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addPlainGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + addPetuniaPlainsVegetation(biomegenerationsettings$builder); + BiomeDefaultFeatures.addExtraEmeralds(biomegenerationsettings$builder); + BiomeDefaultFeatures.addInfestedStone(biomegenerationsettings$builder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_MEADOW); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.MOUNTAIN) + .temperature(0.5F).downfall(0.8F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + public static Biome GoldenBeach() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultFlowers(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomegenerationsettings$builder); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.BEACH) + .temperature(0.8F).downfall(0.4F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.8F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome AzureDesertBiome() { + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + + BiomeDefaultFeatures.addDefaultCarversAndLakes(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMonsterRoom(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomegenerationsettings$builder); + BiomeDefaultFeatures.addSurfaceFreezing(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + addExtraLapis(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addBadlandGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.MESA) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(2.0F)) + .foliageColorOverride(10387789).grassColorOverride(9470285) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome JadeiteDesertBiome() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + + BiomeDefaultFeatures.addDefaultCarversAndLakes(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomegenerationsettings$builder); + addZombieVillagerRoom(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSprings(biomegenerationsettings$builder); + BiomeDefaultFeatures.addSurfaceFreezing(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addBadlandGrass(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + + BiomeDefaultFeatures.addExtraEmeralds(biomegenerationsettings$builder); + addExtraEmerald(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.MESA) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(2.0F)) + .foliageColorOverride(10387789).grassColorOverride(9470285) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + public static Biome VolcanicCaves() { + MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder(); + mobspawnsettings$builder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.MAGMA_CUBE, 10, 3, 8)); + BiomeDefaultFeatures.commonSpawns(mobspawnsettings$builder); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultOres(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomegenerationsettings$builder); + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + addVolcanicCavesFeatures(biomegenerationsettings$builder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_DRIPSTONE_CAVES); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .biomeCategory(Biome.BiomeCategory.UNDERGROUND) + .temperature(0.5F).downfall(0.5F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.LAVA, 0.00625F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobspawnsettings$builder.build()) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome EmeryDesertBiome() { + MobSpawnSettings mobspawnsettings = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.WITHER_SKELETON, 1, 5, 5)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.BLAZE, 50, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ZOMBIFIED_PIGLIN, 20, 5, 5)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.STRIDER, 60, 1, 2)) + .addMobCharge(EntityType.WITHER_SKELETON, 0.7D, 0.15D) + .addMobCharge(EntityType.BLAZE, 0.7D, 0.15D) + .addMobCharge(EntityType.ZOMBIFIED_PIGLIN, 0.7D, 0.15D) + .addMobCharge(EntityType.STRIDER, 0.7D, 0.15D) + .build(); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, MiscOverworldPlacements.SPRING_LAVA) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, NetherPlacements.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_OPEN) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_FIRE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_CLOSED) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_SOUL_SAND); + + BiomeDefaultFeatures.addNetherDefaultOres(biomegenerationsettings$builder); + addExtraAncientDebris(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.NETHER) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(1787717).skyColor(calculateSkyColor(2.0F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.ASH, 0.00625F)) + .ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP) + .ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)) + .ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS, 0.0111D)) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SOUL_SAND_VALLEY)).build()) + .mobSpawnSettings(mobspawnsettings) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + private static Biome QuartzDesertBiome() { + MobSpawnSettings mobspawnsettings = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.SKELETON, 20, 5, 5)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.GHAST, 50, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ENDERMAN, 1, 4, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.STRIDER, 60, 1, 2)) + .addMobCharge(EntityType.SKELETON, 0.7D, 0.15D) + .addMobCharge(EntityType.GHAST, 0.7D, 0.15D) + .addMobCharge(EntityType.ENDERMAN, 0.7D, 0.15D) + .addMobCharge(EntityType.STRIDER, 0.7D, 0.15D) + .build(); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, NetherPlacements.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_SOUL_SAND); + BiomeDefaultFeatures.addNetherDefaultOres(biomegenerationsettings$builder); + addExtraQuartz(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .biomeCategory(Biome.BiomeCategory.NETHER) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(12169636).skyColor(calculateSkyColor(2.0F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.ASH, 0.00625F)) + .ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP) + .ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)) + .ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_ADDITIONS, 0.0111D)) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_SOUL_SAND_VALLEY)).build()) + .mobSpawnSettings(mobspawnsettings) + .generationSettings(biomegenerationsettings$builder.build()).build(); + } + + + private static int calculateSkyColor(float temp) { + float f = temp / 3.0F; + f = Mth.clamp(f, -1.0F, 1.0F); + return Mth.hsvToRgb(0.62222224F - f * 0.05F, 0.5F + f * 0.1F, 1.0F); + } + + public static void addXanaduVegetation(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.XANADU_TREES); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.FLOWER_PETUNIA_PLAINS); + } + + public static void addPetuniaPlainsVegetation(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_GRASS_PLAIN); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.FLOWER_PETUNIA_PLAINS); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.TREES_MEADOW); + } + + private static void addExtraLapis(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECPlacedFeatures.ORE_LAPIS_EXTRA); + } + + private static void addExtraEmerald(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECPlacedFeatures.ORE_EMERALD_EXTRA); + } + + private static void addExtraAncientDebris(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, ECPlacedFeatures.ORE_DEBRIS_EXTRA); + } + + private static void addExtraQuartz(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, ECPlacedFeatures.ORE_QUARTZ_EXTRA); + } + + private static void addZombieVillagerRoom(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_STRUCTURES, ECPlacedFeatures.ZOMBIE_VILLAGER_ROOM); + } + + private static void addVolcanicCavesFeatures(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.VOLCANIC_CAVES_LAVA_POOL); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_OPEN); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_CLOSED); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_BLACKSTONE); + } + + private static void addGinkgoTrees(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.TREES_GINKGO); + } + + public static void registerBiomesToDictionary() { + addBiome(ECBiomeKeys.DEAD_CRIMSON_OCEAN, + BiomeDictionary.Type.OCEAN, BiomeDictionary.Type.HOT, BiomeDictionary.Type.OVERWORLD); + addBiome(ECBiomeKeys.DEAD_WARPED_OCEAN, + BiomeDictionary.Type.OCEAN, BiomeDictionary.Type.COLD, BiomeDictionary.Type.OVERWORLD); + addBiome(ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN, + BiomeDictionary.Type.OCEAN, BiomeDictionary.Type.HOT, BiomeDictionary.Type.OVERWORLD); + addBiome(ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN, + BiomeDictionary.Type.OCEAN, BiomeDictionary.Type.COLD, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.XANADU, + BiomeDictionary.Type.MUSHROOM, BiomeDictionary.Type.RARE, BiomeDictionary.Type.WET, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.GINKGO_FOREST, + BiomeDictionary.Type.FOREST, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.KARST_HILLS, + BiomeDictionary.Type.SPARSE, BiomeDictionary.Type.PEAK, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.PETUNIA_PLAINS, + BiomeDictionary.Type.PLAINS, BiomeDictionary.Type.RARE, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.GOLDEN_BEACH, + BiomeDictionary.Type.BEACH, BiomeDictionary.Type.HOT, BiomeDictionary.Type.WET, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.VOLCANIC_CAVES, + BiomeDictionary.Type.UNDERGROUND, BiomeDictionary.Type.HOT, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.AZURE_DESERT, + BiomeDictionary.Type.MESA, BiomeDictionary.Type.SANDY, BiomeDictionary.Type.DRY, BiomeDictionary.Type.OVERWORLD); + addBiome(ECBiomeKeys.JADEITE_DESERT, + BiomeDictionary.Type.MESA, BiomeDictionary.Type.SANDY, BiomeDictionary.Type.DRY, BiomeDictionary.Type.OVERWORLD); + + addBiome(ECBiomeKeys.EMERY_DESERT, + BiomeDictionary.Type.HOT, BiomeDictionary.Type.DRY, BiomeDictionary.Type.RARE, BiomeDictionary.Type.NETHER); + addBiome(ECBiomeKeys.QUARTZ_DESERT, + BiomeDictionary.Type.HOT, BiomeDictionary.Type.DRY, BiomeDictionary.Type.NETHER); + } + + private static void addBiome(ResourceKey biomeKey, BiomeDictionary.Type... types) { + BiomeDictionary.addTypes(biomeKey, types); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java new file mode 100644 index 00000000..2fd9f2d4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlockEntity.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.blocks.entity.*; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public final class ECBlockEntity { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, MODID); + + public static final RegistryObject> GLASS_KILN = REGISTER.register( + "glass_kiln", () -> new BlockEntityType<>( + GlassKilnBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.GLASS_KILN.get()), null + ) + ); + public static final RegistryObject> MINERAL_TABLE = REGISTER.register( + "mineral_table", () -> new BlockEntityType<>( + MineralTableBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.MINERAL_TABLE.get()), null + ) + ); + public static final RegistryObject> CONTINUOUS_MINER = REGISTER.register( + "continuous_miner", () -> new BlockEntityType<>( + ContinuousMinerBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.CONTINUOUS_MINER.get()), null + ) + ); + public static final RegistryObject> ICE_MAKER = REGISTER.register( + "ice_maker", () -> new BlockEntityType<>( + IceMakerBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.ICE_MAKER.get()), null + ) + ); + public static final RegistryObject> MELTER = REGISTER.register( + "melter", () -> new BlockEntityType<>( + MelterBlockEntity::new, ImmutableSet.of(ECBlocks.WorkStation.MELTER.get()), null + ) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java new file mode 100644 index 00000000..6669cc56 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java @@ -0,0 +1,679 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.blocks.plant.WarpedWartBlock; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.*; +import com.hexagram2021.emeraldcraft.common.world.grower.GinkgoTreeGrower; +import net.minecraft.Util; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Tuple; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.SignItem; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.SlabType; +import net.minecraft.world.level.block.state.properties.WoodType; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MaterialColor; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import javax.annotation.Nonnull; + +public final class ECBlocks { + public static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); + + private ECBlocks() {} + + private static String changeNameTo(String name, String postfix) { + if(name.endsWith("_block")) { + name = name.replaceAll("_block", postfix); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick" + postfix); + } else if(name.endsWith("_planks")) { + name = name.replaceAll("_planks", postfix); + } else { + name = name + postfix; + } + return name; + } + + private static void registerStairs(Block fullBlock) { + String name = changeNameTo(fullBlock.getRegistryName().getPath(), "_stairs"); + TO_STAIRS.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + p -> new StairBlock(fullBlock::defaultBlockState, p) + )); + } + private static void registerStairs(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_stairs"); + TO_STAIRS.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + p -> new StairBlock(fullBlock::defaultBlockState, p) + )); + } + + private static void registerSlab(Block fullBlock) { + String name = changeNameTo(fullBlock.getRegistryName().getPath(), "_slab"); + TO_SLAB.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + p -> new SlabBlock(p.isSuffocating((state, world, pos) -> + fullBlock.defaultBlockState().isSuffocating(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ).isRedstoneConductor((state, world, pos) -> + fullBlock.defaultBlockState().isRedstoneConductor(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ) + ) + )); + } + private static void registerSlab(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_slab"); + TO_SLAB.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + p -> new SlabBlock(p.isSuffocating((state, world, pos) -> + fullBlock.defaultBlockState().isSuffocating(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ).isRedstoneConductor((state, world, pos) -> + fullBlock.defaultBlockState().isRedstoneConductor(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ) + ) + )); + } + + private static void registerWall(Block fullBlock) { + String name = changeNameTo(fullBlock.getRegistryName().getPath(), "_wall"); + TO_WALL.put(fullBlock.getRegistryName(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + WallBlock::new + )); + } + private static void registerWall(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_wall"); + TO_WALL.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + WallBlock::new + )); + } + + private static void registerFence(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_fence"); + TO_FENCE.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + FenceBlock::new + )); + } + + private static void registerFenceGate(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_fence_gate"); + TO_FENCE_GATE.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + FenceGateBlock::new + )); + } + + private static void registerDoor(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_door"); + TO_DOOR.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + DoorBlock::new + )); + } + + private static void registerTrapDoor(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_trapdoor"); + TO_TRAPDOOR.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + TrapDoorBlock::new + )); + } + + private static void registerPressurePlate(BlockEntry fullBlock, PressurePlateBlock.Sensitivity sensitivity) { + String name = changeNameTo(fullBlock.getId().getPath(), "_pressure_plate"); + TO_PRESSURE_PLATE.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + (props) -> new PressurePlateBlock(sensitivity, props) + )); + } + + private static void registerWoodButton(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_button"); + TO_BUTTON.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + WoodButtonBlock::new + )); + } + + private static void registerSign(BlockEntry fullBlock, WoodType woodType) { + String name1 = changeNameTo(fullBlock.getId().getPath(), "_sign"); + String name2 = changeNameTo(fullBlock.getId().getPath(), "_wall_sign"); + TO_SIGN.put(fullBlock.getId(), new Tuple<>(new BlockEntry<>( + name1, + fullBlock::getProperties, + (props) -> new StandingSignBlock(props, woodType) + ), new BlockEntry<>( + name2, + fullBlock::getProperties, + (props) -> new WallSignBlock(props, woodType) + ))); + } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + + MineralDecoration.init(); + WorkStation.init(); + //SculptureDecoration.init(); + Decoration.init(); + Plant.init(); + + for(Map.Entry> blockSlab : ECBlocks.TO_SLAB.entrySet()) { + ECItems.REGISTER.register(blockSlab.getValue().getId().getPath(), () -> + new BlockItem(blockSlab.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockStairs : ECBlocks.TO_STAIRS.entrySet()) { + ECItems.REGISTER.register(blockStairs.getValue().getId().getPath(), () -> + new BlockItem(blockStairs.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockWall : ECBlocks.TO_WALL.entrySet()) { + ECItems.REGISTER.register(blockWall.getValue().getId().getPath(), () -> + new BlockItem(blockWall.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockFence : ECBlocks.TO_FENCE.entrySet()) { + ECItems.REGISTER.register(blockFence.getValue().getId().getPath(), () -> + new BlockItem(blockFence.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockFenceGate : ECBlocks.TO_FENCE_GATE.entrySet()) { + ECItems.REGISTER.register(blockFenceGate.getValue().getId().getPath(), () -> + new BlockItem(blockFenceGate.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockDoor : ECBlocks.TO_DOOR.entrySet()) { + ECItems.REGISTER.register(blockDoor.getValue().getId().getPath(), () -> + new BlockItem(blockDoor.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockTrapDoor : ECBlocks.TO_TRAPDOOR.entrySet()) { + ECItems.REGISTER.register(blockTrapDoor.getValue().getId().getPath(), () -> + new BlockItem(blockTrapDoor.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockPressurePlate : ECBlocks.TO_PRESSURE_PLATE.entrySet()) { + ECItems.REGISTER.register(blockPressurePlate.getValue().getId().getPath(), () -> + new BlockItem(blockPressurePlate.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockButton : ECBlocks.TO_BUTTON.entrySet()) { + ECItems.REGISTER.register(blockButton.getValue().getId().getPath(), () -> + new BlockItem(blockButton.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry, BlockEntry>> blockSign : + ECBlocks.TO_SIGN.entrySet()) { + ECItems.REGISTER.register(blockSign.getValue().getA().getId().getPath(), () -> + new SignItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP), + blockSign.getValue().getA().get(), + blockSign.getValue().getB().get())); + } + } + + public static final class MineralDecoration { + private static void init() { + registerStairs(Blocks.EMERALD_BLOCK); + registerStairs(Blocks.GOLD_BLOCK); + registerStairs(Blocks.IRON_BLOCK); + registerStairs(Blocks.LAPIS_BLOCK); + registerStairs(Blocks.DIAMOND_BLOCK); + registerStairs(Blocks.NETHERITE_BLOCK); + + registerSlab(Blocks.EMERALD_BLOCK); + registerSlab(Blocks.GOLD_BLOCK); + registerSlab(Blocks.IRON_BLOCK); + registerSlab(Blocks.LAPIS_BLOCK); + registerSlab(Blocks.DIAMOND_BLOCK); + registerSlab(Blocks.NETHERITE_BLOCK); + + registerWall(Blocks.EMERALD_BLOCK); + registerWall(Blocks.GOLD_BLOCK); + registerWall(Blocks.IRON_BLOCK); + registerWall(Blocks.LAPIS_BLOCK); + registerWall(Blocks.DIAMOND_BLOCK); + registerWall(Blocks.NETHERITE_BLOCK); + } + } + + public static final class WorkStation { + public static final BlockEntry CARPENTRY_TABLE = new BlockEntry<>( + "carpentry_table", CarpentryTableBlock.PROPERTIES, CarpentryTableBlock::new + ); + public static final BlockEntry GLASS_KILN = new BlockEntry<>( + "glass_kiln", GlassKilnBlock.PROPERTIES, GlassKilnBlock::new + ); + public static final BlockEntry MINERAL_TABLE = new BlockEntry<>( + "mineral_table", MineralTableBlock.PROPERTIES, MineralTableBlock::new + ); + public static final BlockEntry CRYSTALBALL_TABLE = new BlockEntry<>( + "crystalball_table", CrystalballTableBlock.PROPERTIES, CrystalballTableBlock::new + ); + public static final BlockEntry SQUEEZER = new BlockEntry<>( + "squeezer", SqueezerBlock.PROPERTIES, SqueezerBlock::new + ); + public static final BlockEntry CONTINUOUS_MINER = new BlockEntry<>( + "continuous_miner", ContinuousMinerBlock.PROPERTIES, ContinuousMinerBlock::new + ); + public static final BlockEntry ICE_MAKER = new BlockEntry<>( + "ice_maker", IceMakerBlock.PROPERTIES, IceMakerBlock::new + ); + public static final BlockEntry MELTER = new BlockEntry<>( + "melter", MelterBlock.PROPERTIES, MelterBlock::new + ); + + private static void init() { + ECItems.REGISTER.register(CARPENTRY_TABLE.getId().getPath(), () -> new BlockItem(CARPENTRY_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GLASS_KILN.getId().getPath(), () -> new BlockItem(GLASS_KILN.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MINERAL_TABLE.getId().getPath(), () -> new BlockItem(MINERAL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CRYSTALBALL_TABLE.getId().getPath(), () -> new BlockItem(CRYSTALBALL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SQUEEZER.getId().getPath(), () -> new BlockItem(SQUEEZER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CONTINUOUS_MINER.getId().getPath(), () -> new BlockItem(CONTINUOUS_MINER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(ICE_MAKER.getId().getPath(), () -> new BlockItem(ICE_MAKER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MELTER.getId().getPath(), () -> new BlockItem(MELTER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + } + + /* + public static final class SculptureDecoration { + public static final BlockEntry VILLAGER_SCULPTURE = new BlockEntry<>( + "villager_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry IRON_GOLEM_SCULPTURE = new BlockEntry<>( + "iron_golem_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry WOLF_SCULPTURE = new BlockEntry<>( + "wolf_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + public static final BlockEntry CAT_SCULPTURE = new BlockEntry<>( + "cat_sculpture", SculptureBlock.PROPERTIES, SculptureBlock::new + ); + + private static void init() { + ECItems.REGISTER.register(VILLAGER_SCULPTURE.getId().getPath(), () -> new BlockItem(VILLAGER_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(IRON_GOLEM_SCULPTURE.getId().getPath(), () -> new BlockItem(IRON_GOLEM_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WOLF_SCULPTURE.getId().getPath(), () -> new BlockItem(WOLF_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CAT_SCULPTURE.getId().getPath(), () -> new BlockItem(CAT_SCULPTURE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + } + //*/ + + public static final class Decoration { + public static final Supplier AZURE_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_BLUE) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier QUARTZ_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_GRAY) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier JADEITE_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_LIGHT_GREEN) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier EMERY_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_BLACK) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier DARK_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_BROWN) + .strength(0.5F).sound(SoundType.SAND); + public static final Supplier SANDSTONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.SAND) + .requiresCorrectToolForDrops().strength(0.8F); + public static final Supplier BLUE_NETHER_BRICKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.NETHER) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.NETHER_BRICKS); + public static final Supplier CRIMSON_STONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.CRIMSON_NYLIUM) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.STONE); + public static final Supplier WARPED_STONE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.WARPED_NYLIUM) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.STONE); + + public static final BlockEntry VITRIFIED_SAND = new BlockEntry<>( + "vitrified_sand", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry AZURE_SAND = new BlockEntry<>( + "azure_sand", AZURE_SAND_PROPERTIES, (p) -> new SandBlock(12308970, p) + ); + public static final BlockEntry QUARTZ_SAND = new BlockEntry<>( + "quartz_sand", QUARTZ_SAND_PROPERTIES, (p) -> new SandBlock(13816276, p) + ); + public static final BlockEntry JADEITE_SAND = new BlockEntry<>( + "jadeite_sand", JADEITE_SAND_PROPERTIES, (p) -> new SandBlock(9823911, p) + ); + public static final BlockEntry EMERY_SAND = new BlockEntry<>( + "emery_sand", EMERY_SAND_PROPERTIES, (p) -> new SandBlock(2500134, p) + ); + public static final BlockEntry DARK_SAND = new BlockEntry<>( + "dark_sand", DARK_SAND_PROPERTIES, (p) -> new SandBlock(10391046, p) + ); + + public static final BlockEntry AZURE_SANDSTONE = new BlockEntry<>( + "azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry QUARTZ_SANDSTONE = new BlockEntry<>( + "quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry JADEITE_SANDSTONE = new BlockEntry<>( + "jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry EMERY_SANDSTONE = new BlockEntry<>( + "emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry DARK_SANDSTONE = new BlockEntry<>( + "dark_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry SMOOTH_AZURE_SANDSTONE = new BlockEntry<>( + "smooth_azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_QUARTZ_SANDSTONE = new BlockEntry<>( + "smooth_quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_JADEITE_SANDSTONE = new BlockEntry<>( + "smooth_jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_EMERY_SANDSTONE = new BlockEntry<>( + "smooth_emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry SMOOTH_DARK_SANDSTONE = new BlockEntry<>( + "smooth_dark_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry CUT_AZURE_SANDSTONE = new BlockEntry<>( + "cut_azure_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_QUARTZ_SANDSTONE = new BlockEntry<>( + "cut_quartz_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_JADEITE_SANDSTONE = new BlockEntry<>( + "cut_jadeite_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_EMERY_SANDSTONE = new BlockEntry<>( + "cut_emery_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + public static final BlockEntry CUT_DARK_SANDSTONE = new BlockEntry<>( + "cut_dark_sandstone", SANDSTONE_PROPERTIES, Block::new + ); + + public static final BlockEntry BLUE_NETHER_BRICKS = new BlockEntry<>( + "blue_nether_bricks", BLUE_NETHER_BRICKS_PROPERTIES, Block::new + ); + + public static final BlockEntry CRIMSON_STONE = new BlockEntry<>( + "crimson_stone", CRIMSON_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry CRIMSON_COBBLESTONE = new BlockEntry<>( + "crimson_cobblestone", CRIMSON_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry WARPED_STONE = new BlockEntry<>( + "warped_stone", WARPED_STONE_PROPERTIES, Block::new + ); + public static final BlockEntry WARPED_COBBLESTONE = new BlockEntry<>( + "warped_cobblestone", WARPED_STONE_PROPERTIES, Block::new + ); + + private static void init() { + ECItems.REGISTER.register(VITRIFIED_SAND.getId().getPath(), () -> new BlockItem(VITRIFIED_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(AZURE_SAND.getId().getPath(), () -> new BlockItem(AZURE_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(QUARTZ_SAND.getId().getPath(), () -> new BlockItem(QUARTZ_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(JADEITE_SAND.getId().getPath(), () -> new BlockItem(JADEITE_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(EMERY_SAND.getId().getPath(), () -> new BlockItem(EMERY_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(DARK_SAND.getId().getPath(), () -> new BlockItem(DARK_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(DARK_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(SMOOTH_AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(SMOOTH_DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_DARK_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(CUT_AZURE_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_AZURE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_QUARTZ_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_QUARTZ_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_JADEITE_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_JADEITE_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_EMERY_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_EMERY_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CUT_DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_DARK_SANDSTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(BLUE_NETHER_BRICKS.getId().getPath(), () -> new BlockItem(BLUE_NETHER_BRICKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + ECItems.REGISTER.register(CRIMSON_STONE.getId().getPath(), () -> new BlockItem(CRIMSON_STONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(CRIMSON_COBBLESTONE.getId().getPath(), () -> new BlockItem(CRIMSON_COBBLESTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WARPED_STONE.getId().getPath(), () -> new BlockItem(WARPED_STONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(WARPED_COBBLESTONE.getId().getPath(), () -> new BlockItem(WARPED_COBBLESTONE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + + registerStairs(Decoration.AZURE_SANDSTONE); + registerStairs(Decoration.QUARTZ_SANDSTONE); + registerStairs(Decoration.JADEITE_SANDSTONE); + registerStairs(Decoration.EMERY_SANDSTONE); + registerStairs(Decoration.DARK_SANDSTONE); + registerStairs(Decoration.SMOOTH_AZURE_SANDSTONE); + registerStairs(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerStairs(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerStairs(Decoration.SMOOTH_EMERY_SANDSTONE); + registerStairs(Decoration.SMOOTH_DARK_SANDSTONE); + registerStairs(Decoration.BLUE_NETHER_BRICKS); + registerStairs(Decoration.CRIMSON_STONE); + registerStairs(Decoration.CRIMSON_COBBLESTONE); + registerStairs(Decoration.WARPED_STONE); + registerStairs(Decoration.WARPED_COBBLESTONE); + + registerSlab(Decoration.AZURE_SANDSTONE); + registerSlab(Decoration.QUARTZ_SANDSTONE); + registerSlab(Decoration.JADEITE_SANDSTONE); + registerSlab(Decoration.EMERY_SANDSTONE); + registerSlab(Decoration.DARK_SANDSTONE); + registerSlab(Decoration.SMOOTH_AZURE_SANDSTONE); + registerSlab(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerSlab(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerSlab(Decoration.SMOOTH_EMERY_SANDSTONE); + registerSlab(Decoration.SMOOTH_DARK_SANDSTONE); + registerSlab(Decoration.CUT_AZURE_SANDSTONE); + registerSlab(Decoration.CUT_QUARTZ_SANDSTONE); + registerSlab(Decoration.CUT_JADEITE_SANDSTONE); + registerSlab(Decoration.CUT_EMERY_SANDSTONE); + registerSlab(Decoration.CUT_DARK_SANDSTONE); + registerSlab(Decoration.BLUE_NETHER_BRICKS); + registerSlab(Decoration.CRIMSON_STONE); + registerSlab(Decoration.CRIMSON_COBBLESTONE); + registerSlab(Decoration.WARPED_STONE); + registerSlab(Decoration.WARPED_COBBLESTONE); + + registerWall(Decoration.AZURE_SANDSTONE); + registerWall(Decoration.QUARTZ_SANDSTONE); + registerWall(Decoration.JADEITE_SANDSTONE); + registerWall(Decoration.EMERY_SANDSTONE); + registerWall(Decoration.DARK_SANDSTONE); + registerWall(Decoration.BLUE_NETHER_BRICKS); + registerWall(Decoration.CRIMSON_STONE); + registerWall(Decoration.CRIMSON_COBBLESTONE); + registerWall(Decoration.WARPED_STONE); + registerWall(Decoration.WARPED_COBBLESTONE); + } + } + + public static final class Plant { + public static final Supplier FLOWER_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS); + public static final Supplier GINKGO_SAPLING_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS); + public static final Supplier POTTED_FLOWER_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.DECORATION).instabreak().noOcclusion(); + public static final Supplier GINKGO_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, (blockState) -> + blockState.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y ? + MaterialColor.TERRACOTTA_ORANGE : MaterialColor.TERRACOTTA_BROWN) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier STRIPPED_GINKGO_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier GINKGO_WOOD_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BROWN) + .strength(2.0F).sound(SoundType.WOOD); + + public static final Supplier LEAVES_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion() + .isValidSpawn((blockState, level, pos, entityType) -> entityType == EntityType.OCELOT || entityType == EntityType.PARROT) + .isSuffocating((blockState, level, pos) -> false) + .isViewBlocking((blockState, level, pos) -> false); + + public static final Supplier GINKGO_PLANKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE) + .strength(2.0F, 3.0F).sound(SoundType.WOOD); + + + public static final BlockEntry WARPED_WART = new BlockEntry<>( + "warped_wart", WarpedWartBlock.PROPERTIES, WarpedWartBlock::new + ); + + public static final BlockEntry CYAN_PETUNIA = new BlockEntry<>( + "cyan_petunia", FLOWER_PROPERTIES, (props) -> new FlowerBlock(MobEffects.WATER_BREATHING, 8, props) + ); + public static final BlockEntry MAGENTA_PETUNIA = new BlockEntry<>( + "magenta_petunia", FLOWER_PROPERTIES, (props) -> new FlowerBlock(MobEffects.WATER_BREATHING, 8, props) + ); + public static final BlockEntry POTTED_CYAN_PETUNIA = new BlockEntry<>( + "potted_cyan_petunia", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, CYAN_PETUNIA, props + ) + ); + public static final BlockEntry POTTED_MAGENTA_PETUNIA = new BlockEntry<>( + "potted_magenta_petunia", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, MAGENTA_PETUNIA, props + ) + ); + + public static final BlockEntry GINKGO_SAPLING = new BlockEntry<>( + "ginkgo_sapling", GINKGO_SAPLING_PROPERTIES, (props) -> new SaplingBlock(new GinkgoTreeGrower(), props) + ); + public static final BlockEntry POTTED_GINKGO_SAPLING = new BlockEntry<>( + "potted_ginkgo_sapling", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, GINKGO_SAPLING, props + ) + ); + public static final BlockEntry GINKGO_LOG = new BlockEntry<>( + "ginkgo_log", GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_GINKGO_LOG = new BlockEntry<>( + "stripped_ginkgo_log", STRIPPED_GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry GINKGO_WOOD = new BlockEntry<>( + "ginkgo_wood", GINKGO_WOOD_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_GINKGO_WOOD = new BlockEntry<>( + "stripped_ginkgo_wood", STRIPPED_GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry GINKGO_LEAVES = new BlockEntry<>( + "ginkgo_leaves", LEAVES_PROPERTIES, LeavesBlock::new + ); + + public static final BlockEntry GINKGO_PLANKS = new BlockEntry<>( + "ginkgo_planks", GINKGO_PLANKS_PROPERTIES, Block::new + ); + + private static void init() { + ECItems.REGISTER.register(CYAN_PETUNIA.getId().getPath(), () -> new BlockItem(CYAN_PETUNIA.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MAGENTA_PETUNIA.getId().getPath(), () -> new BlockItem(MAGENTA_PETUNIA.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_SAPLING.getId().getPath(), () -> new BlockItem(GINKGO_SAPLING.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_LOG.getId().getPath(), () -> new BlockItem(GINKGO_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_GINKGO_LOG.getId().getPath(), () -> new BlockItem(STRIPPED_GINKGO_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_WOOD.getId().getPath(), () -> new BlockItem(GINKGO_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_GINKGO_WOOD.getId().getPath(), () -> new BlockItem(STRIPPED_GINKGO_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_LEAVES.getId().getPath(), () -> new BlockItem(GINKGO_LEAVES.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_PLANKS.getId().getPath(), () -> new BlockItem(GINKGO_PLANKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + + registerStairs(Plant.GINKGO_PLANKS); + registerSlab(Plant.GINKGO_PLANKS); + registerFence(Plant.GINKGO_PLANKS); + registerFenceGate(Plant.GINKGO_PLANKS); + registerDoor(Plant.GINKGO_PLANKS); + registerTrapDoor(Plant.GINKGO_PLANKS); + registerPressurePlate(Plant.GINKGO_PLANKS, PressurePlateBlock.Sensitivity.EVERYTHING); + registerWoodButton(Plant.GINKGO_PLANKS); + registerSign(Plant.GINKGO_PLANKS, ECWoodType.GINKGO); + } + } + + public static final Map> TO_SLAB = new HashMap<>(); + public static final Map> TO_STAIRS = new HashMap<>(); + public static final Map> TO_WALL = new HashMap<>(); + public static final Map> TO_FENCE = new HashMap<>(); + public static final Map> TO_FENCE_GATE = new HashMap<>(); + public static final Map> TO_DOOR = new HashMap<>(); + public static final Map> TO_TRAPDOOR = new HashMap<>(); + public static final Map> TO_PRESSURE_PLATE = new HashMap<>(); + public static final Map> TO_BUTTON = new HashMap<>(); + public static final Map, BlockEntry>> TO_SIGN = new HashMap<>(); + + public static final class BlockEntry implements Supplier, ItemLike { + private final RegistryObject regObject; + private final Supplier properties; + + public static BlockEntry simple(String name, Supplier properties, Consumer extra) { + return new BlockEntry<>(name, properties, p -> Util.make(new Block(p), extra)); + } + + public BlockEntry(String name, Supplier properties, Function make) { + this.properties = properties; + this.regObject = REGISTER.register(name, () -> make.apply(properties.get())); + } + + @Override + public T get() + { + return regObject.get(); + } + + public BlockState defaultBlockState() { + return get().defaultBlockState(); + } + + public ResourceLocation getId() { + return regObject.getId(); + } + + public BlockBehaviour.Properties getProperties() + { + return properties.get(); + } + + @Nonnull + @Override + public Item asItem() + { + return get().asItem(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java new file mode 100644 index 00000000..df0f3ce6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java @@ -0,0 +1,133 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.data.worldgen.placement.PlacementUtils; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.valueproviders.ConstantInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature; +import net.minecraft.world.level.levelgen.feature.configurations.*; +import net.minecraft.world.level.levelgen.feature.featuresize.TwoLayersFeatureSize; +import net.minecraft.world.level.levelgen.feature.foliageplacers.BlobFoliagePlacer; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; +import net.minecraft.world.level.levelgen.feature.stateproviders.NoiseThresholdProvider; +import net.minecraft.world.level.levelgen.feature.trunkplacers.StraightTrunkPlacer; +import net.minecraft.world.level.levelgen.synth.NormalNoise; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public final class ECConfiguredFeatures { + + + public static final class OreConfiguredFeatures { + public static final Holder> ORE_DEBRIS_EXTRA = register( + "ore_debris_extra", Feature.SCATTERED_ORE, new OreConfiguration( + OreFeatures.NETHER_ORE_REPLACEABLES, + Blocks.ANCIENT_DEBRIS.defaultBlockState(), + 4, 0.8F + ) + ); + public static final Holder> ORE_QUARTZ_EXTRA = register( + "ore_quartz_extra", Feature.ORE, new OreConfiguration( + OreFeatures.NETHERRACK, + Blocks.NETHER_QUARTZ_ORE.defaultBlockState(), + 16 + ) + ); + + private OreConfiguredFeatures() {} + } + + public static final class StructureConfiguredFeatures { + public static Holder> ZOMBIE_VILLAGER_ROOM = register( + "zombie_villager_room", ECFeatures.ZOMBIE_VILLAGER_ROOM, FeatureConfiguration.NONE + ); + + private StructureConfiguredFeatures() {} + } + + public static final class TreeConfiguredFeatures { + public static final Block GINKGO_LOG = ECBlocks.Plant.GINKGO_LOG.get(); + public static final Block GINKGO_LEAVES = ECBlocks.Plant.GINKGO_LEAVES.get(); + + public static final Holder> GINKGO_1 = register( + "ginkgo_1", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 3, 2, 1, 2 + ).build() + ); + public static final Holder> GINKGO_2 = register( + "ginkgo_2", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 3, 2, 2, 3 + ).build() + ); + public static final Holder> GINKGO_3 = register( + "ginkgo_3", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 4, 2, 6, 3 + ).build() + ); + + public static final Holder> TREES_GINKGO = register( + "trees_ginkgo", Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration( + List.of( + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_2), 0.3F), + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_3), 0.2F) + ), + PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_1) + ) + ); + + private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobGinkgoTree(Block logBlock, Block leavesBlock, + int baseHeight, int heightRandA, int heightRandB, + int radius) { + return new TreeConfiguration.TreeConfigurationBuilder( + BlockStateProvider.simple(logBlock), + new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB), + BlockStateProvider.simple(leavesBlock), + new BlobFoliagePlacer(ConstantInt.of(radius), ConstantInt.of(0), 4), + new TwoLayersFeatureSize(1, 0, 1) + ); + } + + private TreeConfiguredFeatures() {} + } + + public static final class VegetationFeatures { + public static final Block CYAN_PETUNIA = ECBlocks.Plant.CYAN_PETUNIA.get(); + public static final Block MAGENTA_PETUNIA = ECBlocks.Plant.MAGENTA_PETUNIA.get(); + + public static final Holder> FLOWER_PETUNIA_PLAINS = register( + "flower_petunia_plains", Feature.FLOWER, new RandomPatchConfiguration( + 64, 6, 2, PlacementUtils.onlyWhenEmpty( + Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(new NoiseThresholdProvider( + 2345L, new NormalNoise.NoiseParameters(0, 1.0D), 0.005F, 0.5F, 0.75F, + Blocks.ALLIUM.defaultBlockState(), + List.of( + CYAN_PETUNIA.defaultBlockState(), + MAGENTA_PETUNIA.defaultBlockState() + ), List.of( + Blocks.POPPY.defaultBlockState(), + Blocks.DANDELION.defaultBlockState() + ) + )) + ) + ) + ); + } + + public static final class SpecialFeatures { + public static final Holder> VOLCANIC_CAVES_LAVA_POOL = register( + "volcanic_caves_lava_pool", ECFeatures.VOLCANIC_CAVES_LAVA_POOL, FeatureConfiguration.NONE + ); + } + + private static > Holder> register(String id, F f, FC fc) { + return BuiltinRegistries.register(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation(MODID, id), new ConfiguredFeature<>(f, fc)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java new file mode 100644 index 00000000..6e487e7b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredStructures.java @@ -0,0 +1,38 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.pools.NetherWarfieldPools; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement; +import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECConfiguredStructures { + public static final Holder> SHELTER_HOUSE = register( + new ResourceLocation(MODID, "shelter_house"), + ECStructures.SHELTER.configured(NoneFeatureConfiguration.INSTANCE, ECBiomeTags.HAS_SHELTER, true) + ); + public static final Holder> NETHER_WARFIELD = register( + new ResourceLocation(MODID, "nether_warfield"), + ECStructures.NETHER_WARFIELD.configured(new JigsawConfiguration(NetherWarfieldPools.START, 6), ECBiomeTags.HAS_NETHER_WARFIELD, true) + ); + + public static final StructureSet SET_SHELTER_HOUSE = new StructureSet(SHELTER_HOUSE, new RandomSpreadStructurePlacement(64, 32, RandomSpreadType.LINEAR, 1926081709)); + public static final StructureSet SET_NETHER_WARFIELD = new StructureSet(NETHER_WARFIELD, new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 10387312)); + + public static void init() { + Registry.register(BuiltinRegistries.STRUCTURE_SETS, new ResourceLocation(MODID, "shelter_house"), SET_SHELTER_HOUSE); + Registry.register(BuiltinRegistries.STRUCTURE_SETS, new ResourceLocation(MODID, "nether_warfield"), SET_NETHER_WARFIELD); + } + + private static Holder> register(ResourceLocation id, ConfiguredStructureFeature configuredStructureFeature) { + return BuiltinRegistries.register(BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE, id, configuredStructureFeature); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java new file mode 100644 index 00000000..d9324fd2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECContainerTypes { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.CONTAINERS, MODID); + + public static final RegistryObject> CARPENTRY_TABLE_MENU = REGISTER.register( + "carpentry", () -> new MenuType<>(CarpentryTableMenu::new) + ); + public static final RegistryObject> GLASS_KILN_MENU = REGISTER.register( + "glass_kiln", () -> new MenuType<>(GlassKilnMenu::new) + ); + public static final RegistryObject> MINERAL_TABLE_MENU = REGISTER.register( + "mineral_table", () -> new MenuType<>(MineralTableMenu::new) + ); + public static final RegistryObject> CONTINUOUS_MINER_MENU = REGISTER.register( + "continuous_miner", () -> new MenuType<>(ContinuousMinerMenu::new) + ); + public static final RegistryObject> ICE_MAKER_MENU = REGISTER.register( + "ice_maker", () -> new MenuType<>(IceMakerMenu::new) + ); + public static final RegistryObject> MELTER_MENU = REGISTER.register( + "melter", () -> new MenuType<>(MelterMenu::new) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java new file mode 100644 index 00000000..f65a4ee5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java @@ -0,0 +1,51 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECEntities { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); + + public static final RegistryObject> PIGLIN_CUTEY = REGISTER.register( + "piglin_cutey", () -> EntityType.Builder.of(PiglinCuteyEntity::new, MobCategory.MISC) + .sized(0.6F, 1.9F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "piglin_cutey").toString()) + ); + public static final RegistryObject> NETHER_PIGMAN = REGISTER.register( + "nether_pigman", () -> EntityType.Builder.of(NetherPigmanEntity::new, MobCategory.CREATURE) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "nether_pigman").toString()) + ); + public static final RegistryObject> NETHER_LAMBMAN = REGISTER.register( + "nether_lambman", () -> EntityType.Builder.of(NetherLambmanEntity::new, MobCategory.CREATURE) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "nether_lambman").toString()) + ); + + public static final RegistryObject> BOAT = REGISTER.register( + "boat", () -> EntityType.Builder.of(ECBoat::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "boat").toString()) + ); + + private ECEntities() { } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java new file mode 100644 index 00000000..67280062 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java @@ -0,0 +1,21 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.VolcanicCavesLavaPoolFeature; +import com.hexagram2021.emeraldcraft.common.world.ZombieVillagerRoomFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraftforge.event.RegistryEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECFeatures { + public static final Feature ZOMBIE_VILLAGER_ROOM = new ZombieVillagerRoomFeature(NoneFeatureConfiguration.CODEC); + public static final Feature VOLCANIC_CAVES_LAVA_POOL = new VolcanicCavesLavaPoolFeature(NoneFeatureConfiguration.CODEC); + + public static void init(RegistryEvent.Register> event) { + ZOMBIE_VILLAGER_ROOM.setRegistryName(MODID, "zombie_villager_room"); + VOLCANIC_CAVES_LAVA_POOL.setRegistryName(MODID, "volcanic_caves_lava_pool"); + event.getRegistry().register(ZOMBIE_VILLAGER_ROOM); + event.getRegistry().register(VOLCANIC_CAVES_LAVA_POOL); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java new file mode 100644 index 00000000..f030a3a2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java @@ -0,0 +1,199 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.items.ECBoatItem; +import com.hexagram2021.emeraldcraft.common.items.EmeraldArmorItem; +import com.hexagram2021.emeraldcraft.common.items.LapisArmorItem; +import com.hexagram2021.emeraldcraft.common.util.ECFoods; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.*; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.entity.BannerPattern; +import net.minecraftforge.common.ForgeSpawnEggItem; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import javax.annotation.Nonnull; +import java.util.EnumMap; +import java.util.Locale; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECItems { + public static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); + + public static final Map> EMERALD_ARMOR = new EnumMap<>(EquipmentSlot.class); + public static final Map> LAPIS_ARMOR = new EnumMap<>(EquipmentSlot.class); + + public static final ItemRegObject WARPED_WART = ItemRegObject.register( + "warped_wart", () -> new ItemNameBlockItem(ECBlocks.Plant.WARPED_WART.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PIGLIN_CUTEY_SPAWN_EGG = ItemRegObject.register( + "piglin_cutey_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.PIGLIN_CUTEY, 0xF1E2B1, 0xE6BE02, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject NETHER_PIGMAN_SPAWN_EGG = ItemRegObject.register( + "nether_pigman_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.NETHER_PIGMAN, 0xFF8EB3, 0x053636, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject NETHER_LAMBMAN_SPAWN_EGG = ItemRegObject.register( + "nether_lambman_spawn_egg", () -> new ForgeSpawnEggItem(ECEntities.NETHER_LAMBMAN, 0xFFFFFF, 0x0F9B9B, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject AGATE_APPLE = ItemRegObject.register( + "agate_apple", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).rarity(Rarity.RARE).food(ECFoods.AGATE_APPLE)) + ); + public static final ItemRegObject JADE_APPLE = ItemRegObject.register( + "jade_apple", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).rarity(Rarity.RARE).food(ECFoods.JADE_APPLE)) + ); + public static final ItemRegObject GINKGO_NUT = ItemRegObject.register( + "ginkgo_nut", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.GINKGO_NUT)) + ); + + public static final ItemRegObject DIAMOND_NUGGET = ItemRegObject.register( + "diamond_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject EMERALD_NUGGET = ItemRegObject.register( + "emerald_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject LAPIS_NUGGET = ItemRegObject.register( + "lapis_nugget", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject IRON_CONCENTRATE = ItemRegObject.register( + "iron_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject GOLD_CONCENTRATE = ItemRegObject.register( + "gold_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject COPPER_CONCENTRATE = ItemRegObject.register( + "copper_concentrate", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject MELTED_EMERALD_BUCKET = ItemRegObject.register( + "melted_emerald_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_IRON_BUCKET = ItemRegObject.register( + "melted_iron_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_GOLD_BUCKET = ItemRegObject.register( + "melted_gold_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + public static final ItemRegObject MELTED_COPPER_BUCKET = ItemRegObject.register( + "melted_copper_bucket", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)) + ); + + public static final ItemRegObject ROCK_BREAKER = ItemRegObject.register( + "rock_breaker", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject GINKGO_BOAT = ItemRegObject.register( + "ginkgo_boat", () -> new ECBoatItem(ECBoat.ECBoatType.GINKGO, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final class BannerPatterns { + public static final ItemRegObject BEE = ItemRegObject.register( + "bee_banner_pattern", () -> { + String enumName = MODID + "_bee"; + String fullId = "ec_bee"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject SNOW = ItemRegObject.register( + "snow_banner_pattern", () -> { + String enumName = MODID + "_snow"; + String fullId = "ec_snow"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject BOTTLE = ItemRegObject.register( + "bottle_banner_pattern", () -> { + String enumName = MODID + "_bottle"; + String fullId = "ec_bottle"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + public static final ItemRegObject POTION = ItemRegObject.register( + "potion_banner_pattern", () -> { + String enumName = MODID + "_potion"; + String fullId = "ec_potion"; + BannerPattern pattern = BannerPattern.create(enumName.toUpperCase(), enumName, fullId, true); + return new BannerPatternItem(pattern, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1)); + } + ); + + private static void init() {} + } + + private ECItems() { } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + + for(EquipmentSlot slot : EquipmentSlot.values()) { + if (slot.getType() == EquipmentSlot.Type.ARMOR) { + EMERALD_ARMOR.put(slot, ItemRegObject.register( + "emerald_" + slot.getName().toLowerCase(Locale.ENGLISH), () -> new EmeraldArmorItem(slot) + )); + LAPIS_ARMOR.put(slot, ItemRegObject.register( + "lapis_" + slot.getName().toLowerCase(Locale.ENGLISH), () -> new LapisArmorItem(slot) + )); + } + } + + BannerPatterns.init(); + } + + public static class ItemRegObject implements Supplier, ItemLike { + private final RegistryObject regObject; + + private static ItemRegObject simple(String name) { + return simple(name, $ -> { }, $ -> { }); + } + + private static ItemRegObject simple(String name, Consumer makeProps, Consumer processItem) { + return register(name, () -> Util.make(new Item(Util.make(new Item.Properties(), makeProps)), processItem)); + } + + private static ItemRegObject register(String name, Supplier make) { + return new ItemRegObject<>(REGISTER.register(name, make)); + } + + private static ItemRegObject of(T existing) { + return new ItemRegObject<>(RegistryObject.create(existing.getRegistryName(), ForgeRegistries.ITEMS)); + } + + private ItemRegObject(RegistryObject regObject) + { + this.regObject = regObject; + } + + @Override + @Nonnull + public T get() + { + return regObject.get(); + } + + @Nonnull + @Override + public Item asItem() + { + return regObject.get(); + } + + public ResourceLocation getId() + { + return regObject.getId(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java new file mode 100644 index 00000000..04e926c4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java @@ -0,0 +1,92 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.data.worldgen.features.TreeFeatures; +import net.minecraft.data.worldgen.placement.PlacementUtils; +import net.minecraft.data.worldgen.placement.VegetationPlacements; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.valueproviders.ConstantInt; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.*; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECPlacedFeatures { + public static Holder ORE_LAPIS_EXTRA = register( + "ore_lapis_extra", OreFeatures.ORE_LAPIS, + commonOrePlacement(50, HeightRangePlacement.uniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(256))) + ); + public static Holder ORE_EMERALD_EXTRA = register( + "ore_emerald_extra", OreFeatures.ORE_EMERALD, + commonOrePlacement(80, HeightRangePlacement.uniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(256))) + ); + public static Holder ORE_DEBRIS_EXTRA = register( + "ore_debris_extra", ECConfiguredFeatures.OreConfiguredFeatures.ORE_DEBRIS_EXTRA, List.of( + InSquarePlacement.spread(), + HeightRangePlacement.triangle(VerticalAnchor.absolute(16), VerticalAnchor.absolute(79)), + BiomeFilter.biome() + )); + public static Holder ORE_QUARTZ_EXTRA = register( + "ore_quartz_extra", ECConfiguredFeatures.OreConfiguredFeatures.ORE_QUARTZ_EXTRA, + commonOrePlacement(20, PlacementUtils.RANGE_10_10) + ); + + public static Holder ZOMBIE_VILLAGER_ROOM = register( + "zombie_villager_room", ECConfiguredFeatures.StructureConfiguredFeatures.ZOMBIE_VILLAGER_ROOM, List.of( + CountPlacement.of(8), InSquarePlacement.spread(), + HeightRangePlacement.uniform(VerticalAnchor.absolute(0), VerticalAnchor.top()), + BiomeFilter.biome() + )); + + public static final Holder FLOWER_PETUNIA_PLAINS = register( + "flower_petunia_plains", ECConfiguredFeatures.VegetationFeatures.FLOWER_PETUNIA_PLAINS, List.of( + NoiseThresholdCountPlacement.of(-0.8D, 18, 6), + RarityFilter.onAverageOnceEvery(32), + InSquarePlacement.spread(), + PlacementUtils.HEIGHTMAP, + BiomeFilter.biome() + )); + + public static final Holder TREES_GINKGO = register( + "trees_ginkgo", ECConfiguredFeatures.TreeConfiguredFeatures.TREES_GINKGO, + VegetationPlacements.treePlacement(PlacementUtils.countExtra(10, 0.1F, 1)) + ); + + public static final Holder VOLCANIC_CAVES_LAVA_POOL = register( + "volcanic_caves_lava_pool", ECConfiguredFeatures.SpecialFeatures.VOLCANIC_CAVES_LAVA_POOL, List.of( + CountPlacement.of(126), InSquarePlacement.spread(), + PlacementUtils.RANGE_BOTTOM_TO_MAX_TERRAIN_HEIGHT, + EnvironmentScanPlacement.scanningFor(Direction.DOWN, BlockPredicate.solid(), BlockPredicate.ONLY_IN_AIR_PREDICATE, 12), + RandomOffsetPlacement.vertical(ConstantInt.of(1)), + BiomeFilter.biome() + )); + + public static final Holder XANADU_TREES = register( + "xanadu_trees", TreeFeatures.AZALEA_TREE, List.of( + PlacementUtils.countExtra(0, 0.05F, 1), InSquarePlacement.spread(), + VegetationPlacements.TREE_THRESHOLD, PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, + BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.AZALEA.defaultBlockState(), BlockPos.ZERO)), + BiomeFilter.biome() + )); + + private static Holder register(String id, Holder> cf, List modifiers) { + return BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, new ResourceLocation(MODID, id), new PlacedFeature(Holder.hackyErase(cf), List.copyOf(modifiers))); + } + + private static List orePlacement(PlacementModifier countModifier, PlacementModifier heightModifier) { + return List.of(countModifier, InSquarePlacement.spread(), heightModifier, BiomeFilter.biome()); + } + + private static List commonOrePlacement(int count, PlacementModifier heightModifier) { + return orePlacement(CountPlacement.of(count), heightModifier); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java new file mode 100644 index 00000000..0093cf19 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperty.java @@ -0,0 +1,8 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +public class ECProperty { + public static final IntegerProperty EXP_COUNT = IntegerProperty.create("exp_count", 0, 15); + public static final IntegerProperty HONEY_COUNT = IntegerProperty.create("honey_count", 0, 7); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java new file mode 100644 index 00000000..4bdaeedb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.serializer.*; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECRecipeSerializer { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, MODID); + + public static final RegistryObject> CARPENTRY_SERIALIZER = REGISTER.register( + "carpentry", () -> new CarpentryTableRecipeSerializer<>(CarpentryTableRecipe::new) + ); + public static final RegistryObject> GLASS_KILN_SERIALIZER = REGISTER.register( + "glass_kiln", () -> new GlassKilnRecipeSerializer<>(GlassKilnRecipe::new, 100) + ); + public static final RegistryObject> MINERAL_TABLE_SERIALIZER = REGISTER.register( + "mineral_table", () -> new MineralTableRecipeSerializer<>(MineralTableRecipe::new, MineralTableRecipe.BURN_TIME) + ); + public static final RegistryObject> ICE_MAKER_SERIALIZER = REGISTER.register( + "ice_maker", () -> new IceMakerRecipeSerializer<>(IceMakerRecipe::new, IceMakerRecipe.FREEZING_TIME) + ); + public static final RegistryObject> MELTER_SERIALIZER = REGISTER.register( + "melter", () -> new MelterRecipeSerializer<>(MelterRecipe::new, MelterRecipe.MELTING_TIME) + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java new file mode 100644 index 00000000..c0bf2989 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java @@ -0,0 +1,41 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.*; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ECRecipes { + public static RecipeType CARPENTRY_TABLE_TYPE; + public static RecipeType GLASS_KILN_TYPE; + public static RecipeType MINERAL_TABLE_TYPE; + public static RecipeType ICE_MAKER_TYPE; + public static RecipeType MELTER_TYPE; + + @SubscribeEvent + public static void registerRecipeTypes(RegistryEvent.Register event) { + CARPENTRY_TABLE_TYPE = register("carpentry"); + GLASS_KILN_TYPE = register("glass_kiln"); + MINERAL_TABLE_TYPE = register("mineral_table"); + ICE_MAKER_TYPE = register("ice_maker"); + MELTER_TYPE = register("melter"); + } + + private static > RecipeType register(String path) { + ResourceLocation name = new ResourceLocation(MODID, path); + return Registry.register(Registry.RECIPE_TYPE, name, new RecipeType() { + @Override + public String toString() { + return name.toString(); + } + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java new file mode 100644 index 00000000..4d30eaa8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.NetherWarfieldFeature; +import com.hexagram2021.emeraldcraft.common.world.ShelterFeature; +import com.hexagram2021.emeraldcraft.common.world.ShelterPieces; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; +import net.minecraftforge.event.RegistryEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructures { + public static final StructurePieceType SHELTER_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "shelter", ShelterPieces.ShelterPiece::new); + + public static final ShelterFeature SHELTER = new ShelterFeature(NoneFeatureConfiguration.CODEC); + public static final StructureFeature NETHER_WARFIELD = new NetherWarfieldFeature(JigsawConfiguration.CODEC); + + public static void init(RegistryEvent.Register> event) { + SHELTER.setRegistryName(new ResourceLocation(MODID, "shelter")); + NETHER_WARFIELD.setRegistryName(new ResourceLocation(MODID, "nether_warfield")); + event.getRegistry().register(SHELTER); + event.getRegistry().register(NETHER_WARFIELD); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java new file mode 100644 index 00000000..2addb938 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java @@ -0,0 +1,9 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.block.state.properties.WoodType; + +public class ECWoodType { + public static final WoodType GINKGO = WoodType.register(WoodType.create("ginkgo")); + + public static void init() {} +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java new file mode 100644 index 00000000..355c3df5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java @@ -0,0 +1,166 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import com.google.common.collect.Lists; +import net.minecraft.client.Minecraft; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistry; + +import java.util.Iterator; +import java.util.List; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +public class BiomeUtil { + private static final List worldList = Lists.newArrayList(); + + public static ResourceKey biomeOrFallback(Registry biomeRegistry, ResourceKey... biomes) { + int var3 = biomes.length; + + for (ResourceKey key : biomes) { + if (isKeyRegistered(biomeRegistry, key)) { + return key; + } + } + + throw new RuntimeException("Failed to find fallback for biome!"); + } + + public static boolean isKeyRegistered(Registry registry, ResourceKey key) { + return key != null && registry.get(key) != null; + } + + public static ResourceKey getBiomeKey(Biome biome) { + if (biome == null) { + throw new RuntimeException("Cannot get registry key for null biome"); + } else if (biome.delegate.name() == null) { + if (FMLEnvironment.dist == Dist.CLIENT) { + return getClientKey(biome); + } else { + throw new RuntimeException("Failed to get registry key for biome!"); + } + } else { + return ResourceKey.create(Registry.BIOME_REGISTRY, biome.delegate.name()); + } + } + + public static Biome getBiome(ResourceKey key) { + Biome biome = ForgeRegistries.BIOMES.getValue(key.location()); + if (biome == null) { + if (FMLEnvironment.dist == Dist.CLIENT) { + try { + biome = getClientBiome(key); + } catch (Exception var3) { + ECLogger.error(var3.getMessage()); + } + + if (biome == null) { + biome = getBiomeFromWorlds(key); + } + + return biome; + } + + if (FMLEnvironment.dist == Dist.DEDICATED_SERVER) { + return getBiomeFromWorlds(key); + } + } + + return biome; + } + + public static Biome getBiome(int id) { + if (id == -1) { + throw new RuntimeException("Attempted to get biome with id -1"); + } else { + return getBiome(((ForgeRegistry)ForgeRegistries.BIOMES).getKey(id)); + } + } + + public static int getBiomeId(Biome biome) { + if (biome == null) { + throw new RuntimeException("Attempted to get id of null biome"); + } else { + int id = ((ForgeRegistry)ForgeRegistries.BIOMES).getID(biome); + if (id == -1) { + throw new RuntimeException("Biome id is -1 for biome " + biome.delegate.name()); + } else { + return id; + } + } + } + + public static int getBiomeId(ResourceKey key) { + return getBiomeId(getBiome(key)); + } + + public static boolean exists(ResourceKey key) { + return ForgeRegistries.BIOMES.containsKey(key.location()); + } + + public static boolean exists(int id) { + return getBiome(id) != null; + } + + @OnlyIn(Dist.CLIENT) + private static Registry getClientBiomeRegistry() { + Minecraft minecraft = Minecraft.getInstance(); + Level world = minecraft.level; + if (world == null) { + throw new RuntimeException("Cannot acquire biome registry when the world is null."); + } else { + return world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY); + } + } + + @OnlyIn(Dist.CLIENT) + private static ResourceKey getClientKey(Biome biome) { + return getClientBiomeRegistry().getResourceKey(biome).orElseThrow( + () -> new RuntimeException("Failed to get client registry key for biome!") + ); + } + + @OnlyIn(Dist.CLIENT) + private static Biome getClientBiome(ResourceKey key) { + Biome biome = getClientBiomeRegistry().get(key); + if (biome == null) { + throw new RuntimeException("Failed to get client biome for registry key " + key.location() + "!"); + } + + return biome; + } + + private static Biome getBiomeFromWorlds(ResourceKey key) { + Iterator var1 = worldList.iterator(); + + Biome biome; + do { + if (!var1.hasNext()) { + throw new RuntimeException("Failed to get biome for registry key " + key.location() + " !"); + } + + Level world = var1.next(); + biome = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).get(key); + } while(biome == null); + + return biome; + } + + @SubscribeEvent + public static void onWorldLoad(WorldEvent.Load event) { + worldList.add((Level)event.getWorld()); + } + + @SubscribeEvent + public static void onWorldUnload(WorldEvent.Unload event) { + worldList.remove((Level)event.getWorld()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java new file mode 100644 index 00000000..ecfc435f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.food.FoodProperties; + +public class ECFoods { + public static final FoodProperties AGATE_APPLE = + (new FoodProperties.Builder()).nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.DAMAGE_BOOST, 1200, 0), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.DIG_SPEED, 1200, 0), 1.0F) + .alwaysEat().build(); + public static final FoodProperties JADE_APPLE = + (new FoodProperties.Builder()).nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 1200, 1), 1.0F) + .alwaysEat().build(); + + public static final FoodProperties GINKGO_NUT = + (new FoodProperties.Builder()).nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.POISON, 40, 0), 0.05F) + .build(); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java new file mode 100644 index 00000000..d3902861 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Logger; + +public class ECLogger { + public static boolean debugMode = true; + public static Logger logger; + + public static void log(Level logLevel, Object object) + { + logger.log(logLevel, String.valueOf(object)); + } + + public static void error(Object object) + { + log(Level.ERROR, object); + } + + public static void info(Object object) + { + log(Level.INFO, object); + } + + public static void warn(Object object) + { + log(Level.WARN, object); + } + + public static void error(String message, Object... params) + { + logger.log(Level.ERROR, message, params); + } + + public static void info(String message, Object... params) + { + logger.log(Level.INFO, message, params); + } + + public static void warn(String message, Object... params) + { + logger.log(Level.WARN, message, params); + } + + public static void debug(Object object) { + if(debugMode) + log(Level.INFO, "[DEBUG:] "+object); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java new file mode 100644 index 00000000..c90bca08 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java @@ -0,0 +1,72 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.client.resources.sounds.Sound; +import net.minecraft.network.protocol.game.ClientboundSoundPacket; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.entity.Entity; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.HashSet; +import java.util.Set; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) +public class ECSounds { + static Set registeredEvents = new HashSet<>(); + //public static final SoundEvent PIGLIN_CUTEY_ADMIRING_ITEM = registerSound("piglin_cutey.admiring_item"); + public static final SoundEvent PIGLIN_CUTEY_AMBIENT = registerSound("piglin_cutey.ambient"); + public static final SoundEvent PIGLIN_CUTEY_CELEBRATE = registerSound("piglin_cutey.celebrate"); + public static final SoundEvent PIGLIN_CUTEY_DEATH = registerSound("piglin_cutey.death"); + public static final SoundEvent PIGLIN_CUTEY_HURT = registerSound("piglin_cutey.hurt"); + public static final SoundEvent PIGLIN_CUTEY_NO = registerSound("piglin_cutey.no"); + public static final SoundEvent PIGLIN_CUTEY_TRADE = registerSound("piglin_cutey.trade"); + public static final SoundEvent PIGLIN_CUTEY_YES = registerSound("piglin_cutey.yes"); + + public static final SoundEvent NETHER_PIGMAN_AMBIENT = registerSound("nether_pigman.ambient"); + public static final SoundEvent NETHER_PIGMAN_DEATH = registerSound("nether_pigman.death"); + public static final SoundEvent NETHER_PIGMAN_HURT = registerSound("nether_pigman.hurt"); + public static final SoundEvent NETHER_PIGMAN_NO = registerSound("nether_pigman.no"); + public static final SoundEvent NETHER_PIGMAN_TRADE = registerSound("nether_pigman.trade"); + public static final SoundEvent NETHER_PIGMAN_YES = registerSound("nether_pigman.yes"); + + public static final SoundEvent NETHER_LAMBMAN_AMBIENT = registerSound("nether_lambman.ambient"); + public static final SoundEvent NETHER_LAMBMAN_DEATH = registerSound("nether_lambman.death"); + public static final SoundEvent NETHER_LAMBMAN_HURT = registerSound("nether_lambman.hurt"); + public static final SoundEvent NETHER_LAMBMAN_NO = registerSound("nether_lambman.no"); + public static final SoundEvent NETHER_LAMBMAN_TRADE = registerSound("nether_lambman.trade"); + public static final SoundEvent NETHER_LAMBMAN_YES = registerSound("nether_lambman.yes"); + + public static final SoundEvent VILLAGER_WORK_ASTROLOGIST = registerSound("villager.work_astrologist"); + public static final SoundEvent VILLAGER_WORK_BEEKEEPER = registerSound("villager.work_beekeeper"); + public static final SoundEvent VILLAGER_WORK_CARPENTER = registerSound("villager.work_carpenter"); + public static final SoundEvent VILLAGER_WORK_CHEMICAL_ENGINEER = registerSound("villager.work_chemical_engineer"); + public static final SoundEvent VILLAGER_WORK_GEOLOGIST = registerSound("villager.work_geologist"); + public static final SoundEvent VILLAGER_WORK_GLAZIER = registerSound("villager.work_glazier"); + public static final SoundEvent VILLAGER_WORK_GROWER = registerSound("villager.work_grower"); + public static final SoundEvent VILLAGER_WORK_ICER = registerSound("villager.work_icer"); + public static final SoundEvent VILLAGER_WORK_MINER = registerSound("villager.work_miner"); + + private static SoundEvent registerSound(String name) { + ResourceLocation location = new ResourceLocation(MODID, name); + SoundEvent event = new SoundEvent(location); + registeredEvents.add(event.setRegistryName(location)); + return event; + } + + @SubscribeEvent + public static void registerSounds(RegistryEvent.Register evt) { + for(SoundEvent event : registeredEvents) + evt.getRegistry().register(event); + } + + public static void PlaySoundForPlayer(Entity player, SoundEvent sound, float volume, float pitch) { + if(player instanceof ServerPlayer) + ((ServerPlayer)player).connection.send(new ClientboundSoundPacket(sound, player.getSoundSource(), + player.getX(), player.getY(), player.getZ(), volume, pitch)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java new file mode 100644 index 00000000..56d71dcd --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java @@ -0,0 +1,778 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.util.BiomeUtil; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.biome.Climate; + +import terrablender.api.ParameterUtils; + +import java.util.function.Consumer; + +public class ECOverworldBiomeBuilder { + + public ECOverworldBiomeBuilder() { + } + + private final ParameterUtils.Temperature[] TEMPERATURES = new ParameterUtils.Temperature[]{ + ParameterUtils.Temperature.ICY, + ParameterUtils.Temperature.COOL, + ParameterUtils.Temperature.NEUTRAL, + ParameterUtils.Temperature.WARM, + ParameterUtils.Temperature.HOT + }; + private final ParameterUtils.Humidity[] HUMIDITIES = new ParameterUtils.Humidity[]{ + ParameterUtils.Humidity.ARID, + ParameterUtils.Humidity.DRY, + ParameterUtils.Humidity.NEUTRAL, + ParameterUtils.Humidity.WET, + ParameterUtils.Humidity.HUMID + }; + + + private final ResourceKey[][] OCEANS = new ResourceKey[][] { + {Biomes.DEEP_FROZEN_OCEAN, Biomes.DEEP_COLD_OCEAN, Biomes.DEEP_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN, Biomes.WARM_OCEAN}, + {Biomes.FROZEN_OCEAN, Biomes.COLD_OCEAN, Biomes.OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.WARM_OCEAN} + }; + private final ResourceKey[][] ISLAND_BIOMES_EC = new ResourceKey[][] { + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, ECBiomeKeys.XANADU, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU} + }; + private final ResourceKey[][] MIDDLE_BIOMES = new ResourceKey[][] { + {Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_TAIGA, Biomes.TAIGA}, + {Biomes.PLAINS, Biomes.PLAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA}, + {Biomes.FLOWER_FOREST, Biomes.PLAINS, Biomes.FOREST, Biomes.BIRCH_FOREST, Biomes.DARK_FOREST}, + {Biomes.SAVANNA, Biomes.SAVANNA, Biomes.FOREST, Biomes.JUNGLE, Biomes.JUNGLE}, + {Biomes.DESERT, Biomes.DESERT, Biomes.DESERT, Biomes.DESERT, Biomes.DESERT} + }; + private final ResourceKey[][] MIDDLE_BIOMES_VARIANT = new ResourceKey[][] { + {Biomes.ICE_SPIKES, null, Biomes.SNOWY_TAIGA, null, null}, + {null, null, null, null, Biomes.OLD_GROWTH_PINE_TAIGA}, + {Biomes.SUNFLOWER_PLAINS, null, null, Biomes.OLD_GROWTH_BIRCH_FOREST, null}, + {null, null, Biomes.PLAINS, Biomes.SPARSE_JUNGLE, Biomes.BAMBOO_JUNGLE}, + {null, null, null, null, null} + }; + private final ResourceKey[][] MIDDLE_BIOMES_EC = new ResourceKey[][] { + {null, null, null, null, null}, + {null, null, null, null, null}, + {null, null, null, ECBiomeKeys.GINKGO_FOREST, ECBiomeKeys.GINKGO_FOREST}, + {ECBiomeKeys.JADEITE_DESERT, null, null, null, null}, + {ECBiomeKeys.JADEITE_DESERT, ECBiomeKeys.JADEITE_DESERT, ECBiomeKeys.AZURE_DESERT, ECBiomeKeys.AZURE_DESERT, ECBiomeKeys.AZURE_DESERT} + }; + private final ResourceKey[][] MIDDLE_BIOMES_VARIANT_EC = new ResourceKey[][] { + {null, null, null, null, null}, + {null, ECBiomeKeys.PETUNIA_PLAINS, null, null, null}, + {null, ECBiomeKeys.PETUNIA_PLAINS, null, null, null}, + {null, null, null, null, null}, + {null, null, null, null, null} + }; + private final ResourceKey[][] PLATEAU_BIOMES = new ResourceKey[][] { + {Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA}, + {Biomes.MEADOW, Biomes.MEADOW, Biomes.FOREST, Biomes.TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA}, + {Biomes.MEADOW, Biomes.MEADOW, Biomes.MEADOW, Biomes.MEADOW, Biomes.DARK_FOREST}, + {Biomes.SAVANNA_PLATEAU, Biomes.SAVANNA_PLATEAU, Biomes.FOREST, Biomes.FOREST, Biomes.JUNGLE}, + {Biomes.BADLANDS, Biomes.BADLANDS, Biomes.BADLANDS, Biomes.WOODED_BADLANDS, Biomes.WOODED_BADLANDS} + }; + private final ResourceKey[][] PLATEAU_BIOMES_VARIANT = new ResourceKey[][] { + {Biomes.ICE_SPIKES, null, null, null, null}, + {null, null, Biomes.MEADOW, Biomes.MEADOW, Biomes.OLD_GROWTH_PINE_TAIGA}, + {null, null, Biomes.FOREST, Biomes.BIRCH_FOREST, null}, + {null, null, null, null, null}, + {Biomes.ERODED_BADLANDS, Biomes.ERODED_BADLANDS, null, null, null} + }; + private final ResourceKey[][] EXTREME_HILLS = new ResourceKey[][] { + {Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {null, null, null, null, null}, + {null, null, null, null, null} + }; + + + public void addBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addOffCoastBiomes(biomeRegistry, mapper); + this.addInlandBiomes(biomeRegistry, mapper); + this.addUndergroundBiomes(biomeRegistry, mapper); + } + + private void addOffCoastBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.WARM.parameter(), ParameterUtils.Temperature.HOT.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN); + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.COOL.parameter(), ParameterUtils.Temperature.NEUTRAL.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN); + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.WARM.parameter(), ParameterUtils.Temperature.HOT.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEAD_CRIMSON_OCEAN); + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.COOL.parameter(), ParameterUtils.Temperature.NEUTRAL.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEAD_WARPED_OCEAN); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.ICY.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + Biomes.DEEP_FROZEN_OCEAN); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.ICY.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + Biomes.FROZEN_OCEAN); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey islandBiome = this.pickECIslandBiome(biomeRegistry, i, j); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MUSHROOM_FIELDS.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + 0.0F, + islandBiome); + } + + this.addSurfaceBiome(mapper, + temperature, + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()), + 0.0F, + this.OCEANS[0][i]); + this.addSurfaceBiome(mapper, + temperature, + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()), + 0.0F, + this.OCEANS[1][i]); + } + } + + private void addInlandBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_NORMAL_ASCENDING.parameter()); + this.addPeaks(biomeRegistry, mapper, ParameterUtils.Weirdness.PEAK_NORMAL.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_NORMAL_DESCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_NORMAL_DESCENDING.parameter()); + this.addLowSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.LOW_SLICE_NORMAL_DESCENDING.parameter()); + this.addValleys(biomeRegistry, mapper, ParameterUtils.Weirdness.VALLEY.parameter()); + this.addLowSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.LOW_SLICE_VARIANT_ASCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_VARIANT_ASCENDING.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()); + this.addPeaks(biomeRegistry, mapper, ParameterUtils.Weirdness.PEAK_VARIANT.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_DESCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()); + } + + protected void addPeaks(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, extremeHillsBiome); + ResourceKey peakBiome = this.pickPeakBiome(i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addHighSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey slopeECBiome = this.pickECSlopeBiome(biomeRegistry, i, j, weirdness); + ResourceKey peakBiome = this.pickPeakBiome(i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(),ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addMidSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_2.parameter()), + weirdness, 0.0F, Biomes.STONY_SHORE); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey beachBiome = this.pickBeachBiome(biomeRegistry, i, j); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey shatteredCoastBiome = this.pickShatteredCoastBiome(biomeRegistry, i, j, weirdness); + ResourceKey slopeECBiome = this.pickECSlopeBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.MID_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, i == 0 ? slopeECBiome : plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + if (weirdness.max() < 0L) { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, beachBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + } else { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + } + + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredCoastBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + if (weirdness.max() < 0L) { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, beachBiome); + } else { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + + if (i == 0) { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + } + + } + + protected void addLowSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_2.parameter()), + weirdness, 0.0F, Biomes.STONY_SHORE); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey beachBiome = this.pickBeachBiome(biomeRegistry, i, j); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey shatteredCoastBiome = this.pickShatteredCoastBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_3.parameter(), ParameterUtils.Erosion.EROSION_4.parameter()), + weirdness, 0.0F, beachBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredCoastBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, beachBiome); + if (i == 0) { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + } + + } + + protected void addValleys(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, weirdness.max() < 0L ? Biomes.STONY_SHORE : Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, weirdness.max() < 0L ? Biomes.STONY_SHORE : Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_5.parameter()), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_5.parameter()), weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(),ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addUndergroundBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addUndergroundBiome(biomeRegistry, mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_4.parameter(), ParameterUtils.Erosion.EROSION_6.parameter()), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_VARIANT_ASCENDING.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.125F, ECBiomeKeys.VOLCANIC_CAVES); + this.addUndergroundBiome(biomeRegistry, mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_4.parameter(), ParameterUtils.Erosion.EROSION_6.parameter()), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_VARIANT_ASCENDING.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.05F, ECBiomeKeys.VOLCANIC_CAVES); + + this.addUndergroundBiome(biomeRegistry, mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(0.8F, 1.0F), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.0F, + Biomes.DRIPSTONE_CAVES + ); + this.addUndergroundBiome(biomeRegistry, mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + Climate.Parameter.span(0.7F, 1.0F), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.0F, + Biomes.LUSH_CAVES + ); + } + + protected ResourceKey pickECIslandBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex) { + return BiomeUtil.biomeOrFallback(biomeRegistry, this.ISLAND_BIOMES_EC[temperatureIndex][humidityIndex], Biomes.MUSHROOM_FIELDS); + } + + protected ResourceKey pickVanillaMiddleBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (weirdness.max() < 0L) { + return this.MIDDLE_BIOMES[temperatureIndex][humidityIndex]; + } else { + ResourceKey variantBiome = this.MIDDLE_BIOMES_VARIANT[temperatureIndex][humidityIndex]; + return variantBiome == null ? this.MIDDLE_BIOMES[temperatureIndex][humidityIndex] : variantBiome; + } + } + + protected ResourceKey pickECMiddleBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey middleBiome = BiomeUtil.biomeOrFallback(biomeRegistry, this.MIDDLE_BIOMES_EC[temperatureIndex][humidityIndex], this.MIDDLE_BIOMES[temperatureIndex][humidityIndex]); + return weirdness.max() < 0L ? middleBiome : BiomeUtil.biomeOrFallback(biomeRegistry, this.MIDDLE_BIOMES_VARIANT_EC[temperatureIndex][humidityIndex], middleBiome); + } + + protected ResourceKey pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + return temperatureIndex == 0 ? this.pickECSlopeBiome(biomeRegistry, temperatureIndex, humidityIndex, weirdness) : this.pickECMiddleBiome(biomeRegistry, temperatureIndex, humidityIndex, weirdness); + } + + protected ResourceKey maybePickShatteredBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness, ResourceKey extremeHillsBiome) { + return temperatureIndex > 1 && humidityIndex < 4 && weirdness.max() >= 0L ? Biomes.WINDSWEPT_SAVANNA : extremeHillsBiome; + } + + protected ResourceKey pickShatteredCoastBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey biome = weirdness.max() >= 0L ? this.pickVanillaMiddleBiome(temperatureIndex, humidityIndex, weirdness) : this.pickBeachBiome(biomeRegistry, temperatureIndex, humidityIndex); + return this.maybePickShatteredBiome(temperatureIndex, humidityIndex, weirdness, biome); + } + + protected ResourceKey pickBeachBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex) { + if (temperatureIndex == 0) { + return Biomes.SNOWY_BEACH; + } + if (temperatureIndex >= 4 && humidityIndex >= 2) { + return BiomeUtil.biomeOrFallback(biomeRegistry, ECBiomeKeys.GOLDEN_BEACH, Biomes.DESERT); + } + return temperatureIndex >= 4 ? Biomes.DESERT : Biomes.BEACH; + } + + protected ResourceKey pickBadlandsBiome(int humidityIndex, Climate.Parameter weirdness) { + if (humidityIndex < 2) { + return weirdness.max() < 0L ? Biomes.ERODED_BADLANDS : Biomes.BADLANDS; + } else { + return humidityIndex < 3 ? Biomes.BADLANDS : Biomes.WOODED_BADLANDS; + } + } + + protected ResourceKey pickPlateauBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (weirdness.max() < 0L) { + return this.PLATEAU_BIOMES[temperatureIndex][humidityIndex]; + } + ResourceKey biome = this.PLATEAU_BIOMES_VARIANT[temperatureIndex][humidityIndex]; + return biome == null ? this.PLATEAU_BIOMES[temperatureIndex][humidityIndex] : biome; + } + + protected ResourceKey pickPeakBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (temperatureIndex <= 2) { + return weirdness.max() < 0L ? Biomes.JAGGED_PEAKS : Biomes.FROZEN_PEAKS; + } else { + return temperatureIndex <= 3 ? Biomes.STONY_PEAKS : this.pickBadlandsBiome(humidityIndex, weirdness); + } + } + + protected ResourceKey pickECSlopeBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey plateauBiome = this.pickPlateauBiome(temperatureIndex, humidityIndex, weirdness); + if (temperatureIndex >= 1 && weirdness.min() > Climate.quantizeCoord(0.5F)) { + return BiomeUtil.biomeOrFallback(biomeRegistry, ECBiomeKeys.KARST_HILLS, plateauBiome); + } + return plateauBiome; + } + + protected ResourceKey pickVanillaExtremeHillsBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey biome = this.EXTREME_HILLS[temperatureIndex][humidityIndex]; + return biome == null ? this.pickVanillaMiddleBiome(temperatureIndex, humidityIndex, weirdness) : biome; + } + + protected void addSurfaceBiome(Consumer>> mapper, Climate.Parameter temperature, Climate.Parameter humidity, Climate.Parameter continentalness, Climate.Parameter erosion, Climate.Parameter weirdness, float offset, ResourceKey biome) { + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, ParameterUtils.Depth.SURFACE.parameter(), weirdness, offset), biome)); + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, ParameterUtils.Depth.FLOOR.parameter(), weirdness, offset), biome)); + } + + protected void addUndergroundBiome(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter temperature, Climate.Parameter humidity, Climate.Parameter continentalness, Climate.Parameter erosion, Climate.Parameter weirdness, Climate.Parameter depth, float offset, ResourceKey biome) { + if (BiomeUtil.isKeyRegistered(biomeRegistry, biome)) { + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, depth, weirdness, offset), biome)); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java new file mode 100644 index 00000000..ea37b48b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECTrades.java @@ -0,0 +1,550 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.minecraft.core.Registry; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.npc.VillagerDataHolder; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerTrades.ItemListing; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.*; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.level.ItemLike; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Random; + +public class ECTrades { + public static final int DEFAULT_SUPPLY = 12; + public static final int COMMON_ITEMS_SUPPLY = 16; + public static final int CURRENCY_EXCHANGE_SUPPLY = 32; + public static final int UNCOMMON_ITEMS_SUPPLY = 6; + public static final int ONLY_SUPPLY_ONCE = 1; + + public static final int XP_LEVEL_1_SELL = 1; + public static final int XP_LEVEL_1_BUY = 2; + public static final int XP_LEVEL_2_SELL = 5; + public static final int XP_LEVEL_2_BUY = 10; + public static final int XP_LEVEL_3_SELL = 10; + public static final int XP_LEVEL_3_BUY = 20; + public static final int XP_LEVEL_4_SELL = 15; + public static final int XP_LEVEL_4_BUY = 30; + public static final int XP_LEVEL_5_TRADE = 30; + + public static final float LOW_TIER_PRICE_MULTIPLIER = 0.05F; + public static final float HIGH_TIER_PRICE_MULTIPLIER = 0.2F; + + public static final Int2ObjectMap PIGLIN_CUTEY_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.FIRE_CHARGE), 3, 1, DEFAULT_SUPPLY, XP_LEVEL_1_SELL), + new ItemsForGolds(new ItemStack(Items.BLAZE_ROD), 8, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_1_SELL), + new GoldForItems(Items.NETHER_BRICK, 6, DEFAULT_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.CHARCOAL), 1, 4, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForGolds(new ItemStack(Items.SPECTRAL_ARROW), 1, 12, DEFAULT_SUPPLY, XP_LEVEL_2_SELL), + new GoldForItems(Items.IRON_NUGGET, 10, DEFAULT_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new ItemsForGolds(new ItemStack(Items.STRING), 1, 8, DEFAULT_SUPPLY, XP_LEVEL_3_SELL), + new ItemsForGolds(new ItemStack(Items.SADDLE), 7, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_3_SELL), + new GoldForItems(Items.EMERALD, 1, CURRENCY_EXCHANGE_SUPPLY, XP_LEVEL_3_BUY) + }, + 4, new ItemListing[] { + new ItemsForEmeralds(new ItemStack(ECItems.WARPED_WART.asItem()), 1, 10, DEFAULT_SUPPLY, XP_LEVEL_4_SELL), + new EmeraldForItems(Items.ENDER_PEARL, 1, 4, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_4_SELL), + new ItemsAndGoldsToItems(Items.ANCIENT_DEBRIS, 1, 9, Items.NETHERITE_INGOT, 1, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_4_BUY) + }, + 5, new ItemListing[] { + new WrittenBookForEmerald( + new TranslatableComponent("book.emeraldcraft.piglin_cutey.title"), + new TranslatableComponent("entity.emeraldcraft.piglin_cutey"), + new TranslatableComponent("book.emeraldcraft.piglin_cutey.content"), + ONLY_SUPPLY_ONCE, + XP_LEVEL_5_TRADE + ), + new ItemsForEmeralds(new ItemStack(Items.PIGLIN_BANNER_PATTERN), 5, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_5_TRADE), + new EmeraldForItems(Items.QUARTZ, 12, 1, DEFAULT_SUPPLY, XP_LEVEL_5_TRADE) + } + )); + + public static final Int2ObjectMap NETHER_PIGMAN_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.MUSIC_DISC_PIGSTEP), 1, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new ItemsForDebris(new ItemStack(Items.PIGLIN_BANNER_PATTERN), 1, 1, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.PORKCHOP, 47, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.COOKED_PORKCHOP), 1, 19, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForDebris(new ItemStack(Items.COOKED_PORKCHOP), 1, 19, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new DebrisForItems(Items.NETHER_WART_BLOCK, 49, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new DebrisForTwoKindsOfItem(Items.IRON_PICKAXE, Items.GOLDEN_PICKAXE, ONLY_SUPPLY_ONCE, XP_LEVEL_3_BUY), + new GoldForItems(Items.POTATO, 4, DEFAULT_SUPPLY, XP_LEVEL_3_BUY) + } + )); + + public static final Int2ObjectMap NETHER_LAMBMAN_TRADES = new Int2ObjectOpenHashMap<>(ImmutableMap.of( + 1, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.WHITE_WOOL), 1, 31, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new ItemsForDebris(new ItemStack(Items.BLACK_WOOL), 1, 31, ONLY_SUPPLY_ONCE, XP_LEVEL_1_SELL), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY), + new DebrisForItems(Items.MUTTON, 33, COMMON_ITEMS_SUPPLY, XP_LEVEL_1_BUY) + }, + 2, new ItemListing[] { + new ItemsForDebris(new ItemStack(Items.COOKED_MUTTON), 1, 12, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new ItemsForDebris(new ItemStack(Items.COOKED_MUTTON), 1, 12, COMMON_ITEMS_SUPPLY, XP_LEVEL_2_SELL), + new DebrisForItems(Items.WARPED_WART_BLOCK, 43, UNCOMMON_ITEMS_SUPPLY, XP_LEVEL_2_BUY) + }, + 3, new ItemListing[] { + new DebrisForTwoKindsOfItem(Items.IRON_HOE, Items.GOLDEN_HOE, ONLY_SUPPLY_ONCE, XP_LEVEL_3_BUY), + new GoldForItems(Items.GRASS_BLOCK, 2, DEFAULT_SUPPLY, XP_LEVEL_3_BUY) + } + )); + + static class WrittenBookForEmerald implements VillagerTrades.ItemListing { + private final Component title; + private final Component author; + private final Component content; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public WrittenBookForEmerald(Component title, Component author, Component content, int maxUses, int Xp) { + this.title = title; + this.author = author; + this.content = content; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(Items.WRITTEN_BOOK); + CompoundTag compoundtag = new CompoundTag(); + compoundtag.putString(WrittenBookItem.TAG_TITLE, title.getString()); + compoundtag.putString(WrittenBookItem.TAG_AUTHOR, author.getString()); + ListTag pages = new ListTag(); + pages.add(StringTag.valueOf(content.getString())); + compoundtag.put(WrittenBookItem.TAG_PAGES, pages); + itemstack.setTag(compoundtag); + return new MerchantOffer(new ItemStack(Items.EMERALD), itemstack, this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class EmeraldForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int numberOfEmerald; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EmeraldForItems(ItemLike item, int cost, int numberOfEmerald, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.numberOfEmerald = numberOfEmerald; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.EMERALD, numberOfEmerald), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForEmeralds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int emeraldCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsForEmeralds(ItemStack itemStack, int emeraldCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.emeraldCost = emeraldCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), new ItemStack(this.itemStack.getItem(), this.numberOfItems), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class TraderHeadForEmeralds implements VillagerTrades.ItemListing { + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public TraderHeadForEmeralds(int emeraldCost, int maxUses, int Xp) { + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(Items.PLAYER_HEAD); + Player lastTradedPlayer = trader.level.getNearestPlayer(trader, 12.0D); + if(lastTradedPlayer != null) { + CompoundTag tag = itemstack.getOrCreateTag(); + tag.putString("SkullOwner", lastTradedPlayer.getDisplayName().getString()); + itemstack.setTag(tag); + } + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), itemstack, this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class EnchantedItemForEmeralds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int baseEmeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EnchantedItemForEmeralds(Item item, int baseEmeraldCost, int maxUses, int Xp) { + this.itemStack = new ItemStack(item); + this.baseEmeraldCost = baseEmeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + public MerchantOffer getOffer(Entity trader, Random rand) { + int i = 5 + rand.nextInt(15); + ItemStack itemstack = EnchantmentHelper.enchantItem(rand, new ItemStack(this.itemStack.getItem()), i, false); + int j = Math.min(this.baseEmeraldCost + i, 64); + return new MerchantOffer(new ItemStack(Items.EMERALD, j), itemstack, this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsAndEmeraldsToItems implements VillagerTrades.ItemListing { + private final ItemStack fromItem; + private final int fromCount; + private final int emeraldCost; + private final ItemStack toItem; + private final int toCount; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsAndEmeraldsToItems(ItemLike forItem, int fromCount, int emeraldCost, Item toItem, int toCount, int maxUses, int Xp) { + this.fromItem = new ItemStack(forItem); + this.fromCount = fromCount; + this.emeraldCost = emeraldCost; + this.toItem = new ItemStack(toItem); + this.toCount = toCount; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), new ItemStack(this.fromItem.getItem(), this.fromCount), new ItemStack(this.toItem.getItem(), this.toCount), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class SuspisciousStewForEmerald implements VillagerTrades.ItemListing { + final MobEffect effect; + final int duration; + final int maxUses; + final int xp; + private final float priceMultiplier; + + public SuspisciousStewForEmerald(MobEffect effect, int duration, int maxUses, int xp) { + this.effect = effect; + this.duration = duration; + this.maxUses = maxUses; + this.xp = xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(Items.SUSPICIOUS_STEW, 1); + SuspiciousStewItem.saveMobEffect(itemstack, this.effect, this.duration); + return new MerchantOffer(new ItemStack(Items.EMERALD, 1), itemstack, this.maxUses, this.xp, this.priceMultiplier); + } + } + + static class EmeraldsForVillagerTypeItem implements VillagerTrades.ItemListing { + private final Map trades; + private final int cost; + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public EmeraldsForVillagerTypeItem(int cost, int emeraldCost, int maxUses, int Xp, Map trades) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> { + throw new IllegalStateException("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType)); + }); + this.trades = trades; + this.cost = cost; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(Entity trader, Random rand) { + if (trader instanceof VillagerDataHolder) { + ItemStack itemstack = new ItemStack(this.trades.get(((VillagerDataHolder)trader).getVillagerData().getType()), this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.EMERALD, emeraldCost), this.maxUses, this.Xp, priceMultiplier); + } else { + return null; + } + } + } + + static class VillagerTypeItemForEmeralds implements VillagerTrades.ItemListing { + private final Map trades; + private final int numberOfItems; + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public VillagerTypeItemForEmeralds(int numberOfItems, int emeraldCost, int maxUses, int Xp, Map trades) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> { + throw new IllegalStateException("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType)); + }); + this.trades = trades; + this.numberOfItems = numberOfItems; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(Entity trader, Random rand) { + if (trader instanceof VillagerDataHolder) { + ItemStack itemstack = new ItemStack(this.trades.get(((VillagerDataHolder)trader).getVillagerData().getType()), this.numberOfItems); + return new MerchantOffer(new ItemStack(Items.EMERALD, emeraldCost), itemstack, this.maxUses, this.Xp, priceMultiplier); + } else { + return null; + } + } + } + + static class GoldForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public GoldForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.GOLD_INGOT), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForGolds implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int goldCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + + public ItemsForGolds(ItemStack itemStack, int goldCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.goldCost = goldCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer( + new ItemStack(Items.GOLD_INGOT, this.goldCost), + new ItemStack(this.itemStack.getItem(), this.numberOfItems), + this.maxUses, this.Xp, this.priceMultiplier + ); + } + } + + static class ItemsAndGoldsToItems implements VillagerTrades.ItemListing { + private final ItemStack fromItem; + private final int fromCount; + private final int goldCost; + private final ItemStack toItem; + private final int toCount; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public ItemsAndGoldsToItems(ItemLike forItem, int fromCount, int goldCost, Item toItem, int toCount, int maxUses, int Xp) { + this.fromItem = new ItemStack(forItem); + this.fromCount = fromCount; + this.goldCost = goldCost; + this.toItem = new ItemStack(toItem); + this.toCount = toCount; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer(new ItemStack(Items.GOLD_INGOT, this.goldCost), new ItemStack(this.fromItem.getItem(), this.fromCount), new ItemStack(this.toItem.getItem(), this.toCount), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class NetheriteForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public NetheriteForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.NETHERITE_INGOT), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class DebrisForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public DebrisForItems(ItemLike item, int cost, int maxUses, int Xp) { + this.item = item.asItem(); + this.cost = cost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.ANCIENT_DEBRIS), this.maxUses, this.Xp, this.priceMultiplier); + } + } + + static class ItemsForDebris implements VillagerTrades.ItemListing { + private final ItemStack itemStack; + private final int debrisCost; + private final int numberOfItems; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + + public ItemsForDebris(ItemStack itemStack, int debrisCost, int numberOfItems, int maxUses, int Xp) { + this.itemStack = itemStack; + this.debrisCost = debrisCost; + this.numberOfItems = numberOfItems; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + return new MerchantOffer( + new ItemStack(Items.ANCIENT_DEBRIS, this.debrisCost), + new ItemStack(this.itemStack.getItem(), this.numberOfItems), + this.maxUses, this.Xp, this.priceMultiplier + ); + } + } + + static class DebrisForTwoKindsOfItem implements VillagerTrades.ItemListing { + private final Item item1; + private final Item item2; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public DebrisForTwoKindsOfItem(ItemLike item1, ItemLike item2, int maxUses, int Xp) { + this.item1 = item1.asItem(); + this.item2 = item2.asItem(); + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, Random rand) { + ItemStack itemstack1 = new ItemStack(this.item1); + ItemStack itemstack2 = new ItemStack(this.item2); + return new MerchantOffer(itemstack1, itemstack2, new ItemStack(Items.ANCIENT_DEBRIS), this.maxUses, this.Xp, this.priceMultiplier); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java new file mode 100644 index 00000000..2f5b2ca7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECWorldGen.java @@ -0,0 +1,11 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECStructures; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraftforge.event.world.BiomeLoadingEvent; + +public class ECWorldGen { + public static void biomeModification(final BiomeLoadingEvent event) { + + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java new file mode 100644 index 00000000..7d450c9b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/NetherWarfieldFeature.java @@ -0,0 +1,32 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.NoiseColumn; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.JigsawFeature; +import net.minecraft.world.level.levelgen.feature.configurations.JigsawConfiguration; +import net.minecraft.world.level.levelgen.structure.pieces.PieceGeneratorSupplier; + +public class NetherWarfieldFeature extends JigsawFeature { + public NetherWarfieldFeature(Codec codec) { + super(codec, 60, true, false, NetherWarfieldFeature::checkLocation); + } + + @Override + public GenerationStep.Decoration step() { + return GenerationStep.Decoration.SURFACE_STRUCTURES; + } + + private static boolean checkLocation(PieceGeneratorSupplier.Context context) { + BlockPos centerOfChunk = new BlockPos((context.chunkPos().getMinBlockX() << 4) + 7, 0, (context.chunkPos().getMinBlockZ() << 4) + 7); + int landHeight = context.chunkGenerator().getBaseHeight(centerOfChunk.getX(), centerOfChunk.getZ(), Heightmap.Types.WORLD_SURFACE_WG, context.heightAccessor()); + + NoiseColumn columnOfBlocks = context.chunkGenerator().getBaseColumn(centerOfChunk.getX(), centerOfChunk.getZ(), context.heightAccessor()); + BlockState topBlock = columnOfBlocks.getBlock(landHeight); + + return topBlock.getFluidState().isEmpty(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java new file mode 100644 index 00000000..18e78a31 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterFeature.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.NoiseColumn; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.pieces.PieceGenerator; +import net.minecraft.world.level.levelgen.structure.pieces.PieceGeneratorSupplier; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; + +public class ShelterFeature extends StructureFeature { + + public ShelterFeature(Codec codec) { + super(codec, PieceGeneratorSupplier.simple(ShelterFeature::checkLocation, ShelterFeature::generatePieces)); + } + + @Override + public GenerationStep.Decoration step() { + return GenerationStep.Decoration.SURFACE_STRUCTURES; + } + + private static boolean checkLocation(PieceGeneratorSupplier.Context context) { + if(!context.validBiomeOnTop(Heightmap.Types.OCEAN_FLOOR_WG)) { + return false; + } + BlockPos centerOfChunk = new BlockPos((context.chunkPos().getMinBlockX() << 4) + 7, 0, (context.chunkPos().getMinBlockZ() << 4) + 7); + int landHeight = context.chunkGenerator().getBaseHeight(centerOfChunk.getX(), centerOfChunk.getZ(), Heightmap.Types.WORLD_SURFACE_WG, context.heightAccessor()); + + NoiseColumn columnOfBlocks = context.chunkGenerator().getBaseColumn(centerOfChunk.getX(), centerOfChunk.getZ(), context.heightAccessor()); + BlockState topBlock = columnOfBlocks.getBlock(landHeight); + + return topBlock.getFluidState().isEmpty(); + } + + private static void generatePieces(StructurePiecesBuilder builder, PieceGenerator.Context context) { + BlockPos blockpos = new BlockPos(context.chunkPos().getMinBlockX(), 90, context.chunkPos().getMinBlockZ()); + Rotation rotation = Rotation.getRandom(context.random()); + ShelterPieces.addPieces(context.structureManager(), blockpos, rotation, builder); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java new file mode 100644 index 00000000..2c0d008b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ShelterPieces.java @@ -0,0 +1,56 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECStructures; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.level.levelgen.structure.StructurePieceAccessor; +import net.minecraft.world.level.levelgen.structure.TemplateStructurePiece; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; +import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; + +import java.util.Random; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ShelterPieces { + private static final ResourceLocation SHELTER = new ResourceLocation(MODID, "shelter/piglin_cutey_shelter"); + + public static void addPieces(StructureManager structureManager, BlockPos pos, Rotation rotation, StructurePieceAccessor pieces) { + pieces.addPiece(new ShelterPieces.ShelterPiece(structureManager, SHELTER, pos, rotation)); + } + + public static class ShelterPiece extends TemplateStructurePiece { + public ShelterPiece(StructureManager structureManager, ResourceLocation location, BlockPos pos, Rotation rotation) { + super(ECStructures.SHELTER_TYPE, 0, structureManager, location, location.toString(), makeSettings(rotation), pos); + } + + public ShelterPiece(StructurePieceSerializationContext context, CompoundTag tag) { + super(ECStructures.SHELTER_TYPE, tag, context.structureManager(), (location) -> makeSettings(Rotation.valueOf(tag.getString("Rot")))); + } + + private static StructurePlaceSettings makeSettings(Rotation rotation) { + return (new StructurePlaceSettings()) + .setRotation(rotation) + .setMirror(Mirror.LEFT_RIGHT) + .setRotationPivot(new BlockPos(5, 1, 5)) + .addProcessor(BlockIgnoreProcessor.STRUCTURE_BLOCK); + } + + + @Override + protected void addAdditionalSaveData(StructurePieceSerializationContext context, CompoundTag tag) { + super.addAdditionalSaveData(context, tag); + tag.putString("Rot", this.placeSettings.getRotation().name()); + } + + @Override + protected void handleDataMarker(String function, BlockPos pos, ServerLevelAccessor level, Random random, BoundingBox sbb) { } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java new file mode 100644 index 00000000..7a3c2451 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/Villages.java @@ -0,0 +1,321 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.mixin.HeroGiftsTaskAccess; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.event.village.VillagerTradesEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Collection; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class Villages { + public static final ResourceLocation CARPENTER = new ResourceLocation(MODID, "carpenter"); + public static final ResourceLocation GLAZIER = new ResourceLocation(MODID, "glazier"); + public static final ResourceLocation MINER = new ResourceLocation(MODID, "miner"); + public static final ResourceLocation ASTROLOGIST = new ResourceLocation(MODID, "astrologist"); + public static final ResourceLocation GROWER = new ResourceLocation(MODID, "grower"); + public static final ResourceLocation BEEKEEPER = new ResourceLocation(MODID, "beekeeper"); + public static final ResourceLocation GEOLOGIST = new ResourceLocation(MODID, "geologist"); + public static final ResourceLocation ICER = new ResourceLocation(MODID, "icer"); + public static final ResourceLocation CHEMICAL_ENGINEER = new ResourceLocation(MODID, "chemical_engineer"); + + public static void init() { + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_CARPENTER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/carpenter_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GLAZIER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/glazier_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_MINER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/miner_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_ASTROLOGIST.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/astrologist_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GROWER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/grower_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_BEEKEEPER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/beekeeper_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_GEOLOGIST.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/geologist_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_ICER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/icer_gift")); + HeroGiftsTaskAccess.getGifts().put(Registers.PROF_CHEMICAL_ENGINEER.get(), new ResourceLocation(MODID, "gameplay/hero_of_the_village/chemical_engineer_gift")); + } + + @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD) + public static class Registers { + public static final DeferredRegister POINTS_OF_INTEREST = DeferredRegister.create(ForgeRegistries.POI_TYPES, MODID); + public static final DeferredRegister PROFESSIONS = DeferredRegister.create(ForgeRegistries.PROFESSIONS, MODID); + + public static final RegistryObject POI_CARPENTRY_TABLE = POINTS_OF_INTEREST.register( + "carpentry_table", () -> createPOI("carpentry_table", assembleStates(ECBlocks.WorkStation.CARPENTRY_TABLE.get())) + ); + public static final RegistryObject POI_GLASS_KILN = POINTS_OF_INTEREST.register( + "glass_kiln", () -> createPOI("glass_kiln", assembleStates(ECBlocks.WorkStation.GLASS_KILN.get())) + ); + public static final RegistryObject POI_MINERAL_TABLE = POINTS_OF_INTEREST.register( + "mineral_table", () -> createPOI("mineral_table", assembleStates(ECBlocks.WorkStation.MINERAL_TABLE.get())) + ); + public static final RegistryObject POI_CRYSTALBALL_TABLE = POINTS_OF_INTEREST.register( + "crystalball_table", () -> createPOI("crystalball_table", assembleStates(ECBlocks.WorkStation.CRYSTALBALL_TABLE.get())) + ); + public static final RegistryObject POI_FLOWER_POT = POINTS_OF_INTEREST.register( + "flower_pot", () -> createPOI("flower_pot", assembleStates(Blocks.FLOWER_POT)) + ); + public static final RegistryObject POI_SQUEEZER = POINTS_OF_INTEREST.register( + "squeezer", () -> createPOI("squeezer", assembleStates(ECBlocks.WorkStation.SQUEEZER.get())) + ); + public static final RegistryObject POI_CONTINUOUS_MINER = POINTS_OF_INTEREST.register( + "continuous_miner", () -> createPOI("continuous_miner", assembleStates(ECBlocks.WorkStation.CONTINUOUS_MINER.get())) + ); + public static final RegistryObject POI_ICE_MAKER = POINTS_OF_INTEREST.register( + "ice_maker", () -> createPOI("ice_maker", assembleStates(ECBlocks.WorkStation.ICE_MAKER.get())) + ); + public static final RegistryObject POI_MELTER = POINTS_OF_INTEREST.register( + "melter", () -> createPOI("melter", assembleStates(ECBlocks.WorkStation.MELTER.get())) + ); + + public static final RegistryObject PROF_CARPENTER = PROFESSIONS.register( + CARPENTER.getPath(), () -> createProf(CARPENTER, POI_CARPENTRY_TABLE.get(), ECSounds.VILLAGER_WORK_CARPENTER) + ); + public static final RegistryObject PROF_GLAZIER = PROFESSIONS.register( + GLAZIER.getPath(), () -> createProf(GLAZIER, POI_GLASS_KILN.get(), ECSounds.VILLAGER_WORK_GLAZIER) + ); + public static final RegistryObject PROF_MINER = PROFESSIONS.register( + MINER.getPath(), () -> createProf(MINER, POI_MINERAL_TABLE.get(), ECSounds.VILLAGER_WORK_MINER) + ); + public static final RegistryObject PROF_ASTROLOGIST = PROFESSIONS.register( + ASTROLOGIST.getPath(), () -> createProf(ASTROLOGIST, POI_CRYSTALBALL_TABLE.get(), ECSounds.VILLAGER_WORK_ASTROLOGIST) + ); + public static final RegistryObject PROF_GROWER = PROFESSIONS.register( + GROWER.getPath(), () -> createProf(GROWER, POI_FLOWER_POT.get(), ECSounds.VILLAGER_WORK_GROWER) + ); + public static final RegistryObject PROF_BEEKEEPER = PROFESSIONS.register( + BEEKEEPER.getPath(), () -> createProf(GROWER, POI_SQUEEZER.get(), ECSounds.VILLAGER_WORK_BEEKEEPER) + ); + public static final RegistryObject PROF_GEOLOGIST = PROFESSIONS.register( + GEOLOGIST.getPath(), () -> createProf(GEOLOGIST, POI_CONTINUOUS_MINER.get(), ECSounds.VILLAGER_WORK_GEOLOGIST) + ); + public static final RegistryObject PROF_ICER = PROFESSIONS.register( + ICER.getPath(), () -> createProf(ICER, POI_ICE_MAKER.get(), ECSounds.VILLAGER_WORK_ICER) + ); + public static final RegistryObject PROF_CHEMICAL_ENGINEER = PROFESSIONS.register( + CHEMICAL_ENGINEER.getPath(), () -> createProf(CHEMICAL_ENGINEER, POI_MELTER.get(), ECSounds.VILLAGER_WORK_CHEMICAL_ENGINEER) + ); + + private static Collection assembleStates(Block block) { + return block.getStateDefinition().getPossibleStates(); + } + + private static PoiType createPOI(String name, Collection block) { + return new PoiType(MODID+":"+name, ImmutableSet.copyOf(block), 1, 1); + } + + private static VillagerProfession createProf(ResourceLocation name, PoiType poi, SoundEvent sound) { + return new VillagerProfession( + name.toString(), poi, + ImmutableSet.builder().build(), + ImmutableSet.builder().build(), + sound + ); + } + } + + @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) + public static class Events { + @SubscribeEvent + public static void registerTrades(VillagerTradesEvent event) { + Int2ObjectMap> trades = event.getTrades(); + + if(CARPENTER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.STICK, 32, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldsForVillagerTypeItem(8, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_SAPLING) + .put(VillagerType.TAIGA, Items.SPRUCE_SAPLING) + .put(VillagerType.SNOW, Items.SPRUCE_SAPLING) + .put(VillagerType.DESERT, Items.JUNGLE_SAPLING) + .put(VillagerType.JUNGLE, Items.JUNGLE_SAPLING) + .put(VillagerType.SAVANNA, Items.ACACIA_SAPLING) + .put(VillagerType.SWAMP, Items.DARK_OAK_SAPLING) + .build() + )); + trades.get(1).add(new ECTrades.VillagerTypeItemForEmeralds(2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_LOG) + .put(VillagerType.TAIGA, Items.SPRUCE_LOG) + .put(VillagerType.SNOW, Items.SPRUCE_LOG) + .put(VillagerType.DESERT, Items.JUNGLE_LOG) + .put(VillagerType.JUNGLE, Items.JUNGLE_LOG) + .put(VillagerType.SAVANNA, Items.ACACIA_LOG) + .put(VillagerType.SWAMP, Items.DARK_OAK_LOG) + .build() + )); + trades.get(2).add(new ECTrades.ItemsAndEmeraldsToItems(Items.NETHER_WART_BLOCK, 1, 4, Items.NETHER_WART, 8, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.IRON_AXE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.BOOKSHELF, 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.CRAFTING_TABLE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsAndEmeraldsToItems(Items.WARPED_WART_BLOCK, 1, 4, ECItems.WARPED_WART.get(), 8, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BOWL), 1, 6, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.CHEST, 2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BEEHIVE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.JUKEBOX), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EmeraldsForVillagerTypeItem(3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_BUY, + ImmutableMap.builder() + .put(VillagerType.PLAINS, Items.OAK_SIGN) + .put(VillagerType.TAIGA, Items.SPRUCE_SIGN) + .put(VillagerType.SNOW, Items.SPRUCE_SIGN) + .put(VillagerType.DESERT, Items.JUNGLE_SIGN) + .put(VillagerType.JUNGLE, Items.JUNGLE_SIGN) + .put(VillagerType.SAVANNA, Items.ACACIA_SIGN) + .put(VillagerType.SWAMP, Items.DARK_OAK_SIGN) + .build() + )); + trades.get(5).add(new ECTrades.EnchantedItemForEmeralds(Items.DIAMOND_AXE, 12, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.NOTE_BLOCK), 4, 4, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsAndEmeraldsToItems(Items.SHULKER_SHELL, 1, 8, Items.SHULKER_BOX, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GLAZIER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.CLAY_BALL, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.SAND, 12, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GLASS_BOTTLE), 1, 6, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.TINTED_GLASS), 1, 2, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.GLASS_PANE, 11, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.WHITE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ORANGE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.MAGENTA_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIGHT_BLUE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.YELLOW_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIME_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PINK_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GRAY_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LIGHT_GRAY_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CYAN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PURPLE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BROWN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.GREEN_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.RED_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLACK_STAINED_GLASS), 1, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DAYLIGHT_DETECTOR), 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.TERRACOTTA), 1, 2, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.ENDER_EYE, 1, 7, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.END_CRYSTAL), 11, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(MINER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_COPPER, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_IRON, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_GOLD, 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.MINECART), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.REDSTONE, 4, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.QUARTZ, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.POINTED_DRIPSTONE, 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsAndEmeraldsToItems(Items.AMETHYST_BLOCK, 1, 4, Items.AMETHYST_SHARD, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EnchantedItemForEmeralds(Items.DIAMOND_PICKAXE, 12, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.COAL_BLOCK, 2, 32, Items.DIAMOND, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.CRYING_OBSIDIAN, 1, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.NETHERITE_SCRAP, 1, 18, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(ASTROLOGIST.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SPYGLASS), 2, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BONE, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.BLAZE_POWDER, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.NETHER_SPROUTS, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.SOUL_SAND, 8, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.CHORUS_FRUIT, 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.SPIDER_EYE, 7, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DRAGON_BREATH), 9, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BROWN_MUSHROOM), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.WITHER_ROSE, 1, 17, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.COAL, 4, 52, Items.WITHER_SKELETON_SKULL, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SHULKER_SHELL), 12, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.TraderHeadForEmeralds(40, ECTrades.ONLY_SUPPLY_ONCE, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CARVED_PUMPKIN), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.DRAGON_HEAD), 36, 1, ECTrades.ONLY_SUPPLY_ONCE, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SOUL_SAND), 1, 2, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.WEEPING_VINES, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.TWISTING_VINES, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GROWER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.FLOWER_POT), 1, 2, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECBlocks.Plant.CYAN_PETUNIA.asItem()), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECBlocks.Plant.MAGENTA_PETUNIA.asItem()), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BONE, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.GLASS_PANE, 11, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.POPPY, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ORANGE_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.PINK_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.RED_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.WHITE_TULIP), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.WITHER_ROSE, 1, 17, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_ORCHID), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ALLIUM), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.SUNFLOWER, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.LILAC, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.ROSE_BUSH, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.PEONY, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LILY_OF_THE_VALLEY), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.FIRE_RESISTANCE, 100, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.WITHER, 160, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.WATER_BREATHING, 160, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.SuspisciousStewForEmerald(MobEffects.REGENERATION, 120, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(BEEKEEPER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.HONEYCOMB, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BEEHIVE), 3, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.HONEY_BOTTLE), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.HONEY_BLOCK, 2, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.ORANGE_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.PINK_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.RED_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.WHITE_TULIP, 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.HONEYCOMB_BLOCK, 1, 1, Items.HONEYCOMB, 4, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(Items.DANDELION, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.BEE), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GEOLOGIST.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.NETHERRACK, 20, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.DEEPSLATE, 16, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.CRYING_OBSIDIAN, 2, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.OBSIDIAN), 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.LAPIS_LAZULI, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.SLIME_BALL), 4, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.IRON_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.GOLD_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.COPPER_CONCENTRATE, 1, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.CALCITE), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.SMOOTH_BASALT, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.BLACKSTONE, 12, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(ICER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.PACKED_ICE, 7, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.ICE), 1, 5, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.POWDER_SNOW_BUCKET), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.SNOWBALL, 20, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.BLUE_ICE), 3, 2, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(3).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.LANTERN), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(Items.OBSIDIAN), 5, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.EnchantedItemForEmeralds(Items.LEATHER_BOOTS, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsAndEmeraldsToItems(Items.SNOWBALL, 4, 1, Items.SNOW, 4, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.SNOW), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(CHEMICAL_ENGINEER.equals(event.getType().getRegistryName())) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_EMERALD_BUCKET), 10, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BUCKET, 4, 3, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_IRON_BUCKET), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_COPPER_BUCKET), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + trades.get(3).add(new ECTrades.NetheriteForItems(Items.EMERALD_BLOCK, 10, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_3_SELL)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.FLINT, 4, 2, Items.GUNPOWDER, 4, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(4).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_GOLD_BUCKET), 4, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_SELL)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.BOTTLE), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.BannerPatterns.POTION), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java new file mode 100644 index 00000000..c792b64b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java @@ -0,0 +1,110 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; +import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.StructurePiece; +import net.minecraft.world.level.material.Material; + +import java.util.HashSet; +import java.util.Random; +import java.util.Set; +import java.util.function.Predicate; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class VolcanicCavesLavaPoolFeature extends Feature { + private static final BlockState BLACKSTONE = Blocks.BLACKSTONE.defaultBlockState(); + private static final BlockState CRYING_OBSIDIAN = Blocks.CRYING_OBSIDIAN.defaultBlockState(); + private static final BlockState MAGMA_BLOCK = Blocks.MAGMA_BLOCK.defaultBlockState(); + private static final BlockState SMOOTH_BASALT = Blocks.SMOOTH_BASALT.defaultBlockState(); + private static final BlockState OBSIDIAN = Blocks.OBSIDIAN.defaultBlockState(); + + private static final BlockState LAVA = Blocks.LAVA.defaultBlockState(); + + public VolcanicCavesLavaPoolFeature(Codec codec) { + super(codec); + } + + private static final int MAX_DEPTH = 6; + + private void doPlace(WorldGenLevel level, Set visited, BlockPos curPosition, Random random, Predicate predicate, int depth) { + for(int b = 1; b <= 6; ++b) { + int s = ((b & 4) >> 2); + int b1 = (b & 3) + s; + int y = (b1 & 1) ^ ((b1 & 2) >> 1) ^ 1; + int x = (b1 & 1) ^ y; + int z = ((b1 & 2) >> 1) ^ y; + + x *= 2 * s - 1; + y *= 2 * s - 1; + z *= 2 * s - 1; + + BlockPos blockpos1 = curPosition.offset(x, y, z); + BlockState blockstate = level.getBlockState(blockpos1); + + if(visited.contains(blockpos1)) { + continue; + } + visited.add(blockpos1); + if(random.nextInt(6) == 0) { + continue; + } + if(blockstate.is(Blocks.DEEPSLATE) || blockstate.is(Blocks.TUFF) ||blockstate.is(Blocks.STONE) || + blockstate.is(Blocks.ANDESITE) || blockstate.is(Blocks.DIORITE) || blockstate.is(Blocks.GRANITE)) { + if(depth <= MAX_DEPTH) { + doPlace(level, visited, blockpos1, random, predicate, depth + 1); + } + this.safeSetBlock(level, blockpos1, LAVA, predicate); + + for(int m = 1; m <= 5; ++m) { + int ms = ((m & 4) >> 2); + int m1 = (m & 3) + ms; + int my = (m1 & 1) ^ ((m1 & 2) >> 1) ^ 1; + int mx = (m1 & 1) ^ my; + int mz = ((m1 & 2) >> 1) ^ my; + + mx *= 2 * ms - 1; + my *= 2 * ms - 1; + mz *= 2 * ms - 1; + + BlockPos blockpos2 = blockpos1.offset(mx, my, mz); + if(level.isEmptyBlock(blockpos2) || (blockstate.is(Blocks.DEEPSLATE) && random.nextInt(3) != 0)) { + switch (random.nextInt(15)) { + case 0, 1, 2, 3, 4 -> this.safeSetBlock(level, blockpos1, OBSIDIAN, predicate); + case 5, 6, 7, 8 -> this.safeSetBlock(level, blockpos1, MAGMA_BLOCK, predicate); + case 9, 10, 11 -> this.safeSetBlock(level, blockpos1, SMOOTH_BASALT, predicate); + case 12, 13 -> this.safeSetBlock(level, blockpos1, CRYING_OBSIDIAN, predicate); + case 14 -> this.safeSetBlock(level, blockpos1, BLACKSTONE, predicate); + } + } + } + } + } + } + + public boolean place(FeaturePlaceContext context) { + Predicate predicate = Feature.isReplaceable(BlockTags.FEATURES_CANNOT_REPLACE); + BlockPos blockpos = context.origin(); + Random random = context.random(); + WorldGenLevel worldgenlevel = context.level(); + + final Set visited = new HashSet<>(); + doPlace(worldgenlevel, visited, blockpos, random, predicate, 0); + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java new file mode 100644 index 00000000..1ca8a697 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java @@ -0,0 +1,134 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; +import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraft.world.level.levelgen.structure.StructurePiece; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.storage.loot.BuiltInLootTables; + +import java.util.Random; +import java.util.function.Predicate; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ZombieVillagerRoomFeature extends Feature { + private static final ResourceLocation ZOMBIE_VILLAGER_ROOM_CHEST = new ResourceLocation(MODID, "chests/zombie_villager_room"); + + private static final BlockState AIR = Blocks.CAVE_AIR.defaultBlockState(); + private static final BlockState MOSSY_COBBLESTONE = Blocks.MOSSY_COBBLESTONE.defaultBlockState(); + private static final BlockState COBBLESTONE = Blocks.COBBLESTONE.defaultBlockState(); + + public ZombieVillagerRoomFeature(Codec codec) { + super(codec); + } + + public boolean place(FeaturePlaceContext context) { + Predicate predicate = Feature.isReplaceable(BlockTags.FEATURES_CANNOT_REPLACE); + BlockPos blockpos = context.origin(); + Random random = context.random(); + WorldGenLevel worldgenlevel = context.level(); + int halfX = random.nextInt(2) + 3; + int beginX = -halfX - 1; + int endX = halfX + 1; + int halfZ = random.nextInt(2) + 3; + int beginZ = -halfZ - 1; + int endZ = halfZ + 1; + int cnt = 0; + + for(int x = beginX; x <= endX; ++x) { + for(int y = -1; y <= 4; ++y) { + for(int z = beginZ; z <= endZ; ++z) { + BlockPos blockpos1 = blockpos.offset(x, y, z); + Material material = worldgenlevel.getBlockState(blockpos1).getMaterial(); + boolean flag = material.isSolid(); + if (y == -1 && !flag) { + return false; + } + + if (y == 4 && !flag) { + return false; + } + + if ((x == beginX || x == endX || z == beginZ || z == endZ) && y == 0 && worldgenlevel.isEmptyBlock(blockpos1) && worldgenlevel.isEmptyBlock(blockpos1.above())) { + ++cnt; + } + } + } + } + + if (cnt >= 1 && cnt <= 5) { + for(int x = beginX; x <= endX; ++x) { + for(int y = 3; y >= -1; --y) { + for(int z = beginZ; z <= endZ; ++z) { + BlockPos blockpos2 = blockpos.offset(x, y, z); + BlockState blockstate = worldgenlevel.getBlockState(blockpos2); + if (x != beginX && y != -1 && z != beginZ && x != endX && y != 4 && z != endZ) { + if (!blockstate.is(Blocks.CHEST) && !blockstate.is(Blocks.SPAWNER)) { + this.safeSetBlock(worldgenlevel, blockpos2, AIR, predicate); + } + } else if (blockpos2.getY() >= worldgenlevel.getMinBuildHeight() && !worldgenlevel.getBlockState(blockpos2.below()).getMaterial().isSolid()) { + worldgenlevel.setBlock(blockpos2, AIR, Block.UPDATE_CLIENTS); + } else if (blockstate.getMaterial().isSolid() && !blockstate.is(Blocks.CHEST)) { + if (y == -1 && random.nextInt(2) != 0) { + this.safeSetBlock(worldgenlevel, blockpos2, MOSSY_COBBLESTONE, predicate); + } else { + this.safeSetBlock(worldgenlevel, blockpos2, COBBLESTONE, predicate); + } + } + } + } + } + + for(int l3 = 0; l3 < 2; ++l3) { + for(int j4 = 0; j4 < 3; ++j4) { + int l4 = blockpos.getX() + random.nextInt(halfX * 2 + 1) - halfX; + int i5 = blockpos.getY(); + int j5 = blockpos.getZ() + random.nextInt(halfZ * 2 + 1) - halfZ; + BlockPos blockpos3 = new BlockPos(l4, i5, j5); + if (worldgenlevel.isEmptyBlock(blockpos3)) { + int j3 = 0; + + for(Direction direction : Direction.Plane.HORIZONTAL) { + if (worldgenlevel.getBlockState(blockpos3.relative(direction)).getMaterial().isSolid()) { + ++j3; + } + } + + if (j3 == 1) { + this.safeSetBlock(worldgenlevel, blockpos3, StructurePiece.reorient(worldgenlevel, blockpos3, Blocks.CHEST.defaultBlockState()), predicate); + RandomizableContainerBlockEntity.setLootTable(worldgenlevel, random, blockpos3, ZOMBIE_VILLAGER_ROOM_CHEST); + break; + } + } + } + } + + this.safeSetBlock(worldgenlevel, blockpos, Blocks.SPAWNER.defaultBlockState(), predicate); + BlockEntity blockentity = worldgenlevel.getBlockEntity(blockpos); + if (blockentity instanceof SpawnerBlockEntity) { + ((SpawnerBlockEntity)blockentity).getSpawner().setEntityId(EntityType.ZOMBIE_VILLAGER); + } else { + ECLogger.error("Failed to fetch mob spawner entity at ({}, {}, {})", blockpos.getX(), blockpos.getY(), blockpos.getZ()); + } + + return true; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECNetherBiomeRegion.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECNetherBiomeRegion.java new file mode 100644 index 00000000..a2ea1c70 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECNetherBiomeRegion.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.common.world.compat; + +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.util.BiomeUtil; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.biome.Climate; +import terrablender.api.Region; +import terrablender.api.RegionType; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECNetherBiomeRegion extends Region { + public static final ResourceLocation LOCATION = new ResourceLocation(MODID, "nether_biome_provider"); + + public ECNetherBiomeRegion(int weight) { + super(LOCATION, RegionType.NETHER, weight); + } + + @Override + public void addBiomes(Registry registry, Consumer>> mapper) { + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.NETHER_WASTES); + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(-0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.SOUL_SAND_VALLEY); + this.addBiome(mapper, Climate.Parameter.point(0.4F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.CRIMSON_FOREST); + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.375F, Biomes.WARPED_FOREST); + this.addBiome(mapper, Climate.Parameter.point(-0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.175F, Biomes.BASALT_DELTAS); + if (BiomeUtil.isKeyRegistered(registry, ECBiomeKeys.EMERY_DESERT)) { + this.addBiome(mapper, Climate.Parameter.point(-0.8F), Climate.Parameter.point(-0.8F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.125F, ECBiomeKeys.EMERY_DESERT); + } + if (BiomeUtil.isKeyRegistered(registry, ECBiomeKeys.QUARTZ_DESERT)) { + this.addBiome(mapper, Climate.Parameter.point(0.75F), Climate.Parameter.point(0.7F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.125F, ECBiomeKeys.QUARTZ_DESERT); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java new file mode 100644 index 00000000..d0f70c55 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.common.world.compat; + +import com.hexagram2021.emeraldcraft.common.world.ECOverworldBiomeBuilder; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Climate; +import terrablender.api.Region; +import terrablender.api.RegionType; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECOverworldBiomeRegion extends Region { + public static final ResourceLocation LOCATION = new ResourceLocation(MODID, "overworld_biome_provider"); + + public ECOverworldBiomeRegion(int weight) { + super(LOCATION, RegionType.OVERWORLD, weight); + } + + @Override + public void addBiomes(Registry registry, Consumer>> mapper) { + (new ECOverworldBiomeBuilder()).addBiomes(registry, mapper); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java new file mode 100644 index 00000000..de04246a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java @@ -0,0 +1,20 @@ +package com.hexagram2021.emeraldcraft.common.world.grower; + +import com.hexagram2021.emeraldcraft.common.register.ECConfiguredFeatures; +import net.minecraft.core.Holder; +import net.minecraft.world.level.block.grower.AbstractTreeGrower; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +import java.util.Random; + +public class GinkgoTreeGrower extends AbstractTreeGrower { + @Override + protected Holder> getConfiguredFeature(Random random, boolean bee) { + return switch (random.nextInt(3)) { + case 0 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_1; + case 1 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_2; + case 2 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_3; + default -> throw new AssertionError(); + }; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java new file mode 100644 index 00000000..943843d4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java @@ -0,0 +1,164 @@ +package com.hexagram2021.emeraldcraft.common.world.pools; + +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Holder; +import net.minecraft.data.worldgen.Pools; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; +import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class NetherWarfieldPools { + public static final Holder START = Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "nether_warfield/center"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield1"), 1 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/center/nether_warfield3"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + + public static void bootstrap() { + } + + static { + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/springs"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/center/spring"), 5 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/springs"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/center/spring"), 5 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/streets"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight1"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight3"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/streets/straight4"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/streets"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight1"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight2"), 2 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight3"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/streets/straight4"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/strider"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/striders/strider1"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/striders/strider2"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/strider"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/striders/strider1"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/striders/strider2"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/decor"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/decor/lamp"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/decor/candles"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/decor"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/decor/lamp"), 3 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/decor/candles"), 2 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/houses"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/small1"), 9 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/small2"), 10 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/plant"), 4 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/medium1"), 6 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/houses/farm1"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/houses"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/small1"), 10 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/small2"), 9 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/plant"), 4 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/medium1"), 6 + ), Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/houses/farm1"), 3 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "crimson_trench/villagers"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/crimson/villager"), 10 + )), + StructureTemplatePool.Projection.RIGID) + ); + Pools.register(new StructureTemplatePool( + new ResourceLocation(MODID, "warped_trench/villagers"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of( + StructurePoolElement.legacy(MODID + ":nether_warfield/warped/villager"), 10 + )), + StructureTemplatePool.Projection.RIGID) + ); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java new file mode 100644 index 00000000..d6f53ee9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java @@ -0,0 +1,846 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Noises; +import net.minecraft.world.level.levelgen.SurfaceRules; +import net.minecraft.world.level.levelgen.VerticalAnchor; + +public class ECSurfaceRules { + private static final SurfaceRules.RuleSource AIR = makeStateRule(Blocks.AIR); + private static final SurfaceRules.RuleSource BASALT = makeStateRule(Blocks.BASALT); + private static final SurfaceRules.RuleSource BEDROCK = makeStateRule(Blocks.BEDROCK); + private static final SurfaceRules.RuleSource BLACKSTONE = makeStateRule(Blocks.BLACKSTONE); + private static final SurfaceRules.RuleSource CALCITE = makeStateRule(Blocks.CALCITE); + private static final SurfaceRules.RuleSource COARSE_DIRT = makeStateRule(Blocks.COARSE_DIRT); + private static final SurfaceRules.RuleSource CRIMSON_NYLIUM = makeStateRule(Blocks.CRIMSON_NYLIUM); + private static final SurfaceRules.RuleSource CRYING_OBSIDIAN = makeStateRule(Blocks.CRYING_OBSIDIAN); + private static final SurfaceRules.RuleSource DEEPSLATE = makeStateRule(Blocks.DEEPSLATE); + private static final SurfaceRules.RuleSource DIRT = makeStateRule(Blocks.DIRT); + private static final SurfaceRules.RuleSource DRIPSTONE_BLOCK = makeStateRule(Blocks.DRIPSTONE_BLOCK); + private static final SurfaceRules.RuleSource GRASS_BLOCK = makeStateRule(Blocks.GRASS_BLOCK); + private static final SurfaceRules.RuleSource GRAVEL = makeStateRule(Blocks.GRAVEL); + private static final SurfaceRules.RuleSource ICE = makeStateRule(Blocks.ICE); + private static final SurfaceRules.RuleSource LAVA = makeStateRule(Blocks.LAVA); + private static final SurfaceRules.RuleSource MAGMA_BLOCK = makeStateRule(Blocks.MAGMA_BLOCK); + private static final SurfaceRules.RuleSource MOSS_BLOCK = makeStateRule(Blocks.MOSS_BLOCK); + private static final SurfaceRules.RuleSource MYCELIUM = makeStateRule(Blocks.MYCELIUM); + private static final SurfaceRules.RuleSource NETHER_WART_BLOCK = makeStateRule(Blocks.NETHER_WART_BLOCK); + private static final SurfaceRules.RuleSource NETHERRACK = makeStateRule(Blocks.NETHERRACK); + private static final SurfaceRules.RuleSource ORANGE_TERRACOTTA = makeStateRule(Blocks.ORANGE_TERRACOTTA); + private static final SurfaceRules.RuleSource PACKED_ICE = makeStateRule(Blocks.PACKED_ICE); + private static final SurfaceRules.RuleSource PODZOL = makeStateRule(Blocks.PODZOL); + private static final SurfaceRules.RuleSource POWDER_SNOW = makeStateRule(Blocks.POWDER_SNOW); + private static final SurfaceRules.RuleSource RED_SAND = makeStateRule(Blocks.RED_SAND); + private static final SurfaceRules.RuleSource RED_SANDSTONE = makeStateRule(Blocks.RED_SANDSTONE); + private static final SurfaceRules.RuleSource SAND = makeStateRule(Blocks.SAND); + private static final SurfaceRules.RuleSource SANDSTONE = makeStateRule(Blocks.SANDSTONE); + private static final SurfaceRules.RuleSource SNOW_BLOCK = makeStateRule(Blocks.SNOW_BLOCK); + private static final SurfaceRules.RuleSource SOUL_SAND = makeStateRule(Blocks.SOUL_SAND); + private static final SurfaceRules.RuleSource SOUL_SOIL = makeStateRule(Blocks.SOUL_SOIL); + private static final SurfaceRules.RuleSource STONE = makeStateRule(Blocks.STONE); + private static final SurfaceRules.RuleSource TERRACOTTA = makeStateRule(Blocks.TERRACOTTA); + private static final SurfaceRules.RuleSource WARPED_NYLIUM = makeStateRule(Blocks.WARPED_NYLIUM); + private static final SurfaceRules.RuleSource WARPED_WART_BLOCK = makeStateRule(Blocks.WARPED_WART_BLOCK); + private static final SurfaceRules.RuleSource WATER = makeStateRule(Blocks.WATER); + private static final SurfaceRules.RuleSource WHITE_TERRACOTTA = makeStateRule(Blocks.WHITE_TERRACOTTA); + + private static final SurfaceRules.RuleSource CRIMSON_STONE = makeStateRule(ECBlocks.Decoration.CRIMSON_STONE.get()); + private static final SurfaceRules.RuleSource WARPED_STONE = makeStateRule(ECBlocks.Decoration.WARPED_STONE.get()); + private static final SurfaceRules.RuleSource DARK_SAND = makeStateRule(ECBlocks.Decoration.DARK_SAND.get()); + private static final SurfaceRules.RuleSource AZURE_SAND = makeStateRule(ECBlocks.Decoration.AZURE_SAND.get()); + private static final SurfaceRules.RuleSource JADEITE_SAND = makeStateRule(ECBlocks.Decoration.JADEITE_SAND.get()); + private static final SurfaceRules.RuleSource EMERY_SAND = makeStateRule(ECBlocks.Decoration.EMERY_SAND.get()); + private static final SurfaceRules.RuleSource QUARTZ_SAND = makeStateRule(ECBlocks.Decoration.QUARTZ_SAND.get()); + private static final SurfaceRules.RuleSource DARK_SANDSTONE = makeStateRule(ECBlocks.Decoration.DARK_SANDSTONE.get()); + private static final SurfaceRules.RuleSource AZURE_SANDSTONE = makeStateRule(ECBlocks.Decoration.AZURE_SANDSTONE.get()); + private static final SurfaceRules.RuleSource JADEITE_SANDSTONE = makeStateRule(ECBlocks.Decoration.JADEITE_SANDSTONE.get()); + private static final SurfaceRules.RuleSource EMERY_SANDSTONE = makeStateRule(ECBlocks.Decoration.EMERY_SANDSTONE.get()); + private static final SurfaceRules.RuleSource QUARTZ_SANDSTONE = makeStateRule(ECBlocks.Decoration.QUARTZ_SANDSTONE.get()); + private static final SurfaceRules.RuleSource VITRIFIED_SAND = makeStateRule(ECBlocks.Decoration.VITRIFIED_SAND.get()); + + private static SurfaceRules.RuleSource makeStateRule(Block block) { + return SurfaceRules.state(block.defaultBlockState()); + } + + public static SurfaceRules.RuleSource overworld() { + return overworldLike(true, false, true); + } + + @SuppressWarnings("unused") + public static SurfaceRules.RuleSource vanillaOverworldLike(boolean checkAbovePreliminarySurface, boolean bedrockRoof, boolean bedrockFloor) { + SurfaceRules.ConditionSource above97_2 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(97), 2); + SurfaceRules.ConditionSource above256 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(256), 0); + SurfaceRules.ConditionSource above63_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(63), -1); + SurfaceRules.ConditionSource above74_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(74), 1); + SurfaceRules.ConditionSource above62 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(62), 0); + SurfaceRules.ConditionSource above63 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(63), 0); + SurfaceRules.ConditionSource isAtOrAboveWaterLevel = SurfaceRules.waterBlockCheck(-1, 0); + SurfaceRules.ConditionSource isAboveWaterLevel = SurfaceRules.waterBlockCheck(0, 0); + SurfaceRules.ConditionSource isUnderWaterLevel = SurfaceRules.waterStartCheck(-6, -1); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource isFrozenOcean = SurfaceRules.isBiome(Biomes.FROZEN_OCEAN, Biomes.DEEP_FROZEN_OCEAN); + SurfaceRules.ConditionSource isSteep = SurfaceRules.steep(); + SurfaceRules.ConditionSource isSandSurfaceBiomes = SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.BEACH, Biomes.SNOWY_BEACH); + SurfaceRules.ConditionSource isDesert = SurfaceRules.isBiome(Biomes.DESERT); + + SurfaceRules.ConditionSource isBandNeg = SurfaceRules.noiseCondition(Noises.SURFACE, -0.909D, -0.5454D); + SurfaceRules.ConditionSource isBandZero = SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818D, 0.1818D); + SurfaceRules.ConditionSource isBandPos = SurfaceRules.noiseCondition(Noises.SURFACE, 0.5454D, 0.909D); + + SurfaceRules.RuleSource grassSurface = SurfaceRules.sequence(SurfaceRules.ifTrue(isAboveWaterLevel, GRASS_BLOCK), DIRT); + SurfaceRules.RuleSource sandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, SANDSTONE), SAND); + SurfaceRules.RuleSource stoneLinedGravel = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, STONE), GRAVEL); + SurfaceRules.RuleSource hillAndSeaAndDesertSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_PEAKS), + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.CALCITE, -0.0125D, 0.0125D), CALCITE), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_SHORE), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), stoneLinedGravel), + STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_HILLS), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE) + ), + SurfaceRules.ifTrue(isSandSurfaceBiomes, sandstoneLinedSand), + SurfaceRules.ifTrue(isDesert, sandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.DRIPSTONE_CAVES), STONE) + ); + SurfaceRules.RuleSource smallPowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.45D, 0.58D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource largePowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.35D, 0.6D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource underSurfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, -0.5D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, -0.0625D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + smallPowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.GROVE), SurfaceRules.sequence(smallPowderSnow, DIRT)), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D),stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), DIRT), + stoneLinedGravel + ) + ), + DIRT + ); + SurfaceRules.RuleSource surfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, 0.0D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, 0.0D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.GROVE), + SurfaceRules.sequence( + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.5D), COARSE_DIRT) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D), stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), grassSurface), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.OLD_GROWTH_PINE_TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), COARSE_DIRT), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.95D), PODZOL) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.ICE_SPIKES), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.MUSHROOM_FIELDS), MYCELIUM), + grassSurface + ); + + SurfaceRules.RuleSource ruleSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WOODED_BADLANDS), + SurfaceRules.ifTrue( + above97_2, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, COARSE_DIRT), + SurfaceRules.ifTrue(isBandZero, COARSE_DIRT), + SurfaceRules.ifTrue(isBandPos, COARSE_DIRT), + grassSurface + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SWAMP), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above63), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, 0.0D), WATER) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BADLANDS, Biomes.ERODED_BADLANDS, Biomes.WOODED_BADLANDS), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above256, ORANGE_TERRACOTTA), + SurfaceRules.ifTrue( + above74_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, TERRACOTTA), + SurfaceRules.ifTrue(isBandZero, TERRACOTTA), + SurfaceRules.ifTrue(isBandPos, TERRACOTTA), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, RED_SANDSTONE), RED_SAND) + ), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), ORANGE_TERRACOTTA), + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + above63_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + above63, + SurfaceRules.ifTrue(SurfaceRules.not(above74_1), ORANGE_TERRACOTTA) + ), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue( + isHole, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isAboveWaterLevel, AIR), + SurfaceRules.ifTrue(SurfaceRules.temperature(), ICE), + WATER + ) + ) + ), + surfaceSource + ) + ) + ), + SurfaceRules.ifTrue( + isUnderWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue(isHole, WATER) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, underSurfaceSource), + SurfaceRules.ifTrue(isSandSurfaceBiomes, SurfaceRules.ifTrue(SurfaceRules.DEEP_UNDER_FLOOR, SANDSTONE)), + SurfaceRules.ifTrue(isDesert, SurfaceRules.ifTrue(SurfaceRules.VERY_DEEP_UNDER_FLOOR, SANDSTONE)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.FROZEN_PEAKS, Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN), + sandstoneLinedSand + ), + stoneLinedGravel + ) + ) + ); + + ImmutableList.Builder builder = ImmutableList.builder(); + if (bedrockRoof) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), BEDROCK)); + } + + if (bedrockFloor) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), BEDROCK)); + } + + SurfaceRules.RuleSource surfacerules$rulesource9 = SurfaceRules.ifTrue(SurfaceRules.abovePreliminarySurface(), ruleSource); + builder.add(checkAbovePreliminarySurface ? surfacerules$rulesource9 : ruleSource); + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("deepslate", VerticalAnchor.absolute(0), VerticalAnchor.absolute(8)), DEEPSLATE)); + return SurfaceRules.sequence(builder.build().toArray(SurfaceRules.RuleSource[]::new)); + } + + public static SurfaceRules.RuleSource overworldLike(boolean checkAbovePreliminarySurface, boolean bedrockRoof, boolean bedrockFloor) { + SurfaceRules.ConditionSource above97_2 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(97), 2); + SurfaceRules.ConditionSource above256 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(256), 0); + SurfaceRules.ConditionSource above63_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(63), -1); + SurfaceRules.ConditionSource above74_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(74), 1); + SurfaceRules.ConditionSource above50 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(50), 0); + SurfaceRules.ConditionSource above62 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(62), 0); + SurfaceRules.ConditionSource above63 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(63), 0); + SurfaceRules.ConditionSource above67 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(67), 0); + SurfaceRules.ConditionSource isAtOrAboveWaterLevel = SurfaceRules.waterBlockCheck(-1, 0); + SurfaceRules.ConditionSource isAboveWaterLevel = SurfaceRules.waterBlockCheck(0, 0); + SurfaceRules.ConditionSource isUnderWaterLevel = SurfaceRules.waterStartCheck(-6, -1); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource isFrozenOcean = SurfaceRules.isBiome(Biomes.FROZEN_OCEAN, Biomes.DEEP_FROZEN_OCEAN); + SurfaceRules.ConditionSource isSteep = SurfaceRules.steep(); + SurfaceRules.ConditionSource isSandSurfaceBiomes = SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.BEACH, Biomes.SNOWY_BEACH); + SurfaceRules.ConditionSource isDesert = SurfaceRules.isBiome(Biomes.DESERT); + SurfaceRules.ConditionSource isAzureDesert = SurfaceRules.isBiome(ECBiomeKeys.AZURE_DESERT); + SurfaceRules.ConditionSource isJadeiteDesert = SurfaceRules.isBiome(ECBiomeKeys.JADEITE_DESERT); + + SurfaceRules.ConditionSource isBandNeg = SurfaceRules.noiseCondition(Noises.SURFACE, -0.909D, -0.5454D); + SurfaceRules.ConditionSource isBandZero = SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818D, 0.1818D); + SurfaceRules.ConditionSource isBandPos = SurfaceRules.noiseCondition(Noises.SURFACE, 0.5454D, 0.909D); + + SurfaceRules.RuleSource grassSurface = SurfaceRules.sequence(SurfaceRules.ifTrue(isAboveWaterLevel, GRASS_BLOCK), DIRT); + SurfaceRules.RuleSource sandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, SANDSTONE), SAND); + SurfaceRules.RuleSource redSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, RED_SANDSTONE), RED_SAND); + SurfaceRules.RuleSource azureSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, AZURE_SANDSTONE), AZURE_SAND); + SurfaceRules.RuleSource jadeiteSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, JADEITE_SANDSTONE), JADEITE_SAND); + SurfaceRules.RuleSource stoneLinedGravel = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, STONE), GRAVEL); + SurfaceRules.RuleSource hillAndSeaAndDesertSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.CALCITE, -0.0125D, 0.0125D), CALCITE), + STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_SHORE), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), stoneLinedGravel), + STONE + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.WINDSWEPT_HILLS), SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE)), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.KARST_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.8D), DRIPSTONE_BLOCK), + STONE + ) + ), + SurfaceRules.ifTrue(isSandSurfaceBiomes, sandstoneLinedSand), + SurfaceRules.ifTrue(isDesert, sandstoneLinedSand), + SurfaceRules.ifTrue(isAzureDesert, azureSandstoneLinedSand), + SurfaceRules.ifTrue(isJadeiteDesert, jadeiteSandstoneLinedSand), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.GOLDEN_BEACH), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.8D), redSandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.4D, 0.8D), sandstoneLinedSand), + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, DARK_SANDSTONE), DARK_SAND) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.DRIPSTONE_CAVES), STONE) + ); + SurfaceRules.RuleSource smallPowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.45D, 0.58D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource largePowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.35D, 0.6D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource underSurfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, -0.5D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, -0.0625D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + smallPowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.GROVE), SurfaceRules.sequence(smallPowderSnow, DIRT)), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D),stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), DIRT), + stoneLinedGravel + ) + ), + DIRT + ); + SurfaceRules.RuleSource surfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, 0.0D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, 0.0D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), + SurfaceRules.sequence(SurfaceRules.ifTrue(isSteep, STONE), SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.GROVE), + SurfaceRules.sequence(largePowderSnow, SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)) + ), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.5D), COARSE_DIRT) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D), stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), grassSurface), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.OLD_GROWTH_PINE_TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), COARSE_DIRT), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.95D), PODZOL) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.ICE_SPIKES), SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.MUSHROOM_FIELDS), MYCELIUM), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.GINKGO_FOREST), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.6D), PODZOL) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.XANADU), + MOSS_BLOCK + ), + grassSurface + ); + + SurfaceRules.RuleSource ruleSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WOODED_BADLANDS), + SurfaceRules.ifTrue( + above97_2, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, COARSE_DIRT), + SurfaceRules.ifTrue(isBandZero, COARSE_DIRT), + SurfaceRules.ifTrue(isBandPos, COARSE_DIRT), + grassSurface + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SWAMP), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above63), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, 0.0D), WATER) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.XANADU), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(above50), + WATER + ), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above67), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, -0.1D), WATER), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, 0.0D, 0.05D), WATER) + ) + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BADLANDS, Biomes.ERODED_BADLANDS, Biomes.WOODED_BADLANDS), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above256, ORANGE_TERRACOTTA), + SurfaceRules.ifTrue( + above74_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, TERRACOTTA), + SurfaceRules.ifTrue(isBandZero, TERRACOTTA), + SurfaceRules.ifTrue(isBandPos, TERRACOTTA), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue(isAtOrAboveWaterLevel, redSandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), ORANGE_TERRACOTTA), + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + above63_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above63, SurfaceRules.ifTrue(SurfaceRules.not(above74_1), ORANGE_TERRACOTTA)), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue( + isHole, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isAboveWaterLevel, AIR), + SurfaceRules.ifTrue(SurfaceRules.temperature(), ICE), + WATER + ) + ) + ), + surfaceSource + ) + ) + ), + SurfaceRules.ifTrue( + isUnderWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue(isFrozenOcean, SurfaceRules.ifTrue(isHole, WATER)) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, underSurfaceSource), + SurfaceRules.ifTrue(isSandSurfaceBiomes, SurfaceRules.ifTrue(SurfaceRules.DEEP_UNDER_FLOOR, SANDSTONE)), + SurfaceRules.ifTrue(isDesert, SurfaceRules.ifTrue(SurfaceRules.VERY_DEEP_UNDER_FLOOR, SANDSTONE)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.FROZEN_PEAKS, Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN), + sandstoneLinedSand + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.DEAD_CRIMSON_OCEAN, ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, CRIMSON_STONE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.0125D, 0.0125D), MAGMA_BLOCK), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), CRYING_OBSIDIAN), + CRIMSON_STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.DEAD_WARPED_OCEAN, ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, WARPED_STONE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.025D, 0.025D), BASALT), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), GRAVEL), + WARPED_STONE + ) + ), + stoneLinedGravel + ) + ) + ); + + ImmutableList.Builder builder = ImmutableList.builder(); + if (bedrockRoof) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), BEDROCK)); + } + + if (bedrockFloor) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), BEDROCK)); + } + + SurfaceRules.RuleSource surfacerules$rulesource9 = SurfaceRules.ifTrue(SurfaceRules.abovePreliminarySurface(), ruleSource); + builder.add(checkAbovePreliminarySurface ? surfacerules$rulesource9 : ruleSource); + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("deepslate", VerticalAnchor.absolute(0), VerticalAnchor.absolute(8)), DEEPSLATE)); + return SurfaceRules.sequence(builder.build().toArray(SurfaceRules.RuleSource[]::new)); + } + + public static SurfaceRules.RuleSource nether() { + SurfaceRules.ConditionSource above31 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(31), 0); + SurfaceRules.ConditionSource above32 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(32), 0); + SurfaceRules.ConditionSource above30 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(30), 0); + SurfaceRules.ConditionSource below35 = SurfaceRules.not(SurfaceRules.yStartCheck(VerticalAnchor.absolute(35), 0)); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource bedrockLayer = SurfaceRules.yBlockCheck(VerticalAnchor.belowTop(5), 0); + SurfaceRules.ConditionSource soulSandNoised = SurfaceRules.noiseCondition(Noises.SOUL_SAND_LAYER, -0.012D); + SurfaceRules.ConditionSource gravelNoised = SurfaceRules.noiseCondition(Noises.GRAVEL_LAYER, -0.012D); + SurfaceRules.ConditionSource netherrackNoised = SurfaceRules.noiseCondition(Noises.NETHERRACK, 0.54D); + SurfaceRules.ConditionSource wartBlockNoised = SurfaceRules.noiseCondition(Noises.NETHER_WART, 1.17D); + SurfaceRules.ConditionSource netherStoneNoised = SurfaceRules.noiseCondition(Noises.NETHER_STATE_SELECTOR, 0.0D); + SurfaceRules.RuleSource gravelSource = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.PATCH, -0.012D), + SurfaceRules.ifTrue( + above30, + SurfaceRules.ifTrue(below35, GRAVEL) + )); + + return SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), + BEDROCK + ), + SurfaceRules.ifTrue( + SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), + BEDROCK + ), + SurfaceRules.ifTrue(bedrockLayer, NETHERRACK), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BASALT_DELTAS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.UNDER_CEILING, BASALT), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence(gravelSource, SurfaceRules.ifTrue(netherStoneNoised, BASALT), BLACKSTONE) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SOUL_SAND_VALLEY), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_CEILING, + SurfaceRules.sequence(SurfaceRules.ifTrue(netherStoneNoised, SOUL_SAND), SOUL_SOIL) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence(gravelSource, SurfaceRules.ifTrue(netherStoneNoised, SOUL_SAND), SOUL_SOIL) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(above32), + SurfaceRules.ifTrue(isHole, LAVA) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARPED_FOREST), + SurfaceRules.ifTrue( + SurfaceRules.not(netherrackNoised), + SurfaceRules.ifTrue(above31, SurfaceRules.sequence(SurfaceRules.ifTrue(wartBlockNoised, WARPED_WART_BLOCK), WARPED_NYLIUM)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.CRIMSON_FOREST), + SurfaceRules.ifTrue( + SurfaceRules.not(netherrackNoised), + SurfaceRules.ifTrue( + above31, + SurfaceRules.sequence( + SurfaceRules.ifTrue(wartBlockNoised, NETHER_WART_BLOCK), + CRIMSON_NYLIUM + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.NETHER_WASTES), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.ifTrue( + soulSandNoised, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(isHole), + SurfaceRules.ifTrue(above30, SurfaceRules.ifTrue(below35, SOUL_SAND)) + ), + NETHERRACK + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + above31, + SurfaceRules.ifTrue( + below35, + SurfaceRules.ifTrue( + gravelNoised, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above32, GRAVEL), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), GRAVEL) + ) + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.EMERY_DESERT), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.UNDER_CEILING, BLACKSTONE), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, SurfaceRules.sequence( + gravelSource, + SurfaceRules.ifTrue( + netherStoneNoised, EMERY_SAND + ), + EMERY_SANDSTONE) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.QUARTZ_DESERT), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_CEILING, + SurfaceRules.sequence( + SurfaceRules.ifTrue(netherrackNoised, VITRIFIED_SAND), + NETHERRACK + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence( + gravelSource, + SurfaceRules.ifTrue( + netherStoneNoised, QUARTZ_SAND + ), + QUARTZ_SANDSTONE + ) + ) + ) + ), + NETHERRACK + ); + } + + private static SurfaceRules.ConditionSource surfaceNoiseAbove(double threshold) { + return SurfaceRules.noiseCondition(Noises.SURFACE, threshold / 8.25D, Double.MAX_VALUE); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java new file mode 100644 index 00000000..441102f6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.*; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.monster.AbstractSkeleton; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(AbstractSkeleton.class) +public class AbstractSkeletonMixin { + @Inject(method = "registerGoals", at = @At(value = "TAIL")) + protected void registerNetherVillagerGoals(CallbackInfo info) { + ((AbstractSkeleton)(Object)this).targetSelector.addGoal(4, new NearestAttackableTargetGoal<>((AbstractSkeleton)(Object)this, NetherPigmanEntity.class, true)); + ((AbstractSkeleton)(Object)this).targetSelector.addGoal(4, new NearestAttackableTargetGoal<>((AbstractSkeleton)(Object)this, NetherLambmanEntity.class, true)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java new file mode 100644 index 00000000..7fde8aa9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.ai.behavior.GiveGiftToHero; +import net.minecraft.world.entity.npc.VillagerProfession; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(GiveGiftToHero.class) +public interface HeroGiftsTaskAccess { + @Accessor("GIFTS") + static Map getGifts() { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 00000000..48808a47 --- /dev/null +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1,15 @@ +public net.minecraft.world.level.block.FireBlock m_53444_(Lnet/minecraft/world/level/block/Block;II)V #setFlammable + +public-f net.minecraft.world.item.AxeItem f_150683_ #STRIPPABLES +public-f net.minecraft.world.item.HoeItem f_41332_ #TILLABLES +public-f net.minecraft.world.item.ShovelItem f_43110_ #FLATTENABLES + + +public net.minecraft.world.entity.npc.VillagerType f_35827_ #BY_BIOME +public net.minecraft.world.level.levelgen.feature.TreeFeature m_160510_(Lnet/minecraft/world/level/WorldGenLevel;Ljava/util/Random;Lnet/minecraft/core/BlockPos;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;Lnet/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration;)Z #doPlace +public net.minecraft.data.worldgen.biome.Biomes f_127323_ #TO_NAME + +public net.minecraft.world.entity.vehicle.Boat f_38281_ #lastYd +public net.minecraft.world.entity.vehicle.Boat f_38279_ #status + +public net.minecraft.data.worldgen.StructureFeatures * #All Structure Features \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 00000000..7c430c07 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,70 @@ +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="[40,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. +# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. +license="All rights reserved" +# A URL to refer people to when problems occur with this mod +#issueTrackerURL="https://change.me.to.your.issue.tracker.example.invalid/" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="emeraldcraft" #mandatory +# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it +# ${file.jarVersion} will substitute the value of the Implementation-Version as read from the mod's JAR file metadata +# see the associated build.gradle script for how to populate this completely automatically during a build +version="${file.jarVersion}" #mandatory + # A display name for the mod +displayName="Emerald Craft Mod" #mandatory +# A URL to query for updates for this mod. See the JSON update specification https://mcforge.readthedocs.io/en/latest/gettingstarted/autoupdate/ +#updateJSONURL="https://change.me.example.invalid/updates.json" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +#displayURL="https://change.me.to.your.mods.homepage.example.invalid/" #optional +# A file name (in the root of the mod JAR) containing a logo for display +logoFile="logo.png" #optional +# A text field displayed in the mod UI +credits="Liu Dongyu" #optional +# A text field displayed in the mod UI +authors="Hexagram" #optional +# The description text for the mod (multi line!) (#mandatory) +description=''' +More crafts, biomes, piglin girls, and cute villagers! + +I love villagers in minecraft. I hope so do you. And I also love piglins -- just because they look like girls with head covers! + +With this mod, you can trade many other things with villagers, and with piglin-cutey, a new mob in the nether. + +You can also do the emerald craft, the gold craft, and even craft some "trash" into building material to decorate your house with this mod! +''' +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. +[[dependencies.emeraldcraft]] #optional + # the modid of the dependency + modId="forge" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[40,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="NONE" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" +# Here's another dependency +[[dependencies.emeraldcraft]] + modId="minecraft" + mandatory=true + versionRange="[1.18.2,1.19)" + ordering="NONE" + side="BOTH" + +[[dependencies.emeraldcraft]] + modId="terrablender" + mandatory=true + versionRange="[1.1.0.99,)" + ordering="NONE" + side="BOTH" diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json new file mode 100644 index 00000000..cae32ec7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/azure_sand" + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/azure_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json new file mode 100644 index 00000000..c7858402 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json new file mode 100644 index 00000000..8e07a79a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json new file mode 100644 index 00000000..dced3f6a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/azure_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json new file mode 100644 index 00000000..d28548ce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/azure_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/azure_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json new file mode 100644 index 00000000..91439c92 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/blue_nether_brick_slab" + }, + "type=double": { + "model": "emeraldcraft:block/blue_nether_bricks" + }, + "type=top": { + "model": "emeraldcraft:block/blue_nether_brick_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json new file mode 100644 index 00000000..95b8721d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/blue_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/blue_nether_brick_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json new file mode 100644 index 00000000..448a582a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/blue_nether_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json new file mode 100644 index 00000000..aed20c20 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/blue_nether_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/blue_nether_bricks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json b/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json new file mode 100644 index 00000000..74a7a332 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/carpentry_table.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "emeraldcraft:block/carpentry_table", + "y": 90 + }, + "facing=north": { + "model": "emeraldcraft:block/carpentry_table" + }, + "facing=south": { + "model": "emeraldcraft:block/carpentry_table", + "y": 180 + }, + "facing=west": { + "model": "emeraldcraft:block/carpentry_table", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json b/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json new file mode 100644 index 00000000..5edb981f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/continuous_miner.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "emeraldcraft:block/continuous_miner", + "y": 90 + }, + "facing=north": { + "model": "emeraldcraft:block/continuous_miner" + }, + "facing=south": { + "model": "emeraldcraft:block/continuous_miner", + "y": 180 + }, + "facing=west": { + "model": "emeraldcraft:block/continuous_miner", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json new file mode 100644 index 00000000..eb044cab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/crimson_cobblestone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json new file mode 100644 index 00000000..51a4718c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/crimson_cobblestone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/crimson_cobblestone" + }, + "type=top": { + "model": "emeraldcraft:block/crimson_cobblestone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..1a0286e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_cobblestone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json new file mode 100644 index 00000000..fc927cce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_cobblestone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_cobblestone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json new file mode 100644 index 00000000..86804ad5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone.json @@ -0,0 +1,20 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/crimson_stone" + }, + { + "model": "emeraldcraft:block/crimson_stone_mirrored" + }, + { + "model": "emeraldcraft:block/crimson_stone", + "y": 180 + }, + { + "model": "emeraldcraft:block/crimson_stone_mirrored", + "y": 180 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json new file mode 100644 index 00000000..73f50c81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/crimson_stone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/crimson_stone" + }, + "type=top": { + "model": "emeraldcraft:block/crimson_stone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json new file mode 100644 index 00000000..b498e24f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/crimson_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/crimson_stone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json new file mode 100644 index 00000000..89b13712 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crimson_stone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/crimson_stone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json b/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json new file mode 100644 index 00000000..ea4cda39 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/crystalball_table.json @@ -0,0 +1,52 @@ +{ + "variants": { + "exp_count=0": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=1": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=2": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=3": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=4": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=5": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=6": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=7": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=8": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=9": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=10": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=11": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=12": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=13": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=14": { + "model": "emeraldcraft:block/crystalball_table" + }, + "exp_count=15": { + "model": "emeraldcraft:block/crystalball_table" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json new file mode 100644 index 00000000..0cb79b3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..2c0d74b1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone.json new file mode 100644 index 00000000..e2cb0020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..41c7ec3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_dark_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json new file mode 100644 index 00000000..4d9d701b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..44eb3543 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json new file mode 100644 index 00000000..2d754ef5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..6dd22c31 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json new file mode 100644 index 00000000..8c7f68cf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..76d35a35 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/cyan_petunia.json new file mode 100644 index 00000000..aa75d5fa --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cyan_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json new file mode 100644 index 00000000..5766d2ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/dark_sand" + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json new file mode 100644 index 00000000..0286d6d4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json new file mode 100644 index 00000000..53d2b031 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/dark_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json new file mode 100644 index 00000000..1cd19ed4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json new file mode 100644 index 00000000..39d8ddfc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json new file mode 100644 index 00000000..22956316 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/diamond_slab" + }, + "type=double": { + "model": "minecraft:block/diamond_block" + }, + "type=top": { + "model": "emeraldcraft:block/diamond_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json new file mode 100644 index 00000000..2689dda9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/diamond_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/diamond_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/diamond_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json new file mode 100644 index 00000000..e823e748 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/diamond_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/diamond_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json new file mode 100644 index 00000000..c93d6e94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/emerald_slab" + }, + "type=double": { + "model": "minecraft:block/emerald_block" + }, + "type=top": { + "model": "emeraldcraft:block/emerald_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json new file mode 100644 index 00000000..17a31205 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emerald_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emerald_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/emerald_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json new file mode 100644 index 00000000..fda9fdaf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emerald_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emerald_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json new file mode 100644 index 00000000..075b4796 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/emery_sand" + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/emery_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json new file mode 100644 index 00000000..605583a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json new file mode 100644 index 00000000..50be7e1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json new file mode 100644 index 00000000..c59558d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/emery_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json new file mode 100644 index 00000000..074f5716 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/emery_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/emery_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_button.json new file mode 100644 index 00000000..caeef2bf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button" + }, + "face=floor,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json new file mode 100644 index 00000000..4f767052 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_hinge", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_hinge", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json new file mode 100644 index 00000000..667763e3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json new file mode 100644 index 00000000..1c3eee93 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json new file mode 100644 index 00000000..aa88326d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_leaves" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json new file mode 100644 index 00000000..adaecf50 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/ginkgo_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/ginkgo_log" + }, + "axis=z": { + "model": "emeraldcraft:block/ginkgo_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json new file mode 100644 index 00000000..903ac87a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_planks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json new file mode 100644 index 00000000..f8e29fa9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "emeraldcraft:block/ginkgo_pressure_plate" + }, + "powered=true": { + "model": "emeraldcraft:block/ginkgo_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json new file mode 100644 index 00000000..6afeb12a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json new file mode 100644 index 00000000..f8149c94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json new file mode 100644 index 00000000..ca0088d3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/ginkgo_slab" + }, + "type=double": { + "model": "emeraldcraft:block/ginkgo_planks" + }, + "type=top": { + "model": "emeraldcraft:block/ginkgo_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json new file mode 100644 index 00000000..aebf9961 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json new file mode 100644 index 00000000..47ac8117 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json new file mode 100644 index 00000000..f8149c94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json new file mode 100644 index 00000000..786397f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/ginkgo_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/ginkgo_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/ginkgo_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json b/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json new file mode 100644 index 00000000..a4018ce1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/glass_kiln.json @@ -0,0 +1,34 @@ +{ + "variants": { + "facing=east,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 90 + }, + "facing=east,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 90 + }, + "facing=north,lit=false": { + "model": "emeraldcraft:block/glass_kiln" + }, + "facing=north,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on" + }, + "facing=south,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 180 + }, + "facing=south,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 180 + }, + "facing=west,lit=false": { + "model": "emeraldcraft:block/glass_kiln", + "y": 270 + }, + "facing=west,lit=true": { + "model": "emeraldcraft:block/glass_kiln_on", + "y": 270 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json new file mode 100644 index 00000000..0998e276 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/gold_slab" + }, + "type=double": { + "model": "minecraft:block/gold_block" + }, + "type=top": { + "model": "emeraldcraft:block/gold_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json new file mode 100644 index 00000000..4c9895e5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/gold_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/gold_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/gold_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json new file mode 100644 index 00000000..f7ef51b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/gold_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/gold_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json b/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json new file mode 100644 index 00000000..467d5489 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ice_maker.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ice_maker" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json new file mode 100644 index 00000000..62982278 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/iron_slab" + }, + "type=double": { + "model": "minecraft:block/iron_block" + }, + "type=top": { + "model": "emeraldcraft:block/iron_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json new file mode 100644 index 00000000..5c4aed90 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/iron_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/iron_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/iron_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json new file mode 100644 index 00000000..980a0e9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/iron_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/iron_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json new file mode 100644 index 00000000..fee12fd9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/jadeite_sand" + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/jadeite_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json new file mode 100644 index 00000000..31e1fbbc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json new file mode 100644 index 00000000..2a00dbc5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..287a3e98 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/jadeite_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json new file mode 100644 index 00000000..0382deec --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/jadeite_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/jadeite_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json new file mode 100644 index 00000000..d244fc4a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/lapis_slab" + }, + "type=double": { + "model": "minecraft:block/lapis_block" + }, + "type=top": { + "model": "emeraldcraft:block/lapis_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json new file mode 100644 index 00000000..51ecbbcb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lapis_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lapis_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/lapis_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json new file mode 100644 index 00000000..2e395aae --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lapis_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lapis_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json new file mode 100644 index 00000000..1a21f806 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/magenta_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/melter.json b/src/main/resources/assets/emeraldcraft/blockstates/melter.json new file mode 100644 index 00000000..572a1ca5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/melter.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/melter" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json b/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json new file mode 100644 index 00000000..56548fe3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/mineral_table.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/mineral_table" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json new file mode 100644 index 00000000..0adb18ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/netherite_slab" + }, + "type=double": { + "model": "minecraft:block/netherite_block" + }, + "type=top": { + "model": "emeraldcraft:block/netherite_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json new file mode 100644 index 00000000..6da03ebd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/netherite_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/netherite_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/netherite_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json new file mode 100644 index 00000000..e7df41de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/netherite_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/netherite_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json new file mode 100644 index 00000000..279fa106 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_cyan_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json new file mode 100644 index 00000000..53f17563 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_ginkgo_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json new file mode 100644 index 00000000..0754ab43 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_magenta_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json new file mode 100644 index 00000000..232d610d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/quartz_sand" + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/quartz_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json new file mode 100644 index 00000000..b2a57315 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json new file mode 100644 index 00000000..aae0f5ba --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json new file mode 100644 index 00000000..5ba7a0e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/quartz_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json new file mode 100644 index 00000000..b91cd224 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/quartz_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/quartz_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json new file mode 100644 index 00000000..7610f3a8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_azure_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..4176a954 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_azure_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_azure_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_azure_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..5f806e43 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_azure_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_azure_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone.json new file mode 100644 index 00000000..8fe73357 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..f2d22772 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_dark_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..bace84c0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json new file mode 100644 index 00000000..5e7c61c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_emery_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..caad38a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_emery_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_emery_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_emery_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..f76a5e8e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_emery_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_emery_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..74556f35 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..e4caaa70 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..b334ebf5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_jadeite_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json new file mode 100644 index 00000000..717263e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_quartz_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..9f9eee2f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_quartz_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..d6a63c81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_quartz_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json b/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json new file mode 100644 index 00000000..ae7896ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/squeezer.json @@ -0,0 +1,28 @@ +{ + "variants": { + "honey_count=0": { + "model": "emeraldcraft:block/squeezer_0" + }, + "honey_count=1": { + "model": "emeraldcraft:block/squeezer_1" + }, + "honey_count=2": { + "model": "emeraldcraft:block/squeezer_1" + }, + "honey_count=3": { + "model": "emeraldcraft:block/squeezer_2" + }, + "honey_count=4": { + "model": "emeraldcraft:block/squeezer_2" + }, + "honey_count=5": { + "model": "emeraldcraft:block/squeezer_3" + }, + "honey_count=6": { + "model": "emeraldcraft:block/squeezer_3" + }, + "honey_count=7": { + "model": "emeraldcraft:block/squeezer_4" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json new file mode 100644 index 00000000..7cbcf0f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_ginkgo_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_ginkgo_log" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_ginkgo_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json new file mode 100644 index 00000000..22ce74b6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_ginkgo_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_ginkgo_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_ginkgo_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json new file mode 100644 index 00000000..2aca7a14 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/vitrified_sand" + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json new file mode 100644 index 00000000..17aa8568 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/warped_cobblestone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json new file mode 100644 index 00000000..f28ab7fb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/warped_cobblestone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/warped_cobblestone" + }, + "type=top": { + "model": "emeraldcraft:block/warped_cobblestone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json new file mode 100644 index 00000000..8d078f11 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_cobblestone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_cobblestone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json new file mode 100644 index 00000000..0e8ce065 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_cobblestone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_cobblestone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json new file mode 100644 index 00000000..dbbdfac1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone.json @@ -0,0 +1,20 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/warped_stone" + }, + { + "model": "emeraldcraft:block/warped_stone_mirrored" + }, + { + "model": "emeraldcraft:block/warped_stone", + "y": 180 + }, + { + "model": "emeraldcraft:block/warped_stone_mirrored", + "y": 180 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json new file mode 100644 index 00000000..ce9e95c4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/warped_stone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/warped_stone" + }, + "type=top": { + "model": "emeraldcraft:block/warped_stone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json new file mode 100644 index 00000000..ce680d81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/warped_stone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/warped_stone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/warped_stone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json new file mode 100644 index 00000000..2124263a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_stone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/warped_stone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json b/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json new file mode 100644 index 00000000..c608d764 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/warped_wart.json @@ -0,0 +1,16 @@ +{ + "variants": { + "age=0": { + "model": "emeraldcraft:block/warped_wart_stage0" + }, + "age=1": { + "model": "emeraldcraft:block/warped_wart_stage1" + }, + "age=2": { + "model": "emeraldcraft:block/warped_wart_stage1" + }, + "age=3": { + "model": "emeraldcraft:block/warped_wart_stage2" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/en_us.json b/src/main/resources/assets/emeraldcraft/lang/en_us.json new file mode 100644 index 00000000..32201968 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/en_us.json @@ -0,0 +1,244 @@ +{ + "language": "English", + "language.code": "en_us", + "language.region": "United States", + "itemGroup.emeraldcraft": "Emerald Craft", + "emeraldcraft.config.title": "", + + "block.emeraldcraft.emerald_slab": "Emerald Slab", + "block.emeraldcraft.emerald_stairs": "Emerald Stairs", + "block.emeraldcraft.emerald_wall": "Emerald Wall", + "block.emeraldcraft.diamond_slab": "Diamond Slab", + "block.emeraldcraft.diamond_stairs": "Diamond Stairs", + "block.emeraldcraft.diamond_wall": "Diamond Wall", + "block.emeraldcraft.gold_slab": "Gold Slab", + "block.emeraldcraft.gold_stairs": "Gold Stairs", + "block.emeraldcraft.gold_wall": "Gold Wall", + "block.emeraldcraft.iron_slab": "Iron Slab", + "block.emeraldcraft.iron_stairs": "Iron Stairs", + "block.emeraldcraft.iron_wall": "Iron Wall", + "block.emeraldcraft.lapis_slab": "Lapis Slab", + "block.emeraldcraft.lapis_stairs": "Lapis Stairs", + "block.emeraldcraft.lapis_wall": "Lapis Wall", + "block.emeraldcraft.netherite_slab": "Netherite Slab", + "block.emeraldcraft.netherite_stairs": "Netherite Stairs", + "block.emeraldcraft.netherite_wall": "Netherite Wall", + "block.emeraldcraft.vitrified_sand": "Vitrified Sand", + "block.emeraldcraft.dark_sand": "Dark Sand", + "block.emeraldcraft.azure_sand": "Azure Sand", + "block.emeraldcraft.quartz_sand": "Quartz Sand", + "block.emeraldcraft.jadeite_sand": "Jadeite Sand", + "block.emeraldcraft.emery_sand": "Emery Sand", + "block.emeraldcraft.dark_sandstone": "Dark Sandstone", + "block.emeraldcraft.azure_sandstone": "Azure Sandstone", + "block.emeraldcraft.quartz_sandstone": "Quartz Sandstone", + "block.emeraldcraft.jadeite_sandstone": "Jadeite Sandstone", + "block.emeraldcraft.emery_sandstone": "Emery Sandstone", + "block.emeraldcraft.smooth_dark_sandstone": "Smooth Dark Sandstone", + "block.emeraldcraft.smooth_azure_sandstone": "Smooth Azure Sandstone", + "block.emeraldcraft.smooth_quartz_sandstone": "Smooth Quartz Sandstone", + "block.emeraldcraft.smooth_jadeite_sandstone": "Smooth Jadeite Sandstone", + "block.emeraldcraft.smooth_emery_sandstone": "Smooth Emery Sandstone", + "block.emeraldcraft.cut_dark_sandstone": "Cut Dark Sandstone", + "block.emeraldcraft.cut_azure_sandstone": "Cut Azure Sandstone", + "block.emeraldcraft.cut_quartz_sandstone": "Cut Quartz Sandstone", + "block.emeraldcraft.cut_jadeite_sandstone": "Cut Jadeite Sandstone", + "block.emeraldcraft.cut_emery_sandstone": "Cut Emery Sandstone", + "block.emeraldcraft.dark_sandstone_slab": "Dark Sandstone Slab", + "block.emeraldcraft.azure_sandstone_slab": "Azure Sandstone Slab", + "block.emeraldcraft.quartz_sandstone_slab": "Quartz Sandstone Slab", + "block.emeraldcraft.jadeite_sandstone_slab": "Jadeite Sandstone Slab", + "block.emeraldcraft.emery_sandstone_slab": "Emery Sandstone Slab", + "block.emeraldcraft.smooth_dark_sandstone_slab": "Smooth Dark Sandstone Slab", + "block.emeraldcraft.smooth_azure_sandstone_slab": "Smooth Azure Sandstone Slab", + "block.emeraldcraft.smooth_quartz_sandstone_slab": "Smooth Quartz Sandstone Slab", + "block.emeraldcraft.smooth_jadeite_sandstone_slab": "Smooth Jadeite Sandstone Slab", + "block.emeraldcraft.smooth_emery_sandstone_slab": "Smooth Emery Sandstone Slab", + "block.emeraldcraft.cut_dark_sandstone_slab": "Cut Dark Sandstone Slab", + "block.emeraldcraft.cut_azure_sandstone_slab": "Cut Azure Sandstone Slab", + "block.emeraldcraft.cut_quartz_sandstone_slab": "Cut Quartz Sandstone Slab", + "block.emeraldcraft.cut_jadeite_sandstone_slab": "Cut Jadeite Sandstone Slab", + "block.emeraldcraft.cut_emery_sandstone_slab": "Cut Emery Sandstone Slab", + "block.emeraldcraft.dark_sandstone_stairs": "Dark Sandstone Stairs", + "block.emeraldcraft.azure_sandstone_stairs": "Azure Sandstone Stairs", + "block.emeraldcraft.quartz_sandstone_stairs": "Quartz Sandstone Stairs", + "block.emeraldcraft.jadeite_sandstone_stairs": "Jadeite Sandstone Stairs", + "block.emeraldcraft.emery_sandstone_stairs": "Emery Sandstone Stairs", + "block.emeraldcraft.smooth_dark_sandstone_stairs": "Smooth Dark Sandstone Stairs", + "block.emeraldcraft.smooth_azure_sandstone_stairs": "Smooth Azure Sandstone Stairs", + "block.emeraldcraft.smooth_quartz_sandstone_stairs": "Smooth Quartz Sandstone Stairs", + "block.emeraldcraft.smooth_jadeite_sandstone_stairs": "Smooth Jadeite Sandstone Stairs", + "block.emeraldcraft.smooth_emery_sandstone_stairs": "Smooth Emery Sandstone Stairs", + "block.emeraldcraft.dark_sandstone_wall": "Dark Sandstone Wall", + "block.emeraldcraft.azure_sandstone_wall": "Azure Sandstone Wall", + "block.emeraldcraft.quartz_sandstone_wall": "Quartz Sandstone Wall", + "block.emeraldcraft.jadeite_sandstone_wall": "Jadeite Sandstone Wall", + "block.emeraldcraft.emery_sandstone_wall": "Emery Sandstone Wall", + "block.emeraldcraft.carpentry_table": "Carpentry Table", + "block.emeraldcraft.glass_kiln": "Glass Kiln", + "block.emeraldcraft.mineral_table": "Mineral Table", + "block.emeraldcraft.crystalball_table": "Crystalball Table", + "block.emeraldcraft.squeezer": "Squeezer", + "block.emeraldcraft.continuous_miner": "Continuous Miner", + "block.emeraldcraft.ice_maker": "Ice Maker", + "block.emeraldcraft.melter": "Melter", + "block.emeraldcraft.blue_nether_brick_slab": "Blue Nether Brick Slab", + "block.emeraldcraft.blue_nether_brick_stairs": "Blue Nether Brick Stairs", + "block.emeraldcraft.blue_nether_brick_wall": "Blue Nether Brick Wall", + "block.emeraldcraft.blue_nether_bricks": "Blue Nether Bricks", + "block.emeraldcraft.crimson_stone_slab": "Crimson Stone Slab", + "block.emeraldcraft.crimson_stone_stairs": "Crimson Stone Stairs", + "block.emeraldcraft.crimson_stone_wall": "Crimson Stone Wall", + "block.emeraldcraft.crimson_stone": "Crimson Stone", + "block.emeraldcraft.crimson_cobblestone_slab": "Crimson Cobblestone Slab", + "block.emeraldcraft.crimson_cobblestone_stairs": "Crimson Cobblestone Stairs", + "block.emeraldcraft.crimson_cobblestone_wall": "Crimson Cobblestone Wall", + "block.emeraldcraft.crimson_cobblestone": "Crimson Cobblestone", + "block.emeraldcraft.warped_stone_slab": "Warped Stone Slab", + "block.emeraldcraft.warped_stone_stairs": "Warped Stone Stairs", + "block.emeraldcraft.warped_stone_wall": "Warped Stone Wall", + "block.emeraldcraft.warped_stone": "Warped Stone", + "block.emeraldcraft.warped_cobblestone_slab": "Warped Cobblestone Slab", + "block.emeraldcraft.warped_cobblestone_stairs": "Warped Cobblestone Stairs", + "block.emeraldcraft.warped_cobblestone_wall": "Warped Cobblestone Wall", + "block.emeraldcraft.warped_cobblestone": "Warped Cobblestone", + "block.emeraldcraft.cyan_petunia": "Cyan Petunia", + "block.emeraldcraft.magenta_petunia": "Magenta Petunia", + "block.emeraldcraft.potted_cyan_petunia": "Potted Cyan Petunia", + "block.emeraldcraft.potted_magenta_petunia": "Potted Magenta Petunia", + "block.emeraldcraft.ginkgo_sapling": "Ginkgo Sapling", + "block.emeraldcraft.potted_ginkgo_sapling": "Potted Ginkgo Sapling", + "block.emeraldcraft.ginkgo_log": "Ginkgo Log", + "block.emeraldcraft.stripped_ginkgo_log": "Stripped Ginkgo Log", + "block.emeraldcraft.ginkgo_wood": "Ginkgo Wood", + "block.emeraldcraft.stripped_ginkgo_wood": "Stripped Ginkgo Wood", + "block.emeraldcraft.ginkgo_leaves": "Ginkgo Leaves", + "block.emeraldcraft.ginkgo_planks": "Ginkgo Planks", + "block.emeraldcraft.ginkgo_stairs": "Ginkgo Stairs", + "block.emeraldcraft.ginkgo_slab": "Ginkgo Slab", + "block.emeraldcraft.ginkgo_fence": "Ginkgo Fence", + "block.emeraldcraft.ginkgo_fence_gate": "Ginkgo Fence Gate", + "block.emeraldcraft.ginkgo_door": "Ginkgo Door", + "block.emeraldcraft.ginkgo_trapdoor": "Ginkgo Trapdoor", + "block.emeraldcraft.ginkgo_pressure_plate": "Ginkgo Pressure Plate", + "block.emeraldcraft.ginkgo_button": "Ginkgo Button", + "block.emeraldcraft.ginkgo_sign": "Ginkgo Sign", + "block.emeraldcraft.ginkgo_wall_sign": "Ginkgo Wall Sign", + + "item.emeraldcraft.emerald_head": "Emerald Helmet", + "item.emeraldcraft.emerald_chest": "Emerald Chestplate", + "item.emeraldcraft.emerald_legs": "Emerald Leggings", + "item.emeraldcraft.emerald_feet": "Emerald Boots", + "item.emeraldcraft.lapis_head": "Lapis Helmet", + "item.emeraldcraft.lapis_chest": "Lapis Chestplate", + "item.emeraldcraft.lapis_legs": "Lapis Leggings", + "item.emeraldcraft.lapis_feet": "Lapis Boots", + "item.emeraldcraft.warped_wart": "Warped Wart", + "item.emeraldcraft.diamond_nugget": "Diamond Nugget", + "item.emeraldcraft.emerald_nugget": "Emerald Nugget", + "item.emeraldcraft.lapis_nugget": "Lapis Nugget", + "item.emeraldcraft.piglin_cutey_spawn_egg": "Piglin Cutey Spawn Egg", + "item.emeraldcraft.nether_pigman_spawn_egg": "Nether Pigman Spawn Egg", + "item.emeraldcraft.nether_lambman_spawn_egg": "Nether Lambman Spawn Egg", + "item.emeraldcraft.agate_apple": "Agate Apple", + "item.emeraldcraft.jade_apple": "Jade Apple", + "item.emeraldcraft.bee_banner_pattern": "Banner Pattern", + "item.emeraldcraft.bee_banner_pattern.desc": "Bee", + "item.emeraldcraft.snow_banner_pattern": "Banner Pattern", + "item.emeraldcraft.snow_banner_pattern.desc": "Snow", + "item.emeraldcraft.bottle_banner_pattern": "Banner Pattern", + "item.emeraldcraft.bottle_banner_pattern.desc": "Bottle", + "item.emeraldcraft.potion_banner_pattern": "Banner Pattern", + "item.emeraldcraft.potion_banner_pattern.desc": "Potion", + "item.emeraldcraft.rock_breaker": "Rock Breaker", + "item.emeraldcraft.melted_emerald_bucket": "Melted Emerald Bucket", + "item.emeraldcraft.melted_iron_bucket": "Melted Iron Bucket", + "item.emeraldcraft.melted_gold_bucket": "Melted Gold Bucket", + "item.emeraldcraft.melted_copper_bucket": "Melted Copper Bucket", + "item.emeraldcraft.iron_concentrate": "Iron Concentrate", + "item.emeraldcraft.gold_concentrate": "Gold Concentrate", + "item.emeraldcraft.copper_concentrate": "Copper Concentrate", + "item.emeraldcraft.ginkgo_nut": "Ginkgo nut", + "item.emeraldcraft.ginkgo_boat": "Ginkgo Boat", + + "entity.emeraldcraft.piglin_cutey": "Piglin Cutey", + "entity.emeraldcraft.nether_pigman": "Nether Pigman", + "entity.emeraldcraft.nether_lambman": "Nether Lambman", + "entity.minecraft.villager.emeraldcraft.carpenter": "Carpenter", + "entity.minecraft.villager.emeraldcraft.glazier": "Glazier", + "entity.minecraft.villager.emeraldcraft.miner": "Miner", + "entity.minecraft.villager.emeraldcraft.astrologist": "Astrologist", + "entity.minecraft.villager.emeraldcraft.grower": "Grower", + "entity.minecraft.villager.emeraldcraft.beekeeper": "Beekeeper", + "entity.minecraft.villager.emeraldcraft.geologist": "Geologist", + "entity.minecraft.villager.emeraldcraft.icer": "Icer", + "entity.minecraft.villager.emeraldcraft.chemical_engineer": "Chemical Engineer", + + "subtitles.entity.piglin_cutey.ambient": "Piglin Cutey mumbles", + "subtitles.entity.piglin_cutey.celebrate": "Piglin Cutey celebrates", + "subtitles.entity.piglin_cutey.death": "Piglin Cutey dies", + "subtitles.entity.piglin_cutey.hurt": "Piglin Cutey hurts", + "subtitles.entity.piglin_cutey.no": "Piglin Cutey disagrees", + "subtitles.entity.piglin_cutey.trade": "Piglin Cutey trades", + "subtitles.entity.piglin_cutey.yes": "Piglin Cutey agrees", + "subtitles.entity.nether_pigman.ambient": "Nether Pigman oinks", + "subtitles.entity.nether_pigman.death": "Nether Pigman dies", + "subtitles.entity.nether_pigman.hurt": "Nether Pigman hurts", + "subtitles.entity.nether_pigman.no": "Nether Pigman disagrees", + "subtitles.entity.nether_pigman.trade": "Nether Pigman trades", + "subtitles.entity.nether_pigman.yes": "Nether Pigman agrees", + "subtitles.entity.nether_lambman.ambient": "Nether Lambman baahs", + "subtitles.entity.nether_lambman.death": "Nether Lambman dies", + "subtitles.entity.nether_lambman.hurt": "Nether Lambman hurts", + "subtitles.entity.nether_lambman.no": "Nether Lambman disagrees", + "subtitles.entity.nether_lambman.trade": "Nether Lambman trades", + "subtitles.entity.nether_lambman.yes": "Nether Lambman agrees", + "subtitles.entity.villager.work_carpenter": "Carpenter works", + "subtitles.entity.villager.work_glazier": "Glazier works", + "subtitles.entity.villager.work_miner": "Miner works", + "subtitles.entity.villager.work_astrologist": "Astrologist works", + "subtitles.entity.villager.work_grower": "Grower works", + "subtitles.entity.villager.work_beekeeper": "Beekeeper works", + "subtitles.entity.villager.work_geologist": "Geologist works", + "subtitles.entity.villager.work_icer": "Icer works", + "subtitles.entity.villager.work_chemical_engineer": "Chemical Engineer works", + + "container.carpentry": "Carpentry Table", + "container.glass_kiln": "Glass Kiln", + "container.mineral_table": "Mineral Table", + "container.continuous_miner": "Continuous Miner", + "container.ice_maker": "Ice Maker", + "container.melter": "Melter", + + "biome.emeraldcraft.dead_crimson_ocean": "Dead Crimson Ocean", + "biome.emeraldcraft.dead_warped_ocean": "Dead Warped Ocean", + "biome.emeraldcraft.deep_dead_crimson_ocean": "Deep Dead Crimson Ocean", + "biome.emeraldcraft.deep_dead_warped_ocean": "Deep Dead Warped Ocean", + "biome.emeraldcraft.xanadu": "Xanadu", + "biome.emeraldcraft.ginkgo_forest": "Ginkgo Forest", + "biome.emeraldcraft.karst_hills": "Karst Hills", + "biome.emeraldcraft.petunia_plains": "Petunia Plains", + "biome.emeraldcraft.golden_beach": "Golden Beach", + "biome.emeraldcraft.azure_desert": "Azure Desert", + "biome.emeraldcraft.jadeite_desert": "Jadeite Desert", + "biome.emeraldcraft.volcanic_caves": "Volcanic Caves", + "biome.emeraldcraft.quartz_desert": "Quartz Desert", + "biome.emeraldcraft.emery_desert": "Emery Desert", + + "gui.recipebook.toggleRecipes.kilnable": "Showing Kilnable", + + "gui.emeraldcraft.glass_kiln.experience": "%s XP", + "gui.emeraldcraft.glass_kiln.time.seconds": "%ss", + "gui.emeraldcraft.melter.time.seconds": "%ss", + "gui.emeraldcraft.ice_maker.time.seconds": "%ss", + + "book.emeraldcraft.piglin_cutey.title": "One Last Thing I Need", + "book.emeraldcraft.piglin_cutey.content": "I was trapped in the nether for days. A ghast broke my portal, so I have no choice but to act like a piglin and to trade with them. Still I don't have enough obsidian to activate a portal. Would you mind help me back to the overworld?", + + "advancements.emeraldcraft.root.title": "Beginning of the `Green` Craft", + "advancements.emeraldcraft.root.description": "Obtain an Emerald", + "advancements.emeraldcraft.hard_currency.title": "`Hard` Currency", + "advancements.emeraldcraft.hard_currency.description": "Obtain an Emerald Armor", + "advancements.emeraldcraft.green_light.title": "Power of Money", + "advancements.emeraldcraft.green_light.description": "Obtain all Emerald Armors" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/zh_cn.json b/src/main/resources/assets/emeraldcraft/lang/zh_cn.json new file mode 100644 index 00000000..b741fa82 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/zh_cn.json @@ -0,0 +1,244 @@ +{ + "language": "Chinese", + "language.code": "zh_cn", + "language.region": "China", + "itemGroup.emeraldcraft": "绿宝石工艺", + "emeraldcraft.config.title": "", + + "block.emeraldcraft.emerald_slab": "绿宝石台阶", + "block.emeraldcraft.emerald_stairs": "绿宝石楼梯", + "block.emeraldcraft.emerald_wall": "绿宝石墙", + "block.emeraldcraft.diamond_slab": "钻石台阶", + "block.emeraldcraft.diamond_stairs": "钻石楼梯", + "block.emeraldcraft.diamond_wall": "钻石墙", + "block.emeraldcraft.gold_slab": "金台阶", + "block.emeraldcraft.gold_stairs": "金楼梯", + "block.emeraldcraft.gold_wall": "金墙", + "block.emeraldcraft.iron_slab": "铁台阶", + "block.emeraldcraft.iron_stairs": "铁楼梯", + "block.emeraldcraft.iron_wall": "铁墙", + "block.emeraldcraft.lapis_slab": "青金石台阶", + "block.emeraldcraft.lapis_stairs": "青金石楼梯", + "block.emeraldcraft.lapis_wall": "青金石墙", + "block.emeraldcraft.netherite_slab": "下界合金台阶", + "block.emeraldcraft.netherite_stairs": "下界合金楼梯", + "block.emeraldcraft.netherite_wall": "下界合金墙", + "block.emeraldcraft.vitrified_sand": "玻璃化的沙子", + "block.emeraldcraft.dark_sand": "黑金沙", + "block.emeraldcraft.azure_sand": "琉璃沙", + "block.emeraldcraft.quartz_sand": "石英沙", + "block.emeraldcraft.jadeite_sand": "翡翠沙", + "block.emeraldcraft.emery_sand": "金刚沙", + "block.emeraldcraft.dark_sandstone": "黑金砂岩", + "block.emeraldcraft.azure_sandstone": "琉璃砂岩", + "block.emeraldcraft.quartz_sandstone": "石英砂岩", + "block.emeraldcraft.jadeite_sandstone": "翡翠砂岩", + "block.emeraldcraft.emery_sandstone": "金刚砂岩", + "block.emeraldcraft.smooth_dark_sandstone": "平滑黑金砂岩", + "block.emeraldcraft.smooth_azure_sandstone": "平滑琉璃砂岩", + "block.emeraldcraft.smooth_quartz_sandstone": "平滑石英砂岩", + "block.emeraldcraft.smooth_jadeite_sandstone": "平滑翡翠砂岩", + "block.emeraldcraft.smooth_emery_sandstone": "平滑金刚砂岩", + "block.emeraldcraft.cut_dark_sandstone": "切制黑金砂岩", + "block.emeraldcraft.cut_azure_sandstone": "切制琉璃砂岩", + "block.emeraldcraft.cut_quartz_sandstone": "切制石英砂岩", + "block.emeraldcraft.cut_jadeite_sandstone": "切制翡翠砂岩", + "block.emeraldcraft.cut_emery_sandstone": "切制金刚砂岩", + "block.emeraldcraft.dark_sandstone_slab": "黑金砂岩台阶", + "block.emeraldcraft.azure_sandstone_slab": "琉璃砂岩台阶", + "block.emeraldcraft.quartz_sandstone_slab": "石英砂岩台阶", + "block.emeraldcraft.jadeite_sandstone_slab": "翡翠砂岩台阶", + "block.emeraldcraft.emery_sandstone_slab": "金刚砂岩台阶", + "block.emeraldcraft.smooth_dark_sandstone_slab": "平滑黑金砂岩台阶", + "block.emeraldcraft.smooth_azure_sandstone_slab": "平滑琉璃砂岩台阶", + "block.emeraldcraft.smooth_quartz_sandstone_slab": "平滑石英砂岩台阶", + "block.emeraldcraft.smooth_jadeite_sandstone_slab": "平滑翡翠砂岩台阶", + "block.emeraldcraft.smooth_emery_sandstone_slab": "平滑金刚砂岩台阶", + "block.emeraldcraft.cut_dark_sandstone_slab": "切制黑金砂岩台阶", + "block.emeraldcraft.cut_azure_sandstone_slab": "切制琉璃砂岩台阶", + "block.emeraldcraft.cut_quartz_sandstone_slab": "切制石英砂岩台阶", + "block.emeraldcraft.cut_jadeite_sandstone_slab": "切制翡翠砂岩台阶", + "block.emeraldcraft.cut_emery_sandstone_slab": "切制金刚砂岩台阶", + "block.emeraldcraft.dark_sandstone_stairs": "黑金砂岩楼梯", + "block.emeraldcraft.azure_sandstone_stairs": "琉璃砂岩楼梯", + "block.emeraldcraft.quartz_sandstone_stairs": "石英砂岩楼梯", + "block.emeraldcraft.jadeite_sandstone_stairs": "翡翠砂岩楼梯", + "block.emeraldcraft.emery_sandstone_stairs": "金刚砂岩楼梯", + "block.emeraldcraft.smooth_dark_sandstone_stairs": "平滑黑金砂岩楼梯", + "block.emeraldcraft.smooth_azure_sandstone_stairs": "平滑琉璃砂岩楼梯", + "block.emeraldcraft.smooth_quartz_sandstone_stairs": "平滑石英砂岩楼梯", + "block.emeraldcraft.smooth_jadeite_sandstone_stairs": "平滑翡翠砂岩楼梯", + "block.emeraldcraft.smooth_emery_sandstone_stairs": "平滑金刚砂岩楼梯", + "block.emeraldcraft.dark_sandstone_wall": "黑金砂岩墙", + "block.emeraldcraft.azure_sandstone_wall": "琉璃砂岩墙", + "block.emeraldcraft.quartz_sandstone_wall": "石英砂岩墙", + "block.emeraldcraft.jadeite_sandstone_wall": "翡翠砂岩墙", + "block.emeraldcraft.emery_sandstone_wall": "金刚砂岩墙", + "block.emeraldcraft.carpentry_table": "木工桌", + "block.emeraldcraft.glass_kiln": "玻璃窑", + "block.emeraldcraft.mineral_table": "冶矿台", + "block.emeraldcraft.crystalball_table": "水晶球桌", + "block.emeraldcraft.squeezer": "榨取器", + "block.emeraldcraft.continuous_miner": "连续采矿机", + "block.emeraldcraft.ice_maker": "制冰机", + "block.emeraldcraft.melter": "熔化炉", + "block.emeraldcraft.blue_nether_brick_slab": "蓝色地狱砖台阶", + "block.emeraldcraft.blue_nether_brick_stairs": "蓝色地狱砖楼梯", + "block.emeraldcraft.blue_nether_brick_wall": "蓝色地狱砖墙", + "block.emeraldcraft.blue_nether_bricks": "蓝色地狱砖块", + "block.emeraldcraft.crimson_stone_slab": "绯红石台阶", + "block.emeraldcraft.crimson_stone_stairs": "绯红石楼梯", + "block.emeraldcraft.crimson_stone_wall": "绯红石墙", + "block.emeraldcraft.crimson_stone": "绯红石头", + "block.emeraldcraft.crimson_cobblestone_slab": "绯红圆石台阶", + "block.emeraldcraft.crimson_cobblestone_stairs": "绯红圆石楼梯", + "block.emeraldcraft.crimson_cobblestone_wall": "绯红圆石墙", + "block.emeraldcraft.crimson_cobblestone": "绯红圆石", + "block.emeraldcraft.warped_stone_slab": "诡异石台阶", + "block.emeraldcraft.warped_stone_stairs": "诡异石楼梯", + "block.emeraldcraft.warped_stone_wall": "诡异石墙", + "block.emeraldcraft.warped_stone": "诡异石头", + "block.emeraldcraft.warped_cobblestone_slab": "诡异圆石台阶", + "block.emeraldcraft.warped_cobblestone_stairs": "诡异圆石楼梯", + "block.emeraldcraft.warped_cobblestone_wall": "诡异圆石墙", + "block.emeraldcraft.warped_cobblestone": "诡异圆石", + "block.emeraldcraft.cyan_petunia": "青色牵牛花", + "block.emeraldcraft.magenta_petunia": "洋红色牵牛花", + "block.emeraldcraft.potted_cyan_petunia": "青色牵牛花盆栽", + "block.emeraldcraft.potted_magenta_petunia": "洋红色牵牛花盆栽", + "block.emeraldcraft.ginkgo_sapling": "银杏树苗", + "block.emeraldcraft.potted_ginkgo_sapling": "银杏树苗盆栽", + "block.emeraldcraft.ginkgo_log": "银杏原木", + "block.emeraldcraft.stripped_ginkgo_log": "去皮银杏原木", + "block.emeraldcraft.ginkgo_wood": "银杏木", + "block.emeraldcraft.stripped_ginkgo_wood": "去皮银杏木", + "block.emeraldcraft.ginkgo_leaves": "银杏树叶", + "block.emeraldcraft.ginkgo_planks": "银杏木板", + "block.emeraldcraft.ginkgo_stairs": "银杏木楼梯", + "block.emeraldcraft.ginkgo_slab": "银杏木台阶", + "block.emeraldcraft.ginkgo_fence": "银杏木栅栏", + "block.emeraldcraft.ginkgo_fence_gate": "银杏木栅栏门", + "block.emeraldcraft.ginkgo_door": "银杏木门", + "block.emeraldcraft.ginkgo_trapdoor": "银杏木活板门", + "block.emeraldcraft.ginkgo_pressure_plate": "银杏木质压力板", + "block.emeraldcraft.ginkgo_button": "银杏木按钮", + "block.emeraldcraft.ginkgo_sign": "银杏木告示牌", + "block.emeraldcraft.ginkgo_wall_sign": "墙上的银杏木告示牌", + + "item.emeraldcraft.emerald_head": "绿宝石头盔", + "item.emeraldcraft.emerald_chest": "绿宝石胸甲", + "item.emeraldcraft.emerald_legs": "绿宝石护腿", + "item.emeraldcraft.emerald_feet": "绿宝石靴子", + "item.emeraldcraft.lapis_head": "青金石头盔", + "item.emeraldcraft.lapis_chest": "青金石胸甲", + "item.emeraldcraft.lapis_legs": "青金石护腿", + "item.emeraldcraft.lapis_feet": "青金石靴子", + "item.emeraldcraft.warped_wart": "诡异疣", + "item.emeraldcraft.diamond_nugget": "钻石粒", + "item.emeraldcraft.emerald_nugget": "绿宝石粒", + "item.emeraldcraft.lapis_nugget": "青金石粒", + "item.emeraldcraft.piglin_cutey_spawn_egg": "猪灵妹妹刷怪蛋", + "item.emeraldcraft.nether_pigman_spawn_egg": "下界猪猪人刷怪蛋", + "item.emeraldcraft.nether_lambman_spawn_egg": "下界小羊人刷怪蛋", + "item.emeraldcraft.agate_apple": "青苹果", + "item.emeraldcraft.jade_apple": "翠苹果", + "item.emeraldcraft.bee_banner_pattern": "旗帜图案", + "item.emeraldcraft.bee_banner_pattern.desc": "蜜蜂", + "item.emeraldcraft.snow_banner_pattern": "旗帜图案", + "item.emeraldcraft.snow_banner_pattern.desc": "雪花", + "item.emeraldcraft.bottle_banner_pattern": "旗帜图案", + "item.emeraldcraft.bottle_banner_pattern.desc": "瓶子", + "item.emeraldcraft.potion_banner_pattern": "旗帜图案", + "item.emeraldcraft.potion_banner_pattern.desc": "药水", + "item.emeraldcraft.rock_breaker": "破岩轮", + "item.emeraldcraft.melted_emerald_bucket": "熔融绿宝石桶", + "item.emeraldcraft.melted_iron_bucket": "熔融铁水桶", + "item.emeraldcraft.melted_gold_bucket": "熔融金水桶", + "item.emeraldcraft.melted_copper_bucket": "熔融铜水桶", + "item.emeraldcraft.iron_concentrate": "铁精矿", + "item.emeraldcraft.gold_concentrate": "金精矿", + "item.emeraldcraft.copper_concentrate": "铜精矿", + "item.emeraldcraft.ginkgo_nut": "银杏果", + "item.emeraldcraft.ginkgo_boat": "银杏木船", + + "entity.emeraldcraft.piglin_cutey": "猪灵妹妹", + "entity.emeraldcraft.nether_pigman": "下界猪猪人", + "entity.emeraldcraft.nether_lambman": "下界小羊人", + "entity.minecraft.villager.emeraldcraft.carpenter": "木匠", + "entity.minecraft.villager.emeraldcraft.glazier": "玻璃匠", + "entity.minecraft.villager.emeraldcraft.miner": "矿工", + "entity.minecraft.villager.emeraldcraft.astrologist": "占星师", + "entity.minecraft.villager.emeraldcraft.grower": "花农", + "entity.minecraft.villager.emeraldcraft.beekeeper": "养蜂人", + "entity.minecraft.villager.emeraldcraft.geologist": "地质勘测员", + "entity.minecraft.villager.emeraldcraft.icer": "制冰师", + "entity.minecraft.villager.emeraldcraft.chemical_engineer": "化学工程师", + + "subtitles.entity.piglin_cutey.ambient": "猪灵妹妹:喃喃自语", + "subtitles.entity.piglin_cutey.celebrate": "猪灵妹妹:欢呼", + "subtitles.entity.piglin_cutey.death": "猪灵妹妹:死亡", + "subtitles.entity.piglin_cutey.hurt": "猪灵妹妹:受伤", + "subtitles.entity.piglin_cutey.no": "猪灵妹妹:反对", + "subtitles.entity.piglin_cutey.trade": "猪灵妹妹:交易", + "subtitles.entity.piglin_cutey.yes": "猪灵妹妹:赞同", + "subtitles.entity.nether_pigman.ambient": "下界猪猪人:哼叫", + "subtitles.entity.nether_pigman.death": "下界猪猪人:死亡", + "subtitles.entity.nether_pigman.hurt": "下界猪猪人:受伤", + "subtitles.entity.nether_pigman.no": "下界猪猪人:反对", + "subtitles.entity.nether_pigman.trade": "下界猪猪人:交易", + "subtitles.entity.nether_pigman.yes": "下界猪猪人:赞同", + "subtitles.entity.nether_lambman.ambient": "下界小羊人:咩~", + "subtitles.entity.nether_lambman.death": "下界小羊人:死亡", + "subtitles.entity.nether_lambman.hurt": "下界小羊人:受伤", + "subtitles.entity.nether_lambman.no": "下界小羊人:反对", + "subtitles.entity.nether_lambman.trade": "下界小羊人:交易", + "subtitles.entity.nether_lambman.yes": "下界小羊人:赞同", + "subtitles.entity.villager.work_carpenter": "木匠:工作", + "subtitles.entity.villager.work_glazier": "玻璃匠:工作", + "subtitles.entity.villager.work_miner": "矿工:工作", + "subtitles.entity.villager.work_astrologist": "占星师:工作", + "subtitles.entity.villager.work_grower": "花农:工作", + "subtitles.entity.villager.work_beekeeper": "养蜂人:工作", + "subtitles.entity.villager.work_geologist": "地质勘测员:工作", + "subtitles.entity.villager.work_icer": "制冰师:工作", + "subtitles.entity.villager.work_chemical_engineer": "化学工程师:工作", + + "container.carpentry": "木工桌", + "container.glass_kiln": "玻璃窑", + "container.mineral_table": "冶矿台", + "container.continuous_miner": "连续采矿机", + "container.ice_maker": "制冰机", + "container.melter": "熔化炉", + + "biome.emeraldcraft.dead_crimson_ocean": "死寂的绯红海洋", + "biome.emeraldcraft.dead_warped_ocean": "死寂的诡异海洋", + "biome.emeraldcraft.deep_dead_crimson_ocean": "死寂的绯红深海", + "biome.emeraldcraft.deep_dead_warped_ocean": "死寂的诡异深海", + "biome.emeraldcraft.xanadu": "世外桃源", + "biome.emeraldcraft.ginkgo_forest": "银杏森林", + "biome.emeraldcraft.karst_hills": "喀斯特山峦", + "biome.emeraldcraft.petunia_plains": "牵牛花平原", + "biome.emeraldcraft.golden_beach": "金沙滩", + "biome.emeraldcraft.azure_desert": "琉璃沙漠", + "biome.emeraldcraft.jadeite_desert": "翡翠沙漠", + "biome.emeraldcraft.volcanic_caves": "火山洞穴", + "biome.emeraldcraft.quartz_desert": "石英沙漠", + "biome.emeraldcraft.emery_desert": "金刚沙漠", + + "gui.recipebook.toggleRecipes.kilnable": "仅显示可烧制", + + "gui.emeraldcraft.glass_kiln.experience": "%s 点经验", + "gui.emeraldcraft.glass_kiln.time.seconds": "%s 秒", + "gui.emeraldcraft.melter.time.seconds": "%s 秒", + "gui.emeraldcraft.ice_maker.time.seconds": "%s 秒", + + "book.emeraldcraft.piglin_cutey.title": "最后一个请求", + "book.emeraldcraft.piglin_cutey.content": "数天来,我一直被困在地狱。一只恶魂摧毁了我的传送门,所以我别无选择,只能装扮成猪灵并与他们交易——但迄今为止我仍然没有找到足够的黑曜石。你可以帮我返回主世界吗?", + + "advancements.emeraldcraft.root.title": "绿色工艺的开始", + "advancements.emeraldcraft.root.description": "获得一颗绿宝石", + "advancements.emeraldcraft.hard_currency.title": "“硬”通货", + "advancements.emeraldcraft.hard_currency.description": "获得一件绿宝石装备", + "advancements.emeraldcraft.green_light.title": "原谅战士", + "advancements.emeraldcraft.green_light.description": "获得全套绿宝石盔甲" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json new file mode 100644 index 00000000..22ebbbfd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/azure_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json new file mode 100644 index 00000000..97c9f392 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/azure_sandstone_top", + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json new file mode 100644 index 00000000..fdf7ebb6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json new file mode 100644 index 00000000..2efae258 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json new file mode 100644 index 00000000..684d2010 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json new file mode 100644 index 00000000..c89885e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json new file mode 100644 index 00000000..72184f53 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_bottom", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json new file mode 100644 index 00000000..b4299bf3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json new file mode 100644 index 00000000..f8a2f358 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json new file mode 100644 index 00000000..3dcaeb36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json new file mode 100644 index 00000000..78aab10c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/azure_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json new file mode 100644 index 00000000..f049a90e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json new file mode 100644 index 00000000..92992576 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json new file mode 100644 index 00000000..0bb364ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json new file mode 100644 index 00000000..3365754b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json new file mode 100644 index 00000000..26a24fbc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/blue_nether_bricks", + "top": "emeraldcraft:block/blue_nether_bricks", + "side": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json new file mode 100644 index 00000000..2a735400 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json new file mode 100644 index 00000000..76e9c266 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json new file mode 100644 index 00000000..c2e771e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json new file mode 100644 index 00000000..94a4f999 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json new file mode 100644 index 00000000..2461a391 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/blue_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json b/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json new file mode 100644 index 00000000..5804630e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/carpentry_table_bottom", + "bottom": "emeraldcraft:block/carpentry_table_bottom", + "top": "emeraldcraft:block/carpentry_table_top", + "side": "emeraldcraft:block/carpentry_table_side", + "saw": "emeraldcraft:block/carpentry_table_saw" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 9, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, + "north": { "uv": [ 0, 7, 16, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 7, 16, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#side", "cullface": "west" }, + "east": { "uv": [ 0, 7, 16, 16 ], "texture": "#side", "cullface": "east" } + } + }, + { + "from": [ 1, 9, 8 ], + "to": [ 15, 16, 8 ], + "faces": { + "north": { "uv": [ 1, 9, 15, 16 ], "texture": "#saw", "tintindex": 0 }, + "south": { "uv": [ 15, 9, 1, 16 ], "texture": "#saw", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json b/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json new file mode 100644 index 00000000..b8517415 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/continuous_miner.json @@ -0,0 +1,99 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/continuous_miner_wheel", + "texture_mfront": "minecraft:block/furnace_top", + "texture_mback": "minecraft:block/dropper_front_vertical", + "texture_msideh": "emeraldcraft:block/continuous_miner_main_sideh", + "texture_msidev": "emeraldcraft:block/continuous_miner_main_sidev", + "texture_wheel": "emeraldcraft:block/continuous_miner_wheel", + "texture_wside": "emeraldcraft:block/continuous_miner_wheel_side", + "texture_holder": "emeraldcraft:block/continuous_miner_holder" + }, + "elements": [ + { + "from": [ 0, 0, 3 ], + "to": [ 16, 16, 16 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture_mfront", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 16 ], "texture": "#texture_msidev", "cullface": "east" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture_mback", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 16 ], "texture": "#texture_msidev", "cullface": "west" }, + "up": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture_msideh", "cullface": "up" }, + "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture_msideh", "cullface": "down" } + } + }, + { + "from": [ 1, 2, -6 ], + "to": [ 5, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 6, 2, -6 ], + "to": [ 10, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 11, 2, -6 ], + "to": [ 15, 11, 3 ], + "faces": { + "north": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "north" }, + "east": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "east" }, + "south": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 0, 0, 9, 9 ], "texture": "#texture_wheel", "cullface": "west" }, + "up": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "up" }, + "down": { "uv": [ 0, 0, 4, 9 ], "texture": "#texture_wside", "cullface": "down" } + } + }, + { + "from": [ 0, 6, -2 ], + "to": [ 1, 7, 3 ], + "faces": { + "north": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "down" } + } + }, + { + "from": [ 15, 6, -2 ], + "to": [ 16, 7, 3 ], + "faces": { + "north": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 5, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 1, 5 ], "texture": "#texture_holder", "cullface": "down" } + } + }, + { + "from": [ 4, 6, -2 ], + "to": [ 12, 7, -1 ], + "faces": { + "north": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "north" }, + "east": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "east" }, + "south": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "south" }, + "west": {"uv": [ 0, 0, 1, 1 ], "texture": "#texture_holder", "cullface": "west" }, + "up": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "up" }, + "down": {"uv": [ 0, 0, 8, 1 ], "texture": "#texture_holder", "cullface": "down" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json new file mode 100644 index 00000000..5ffcdf87 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json new file mode 100644 index 00000000..c1b0df64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json new file mode 100644 index 00000000..cf347697 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..ef965820 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json new file mode 100644 index 00000000..2bfa63a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json new file mode 100644 index 00000000..7d096f8a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_cobblestone", + "top": "emeraldcraft:block/crimson_cobblestone", + "side": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json new file mode 100644 index 00000000..f8dd2dc6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json new file mode 100644 index 00000000..ebb6f00d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json new file mode 100644 index 00000000..a7a8f54f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json new file mode 100644 index 00000000..436138a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_cobblestone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json new file mode 100644 index 00000000..a5d88a30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json new file mode 100644 index 00000000..0f981e36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_mirrored.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_mirrored_all", + "textures": { + "all": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json new file mode 100644 index 00000000..641740a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json new file mode 100644 index 00000000..76e8e31b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json new file mode 100644 index 00000000..426307ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json new file mode 100644 index 00000000..e20c5069 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json new file mode 100644 index 00000000..dc4285e8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/crimson_stone", + "top": "emeraldcraft:block/crimson_stone", + "side": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json new file mode 100644 index 00000000..73bf0bf7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json new file mode 100644 index 00000000..c0cca471 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json new file mode 100644 index 00000000..9686c28e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json new file mode 100644 index 00000000..980e0898 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crimson_stone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json b/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json new file mode 100644 index 00000000..f4597938 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json @@ -0,0 +1,37 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "emeraldcraft:block/crystalball_top", + "texture_ctop": "emeraldcraft:block/crystalball_top", + "texture_cside": "emeraldcraft:block/crystalball_side", + "texture_cbottom": "emeraldcraft:block/crystalball_bottom", + "texture_wside": "emeraldcraft:block/crystalball_table_side", + "texture_wbottom": "emeraldcraft:block/crystalball_table_bottom" + }, + "elements": [ + { + "from": [ 2, 2, 2 ], + "to": [ 14, 14, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cbottom" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_ctop" }, + "north": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "south": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "west": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" }, + "east": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_cside" } + } + }, + { + "from": [ 2, 0, 2 ], + "to": [ 14, 2, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_wbottom", "cullface": "down" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#texture_wbottom", "cullface": "up" }, + "north": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "north" }, + "south": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "south" }, + "west": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "west" }, + "east": { "uv": [ 2, 14, 14, 16 ], "texture": "#texture_wside", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json new file mode 100644 index 00000000..4badbf3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..40e7524e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json new file mode 100644 index 00000000..32dbbadb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/cut_azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone.json new file mode 100644 index 00000000..8ed0bf81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..23997997 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json new file mode 100644 index 00000000..b376a94a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json new file mode 100644 index 00000000..84c66c76 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..51565740 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json new file mode 100644 index 00000000..ea97abbb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/cut_emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json new file mode 100644 index 00000000..5a500157 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..69992b60 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..82bf57b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/cut_jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json new file mode 100644 index 00000000..197f2648 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..34372f2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json new file mode 100644 index 00000000..8e4472df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/cut_quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/cyan_petunia.json new file mode 100644 index 00000000..876ee522 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cyan_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json new file mode 100644 index 00000000..1cf2085a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/dark_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json new file mode 100644 index 00000000..7e29f4c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/dark_sandstone_top", + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json new file mode 100644 index 00000000..1034e710 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json new file mode 100644 index 00000000..1c693008 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json new file mode 100644 index 00000000..93e13683 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json new file mode 100644 index 00000000..22ac77b5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json new file mode 100644 index 00000000..debde99e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json new file mode 100644 index 00000000..cb0d1521 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json new file mode 100644 index 00000000..524b7009 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json new file mode 100644 index 00000000..bc81a44b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json new file mode 100644 index 00000000..fd4782df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json new file mode 100644 index 00000000..6116a2a6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json new file mode 100644 index 00000000..610ca5e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json new file mode 100644 index 00000000..7a8f814d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json new file mode 100644 index 00000000..a48336ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json new file mode 100644 index 00000000..493d9435 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/diamond_block", + "top": "minecraft:block/diamond_block", + "side": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json new file mode 100644 index 00000000..8cce79c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json new file mode 100644 index 00000000..7607c064 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json new file mode 100644 index 00000000..456375df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json new file mode 100644 index 00000000..abd0c498 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/diamond_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/diamond_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json new file mode 100644 index 00000000..c6e1abf9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json new file mode 100644 index 00000000..3bb3b50d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json new file mode 100644 index 00000000..100e0839 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json new file mode 100644 index 00000000..2ad0b911 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json new file mode 100644 index 00000000..7f120acb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/emerald_block", + "top": "minecraft:block/emerald_block", + "side": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json new file mode 100644 index 00000000..f1d70089 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json new file mode 100644 index 00000000..c0486164 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json new file mode 100644 index 00000000..ba0bd442 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json new file mode 100644 index 00000000..8c0cfd50 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emerald_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/emerald_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json new file mode 100644 index 00000000..73c42332 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/emery_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json new file mode 100644 index 00000000..5418236b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/emery_sandstone_top", + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json new file mode 100644 index 00000000..1821527b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json new file mode 100644 index 00000000..3b7f0188 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json new file mode 100644 index 00000000..ad9910a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json new file mode 100644 index 00000000..c778385c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json new file mode 100644 index 00000000..3f73a8af --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_bottom", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json new file mode 100644 index 00000000..108aafc2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json new file mode 100644 index 00000000..6c5200aa --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json new file mode 100644 index 00000000..7cf8b0fb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json new file mode 100644 index 00000000..6a23b29d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/emery_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button.json new file mode 100644 index 00000000..c8e65ad7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json new file mode 100644 index 00000000..53fe8c1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_inventory", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json new file mode 100644 index 00000000..5a705b45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_pressed", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom.json new file mode 100644 index 00000000..4c62f0ce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/door_bottom", + "textures": { + "top": "emeraldcraft:block/ginkgo_door_top", + "bottom": "emeraldcraft:block/ginkgo_door_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_hinge.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_hinge.json new file mode 100644 index 00000000..97f670f7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/door_bottom_rh", + "textures": { + "top": "emeraldcraft:block/ginkgo_door_top", + "bottom": "emeraldcraft:block/ginkgo_door_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top.json new file mode 100644 index 00000000..b826f84e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/door_top", + "textures": { + "top": "emeraldcraft:block/ginkgo_door_top", + "bottom": "emeraldcraft:block/ginkgo_door_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_hinge.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_hinge.json new file mode 100644 index 00000000..d0c72d8d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/door_top_rh", + "textures": { + "top": "emeraldcraft:block/ginkgo_door_top", + "bottom": "emeraldcraft:block/ginkgo_door_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json new file mode 100644 index 00000000..87c03b9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json new file mode 100644 index 00000000..cf4fce3d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_open", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json new file mode 100644 index 00000000..2586b081 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json new file mode 100644 index 00000000..4510aaf8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall_open", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json new file mode 100644 index 00000000..52f9aa42 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_inventory", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json new file mode 100644 index 00000000..734f7020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_post", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json new file mode 100644 index 00000000..68ca05e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_side", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json new file mode 100644 index 00000000..f9befae2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/leaves", + "textures": { + "all": "emeraldcraft:block/ginkgo_leaves" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json new file mode 100644 index 00000000..e634556f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/ginkgo_log_top", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json new file mode 100644 index 00000000..b6de2129 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/ginkgo_log_top", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json new file mode 100644 index 00000000..74689b1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json new file mode 100644 index 00000000..19e98bb1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_up", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json new file mode 100644 index 00000000..31a5ad2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_down", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json new file mode 100644 index 00000000..a320b746 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json new file mode 100644 index 00000000..4189883c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json new file mode 100644 index 00000000..615d233a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json new file mode 100644 index 00000000..80f95a3a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json new file mode 100644 index 00000000..7f55d71c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json new file mode 100644 index 00000000..d8975f63 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json new file mode 100644 index 00000000..5cf048e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json new file mode 100644 index 00000000..174e6eb3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json new file mode 100644 index 00000000..8906a8f2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_open", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json new file mode 100644 index 00000000..bc09667a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_top", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json new file mode 100644 index 00000000..422d8698 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/ginkgo_log", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json new file mode 100644 index 00000000..395351b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "top": "emeraldcraft:block/glass_kiln_top", + "front": "emeraldcraft:block/glass_kiln_front", + "side": "emeraldcraft:block/glass_kiln_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json new file mode 100644 index 00000000..31568c39 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/glass_kiln_on.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/orientable", + "textures": { + "top": "emeraldcraft:block/glass_kiln_top", + "front": "emeraldcraft:block/glass_kiln_front_on", + "side": "emeraldcraft:block/glass_kiln_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json b/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json new file mode 100644 index 00000000..f6f2e28f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json new file mode 100644 index 00000000..d4e00b2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json new file mode 100644 index 00000000..50644b54 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json new file mode 100644 index 00000000..92d1d964 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json new file mode 100644 index 00000000..b4eca4ed --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/gold_block", + "top": "minecraft:block/gold_block", + "side": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json new file mode 100644 index 00000000..2824da33 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json new file mode 100644 index 00000000..93f91735 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json new file mode 100644 index 00000000..7a508ea4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json new file mode 100644 index 00000000..a3531a15 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/gold_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/gold_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json b/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json new file mode 100644 index 00000000..3ddfb239 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ice_maker.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/ice_maker_top", + "bottom": "emeraldcraft:block/ice_maker_top", + "side": "emeraldcraft:block/ice_maker_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json b/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json new file mode 100644 index 00000000..06dec182 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json new file mode 100644 index 00000000..22feb3ff --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json new file mode 100644 index 00000000..fa9d92bf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json new file mode 100644 index 00000000..5b048a23 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json new file mode 100644 index 00000000..4a0f993a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/iron_block", + "top": "minecraft:block/iron_block", + "side": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json new file mode 100644 index 00000000..ddcf1837 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json new file mode 100644 index 00000000..8b2e07ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json new file mode 100644 index 00000000..b47f9ce5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json new file mode 100644 index 00000000..59e6d0ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/iron_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/iron_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json new file mode 100644 index 00000000..08853f59 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/jadeite_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json new file mode 100644 index 00000000..abf780e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/jadeite_sandstone_top", + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json new file mode 100644 index 00000000..e7c6d7c6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..485ac116 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..fd888177 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json new file mode 100644 index 00000000..4f494abd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json new file mode 100644 index 00000000..3a57b969 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_bottom", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json new file mode 100644 index 00000000..6bb5854c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json new file mode 100644 index 00000000..076dfa69 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json new file mode 100644 index 00000000..6039823c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json new file mode 100644 index 00000000..a4b1de3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/jadeite_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json new file mode 100644 index 00000000..29c51a9e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json new file mode 100644 index 00000000..73e8774b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json new file mode 100644 index 00000000..8291a13b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json new file mode 100644 index 00000000..b4236e27 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json new file mode 100644 index 00000000..d4c3cb06 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/lapis_block", + "top": "minecraft:block/lapis_block", + "side": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json new file mode 100644 index 00000000..c7f11b15 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json new file mode 100644 index 00000000..af99918e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json new file mode 100644 index 00000000..5f296a48 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json new file mode 100644 index 00000000..bda6d57f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lapis_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/lapis_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json new file mode 100644 index 00000000..9535e512 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "emeraldcraft:block/magenta_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/melter.json b/src/main/resources/assets/emeraldcraft/models/block/melter.json new file mode 100644 index 00000000..378b891d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/melter.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/melter_top", + "bottom": "emeraldcraft:block/melter_top", + "side": "emeraldcraft:block/melter_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json b/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json new file mode 100644 index 00000000..fb1a9ad1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/mineral_table.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "emeraldcraft:block/mineral_table_front", + "north": "emeraldcraft:block/mineral_table_front", + "south": "emeraldcraft:block/mineral_table_side", + "east": "emeraldcraft:block/mineral_table_side", + "west": "emeraldcraft:block/mineral_table_side", + "up": "emeraldcraft:block/mineral_table_top", + "down": "emeraldcraft:block/mineral_table_bottom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json new file mode 100644 index 00000000..2d91233b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json new file mode 100644 index 00000000..f2e4228e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json new file mode 100644 index 00000000..0c13abd4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json new file mode 100644 index 00000000..f89ea7c4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json new file mode 100644 index 00000000..1bc1bdbb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "minecraft:block/netherite_block", + "top": "minecraft:block/netherite_block", + "side": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json new file mode 100644 index 00000000..ebd6a579 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json new file mode 100644 index 00000000..1c17bb4d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json new file mode 100644 index 00000000..06f10f33 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json new file mode 100644 index 00000000..a3c171eb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/netherite_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "minecraft:block/netherite_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json new file mode 100644 index 00000000..b3d41a7e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json new file mode 100644 index 00000000..b02e8727 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json new file mode 100644 index 00000000..ddab4a35 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "emeraldcraft:block/magenta_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json new file mode 100644 index 00000000..2cc73a85 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/quartz_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json new file mode 100644 index 00000000..135bea25 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/quartz_sandstone_top", + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json new file mode 100644 index 00000000..cb3a24be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json new file mode 100644 index 00000000..8666754b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json new file mode 100644 index 00000000..180ea2f9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json new file mode 100644 index 00000000..8c8d83ca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json new file mode 100644 index 00000000..8fb63b75 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_bottom", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json new file mode 100644 index 00000000..aa87bf0e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json new file mode 100644 index 00000000..fa240fea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json new file mode 100644 index 00000000..b6feb2a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json new file mode 100644 index 00000000..1d5ea9f7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/quartz_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json new file mode 100644 index 00000000..b29f6f93 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..d2a6c0b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json new file mode 100644 index 00000000..d1a34a7e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..11dedee7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json new file mode 100644 index 00000000..93d9ceca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json new file mode 100644 index 00000000..f3c72e03 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_azure_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/azure_sandstone_top", + "top": "emeraldcraft:block/azure_sandstone_top", + "side": "emeraldcraft:block/azure_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone.json new file mode 100644 index 00000000..bf27e6f5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..2db8d3ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json new file mode 100644 index 00000000..c0b03109 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..ed8298a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json new file mode 100644 index 00000000..ae44a9cd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json new file mode 100644 index 00000000..0c3b9ada --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json new file mode 100644 index 00000000..8b9d1bb0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..908f81e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json new file mode 100644 index 00000000..70c97ec8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..05089226 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json new file mode 100644 index 00000000..4447bbf0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json new file mode 100644 index 00000000..0ef74e46 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_emery_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/emery_sandstone_top", + "top": "emeraldcraft:block/emery_sandstone_top", + "side": "emeraldcraft:block/emery_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..adf857f5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..c126c104 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json new file mode 100644 index 00000000..cb40ec0b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..835c52c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json new file mode 100644 index 00000000..d6d838fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json new file mode 100644 index 00000000..8483f0e9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_jadeite_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/jadeite_sandstone_top", + "top": "emeraldcraft:block/jadeite_sandstone_top", + "side": "emeraldcraft:block/jadeite_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json new file mode 100644 index 00000000..e68649e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..fa744c70 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json new file mode 100644 index 00000000..fdd5a8bc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..8dc938b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json new file mode 100644 index 00000000..5f91af2d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json new file mode 100644 index 00000000..fc4e19ad --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_quartz_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/quartz_sandstone_top", + "top": "emeraldcraft:block/quartz_sandstone_top", + "side": "emeraldcraft:block/quartz_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json new file mode 100644 index 00000000..91d48ba0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_0.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json new file mode 100644 index 00000000..3c0719a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_1.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json new file mode 100644 index 00000000..ba49ec44 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_2.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json new file mode 100644 index 00000000..f30b1888 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_3.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json b/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json new file mode 100644 index 00000000..13f04299 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/squeezer_4.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/squeezer_top", + "bottom": "emeraldcraft:block/squeezer_bottom", + "side": "emeraldcraft:block/squeezer_side4" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json new file mode 100644 index 00000000..37c4adf5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log_top", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json new file mode 100644 index 00000000..547b3b87 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log_top", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json new file mode 100644 index 00000000..9336709e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json new file mode 100644 index 00000000..32fcb0b0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/vitrified_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json new file mode 100644 index 00000000..729386c1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json new file mode 100644 index 00000000..b4bb7037 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json new file mode 100644 index 00000000..687b2882 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json new file mode 100644 index 00000000..00c615b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json new file mode 100644 index 00000000..fb57a596 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json new file mode 100644 index 00000000..a6ebe5ea --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_cobblestone", + "top": "emeraldcraft:block/warped_cobblestone", + "side": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json new file mode 100644 index 00000000..105f715d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json new file mode 100644 index 00000000..748bf711 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json new file mode 100644 index 00000000..ae709a23 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json new file mode 100644 index 00000000..74e0dbf8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_cobblestone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json new file mode 100644 index 00000000..1f5767d6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json new file mode 100644 index 00000000..fbf20a40 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_mirrored.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_mirrored_all", + "textures": { + "all": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json new file mode 100644 index 00000000..d9d75940 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json new file mode 100644 index 00000000..1c84e03d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json new file mode 100644 index 00000000..9e2d39ca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json new file mode 100644 index 00000000..8d12c20d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json new file mode 100644 index 00000000..4c7acd6f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/warped_stone", + "top": "emeraldcraft:block/warped_stone", + "side": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json new file mode 100644 index 00000000..a9f631be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json new file mode 100644 index 00000000..de14712e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json new file mode 100644 index 00000000..303f07e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json new file mode 100644 index 00000000..5a5b2d8c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_stone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json new file mode 100644 index 00000000..821af38c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json new file mode 100644 index 00000000..38d9c44e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json new file mode 100644 index 00000000..e7b1a033 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json b/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json new file mode 100644 index 00000000..d2acab8e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/agate_apple.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/agate_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json new file mode 100644 index 00000000..c49ea2b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json new file mode 100644 index 00000000..efaaeba8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json new file mode 100644 index 00000000..a11b8cb7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json new file mode 100644 index 00000000..505ff0a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json new file mode 100644 index 00000000..208e279f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/azure_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/azure_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bee_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json new file mode 100644 index 00000000..01c84e36 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json new file mode 100644 index 00000000..508a482e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json new file mode 100644 index 00000000..5bafa7b1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_brick_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json new file mode 100644 index 00000000..2faf3277 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/blue_nether_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/blue_nether_bricks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bottle_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json b/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json new file mode 100644 index 00000000..80164d37 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/carpentry_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json b/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json new file mode 100644 index 00000000..f3e6a8da --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/continuous_miner" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json new file mode 100644 index 00000000..125fc901 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/copper_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/copper_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json new file mode 100644 index 00000000..989797fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json new file mode 100644 index 00000000..9c575b22 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..d0f81d30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json new file mode 100644 index 00000000..0321238b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_cobblestone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_cobblestone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json new file mode 100644 index 00000000..00953dfd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json new file mode 100644 index 00000000..2d085186 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json new file mode 100644 index 00000000..c805500e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json new file mode 100644 index 00000000..794fc31f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crimson_stone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crimson_stone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json b/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json new file mode 100644 index 00000000..c1b5e7ed --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/crystalball_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/crystalball_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json new file mode 100644 index 00000000..7f4cab6f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..d9e837a0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone.json new file mode 100644 index 00000000..f1530e4c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..4f6c8b96 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_dark_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json new file mode 100644 index 00000000..b6fd3cd6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..4f9d7ba8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json new file mode 100644 index 00000000..abea42c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..86eeab6a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json new file mode 100644 index 00000000..ea3e743f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..d652ac60 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/item/cyan_petunia.json new file mode 100644 index 00000000..7e013e2a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cyan_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json new file mode 100644 index 00000000..c6798514 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json new file mode 100644 index 00000000..56d918a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json new file mode 100644 index 00000000..fd215697 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json new file mode 100644 index 00000000..df7392b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json new file mode 100644 index 00000000..97e1a125 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json new file mode 100644 index 00000000..698c79a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/diamond_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json new file mode 100644 index 00000000..11393158 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json new file mode 100644 index 00000000..a888a396 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json b/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json new file mode 100644 index 00000000..3a6d9db2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/diamond_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/diamond_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json new file mode 100644 index 00000000..bd4a5da7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_chest.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json new file mode 100644 index 00000000..d668638c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_feet.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json new file mode 100644 index 00000000..424a8026 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_head.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json new file mode 100644 index 00000000..efe802d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_legs.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json new file mode 100644 index 00000000..dbd1ff4e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/emerald_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json new file mode 100644 index 00000000..fd1546d8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json new file mode 100644 index 00000000..57f1a4bd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json b/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json new file mode 100644 index 00000000..f92d19ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emerald_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emerald_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json new file mode 100644 index 00000000..b8d2e666 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json new file mode 100644 index 00000000..5fd5158d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json new file mode 100644 index 00000000..2a1d3880 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json new file mode 100644 index 00000000..d2f099b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json new file mode 100644 index 00000000..256ce921 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/emery_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/emery_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_boat.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_boat.json new file mode 100644 index 00000000..c1a94f4f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json new file mode 100644 index 00000000..cf272b64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json new file mode 100644 index 00000000..a536cc56 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_door" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json new file mode 100644 index 00000000..6cdd13c6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json new file mode 100644 index 00000000..a3c2d379 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json new file mode 100644 index 00000000..81ae3bdc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_leaves" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json new file mode 100644 index 00000000..6258f146 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json new file mode 100644 index 00000000..38738e9c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/ginkgo_nut" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json new file mode 100644 index 00000000..16e98db7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_planks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json new file mode 100644 index 00000000..eefa42cd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json new file mode 100644 index 00000000..b1830106 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json new file mode 100644 index 00000000..5cc5daac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_sign" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json new file mode 100644 index 00000000..02de10f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json new file mode 100644 index 00000000..583133da --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json new file mode 100644 index 00000000..01b2f425 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_trapdoor_bottom" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json new file mode 100644 index 00000000..08fa6f98 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json b/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json new file mode 100644 index 00000000..49af4e66 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/glass_kiln" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json new file mode 100644 index 00000000..f56a11f1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/gold_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json b/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json new file mode 100644 index 00000000..445d16e3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json new file mode 100644 index 00000000..01573bf6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json b/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json new file mode 100644 index 00000000..4a467e31 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gold_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/gold_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json b/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json new file mode 100644 index 00000000..fbce3de9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ice_maker.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ice_maker" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json new file mode 100644 index 00000000..5d5a5560 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/iron_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json b/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json new file mode 100644 index 00000000..b002581c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json new file mode 100644 index 00000000..fb8b0716 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json b/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json new file mode 100644 index 00000000..92a2a8b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/iron_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/iron_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json b/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json new file mode 100644 index 00000000..26fd5748 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jade_apple.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/jade_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json new file mode 100644 index 00000000..960a91e5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json new file mode 100644 index 00000000..cd4673f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json new file mode 100644 index 00000000..8bd83759 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..51e2899c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json new file mode 100644 index 00000000..481b1695 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/jadeite_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/jadeite_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json new file mode 100644 index 00000000..6087b04e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_chest.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json new file mode 100644 index 00000000..430e9596 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_feet.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json new file mode 100644 index 00000000..f3f882c8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_head.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_head" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json new file mode 100644 index 00000000..07f47234 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_legs.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json new file mode 100644 index 00000000..fb9ba160 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_nugget.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lapis_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json new file mode 100644 index 00000000..6194bd67 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json new file mode 100644 index 00000000..8a06f639 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json b/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json new file mode 100644 index 00000000..14371ac3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lapis_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lapis_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json new file mode 100644 index 00000000..99bb5fa1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/magenta_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json new file mode 100644 index 00000000..c0dbb310 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_copper_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_copper_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json new file mode 100644 index 00000000..3f598e45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_emerald_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_emerald_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json new file mode 100644 index 00000000..7687252d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_gold_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_gold_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json new file mode 100644 index 00000000..4c95176a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_iron_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_iron_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melter.json b/src/main/resources/assets/emeraldcraft/models/item/melter.json new file mode 100644 index 00000000..be82124a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melter.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/melter" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json b/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json new file mode 100644 index 00000000..722c4f02 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/mineral_table.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/mineral_table" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nether_lambman_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nether_pigman_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json new file mode 100644 index 00000000..4d24347c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json new file mode 100644 index 00000000..3b8fda24 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json b/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json new file mode 100644 index 00000000..58c5f8f2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/netherite_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/netherite_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/piglin_cutey_spawn_egg.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/potion_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json new file mode 100644 index 00000000..88e60561 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json new file mode 100644 index 00000000..737d4c25 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json new file mode 100644 index 00000000..1e49dd5d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json new file mode 100644 index 00000000..b2e52438 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json new file mode 100644 index 00000000..49dba48d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/quartz_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/quartz_sandstone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json b/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json new file mode 100644 index 00000000..7061b6b0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/rock_breaker.json @@ -0,0 +1,22 @@ +{ + "parent": "block/block", + "textures": { + "particle": "emeraldcraft:block/continuous_miner_wheel", + "texture_wheel": "emeraldcraft:block/continuous_miner_wheel", + "texture_wside": "emeraldcraft:block/continuous_miner_wheel_side" + }, + "elements": [ + { + "from": [ 6, 3, 3 ], + "to": [ 10, 12, 12 ], + "faces": { + "north": { "uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "east": { "uv": [0, 0, 9, 9], "texture": "#texture_wheel" }, + "south": { "uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "west": { "uv": [0, 0, 9, 9], "texture": "#texture_wheel" }, + "up": {"uv": [0, 0, 4, 9], "texture": "#texture_wside" }, + "down": {"uv": [0, 0, 4, 9], "texture": "#texture_wside" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json new file mode 100644 index 00000000..e639e9c1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..9f028b57 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..9211bdcb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_azure_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_azure_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone.json new file mode 100644 index 00000000..47803630 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..244d55de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..774e2f7a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json new file mode 100644 index 00000000..780e1702 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..b3b964a0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..813fcdda --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_emery_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_emery_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..8eaebf3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..07384e88 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..8e1fb15a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_jadeite_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json new file mode 100644 index 00000000..33b55a08 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..874e3b4d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..f6528f30 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_quartz_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json b/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json new file mode 100644 index 00000000..0fd0d6f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/snow_banner_pattern.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/banner_pattern" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/squeezer.json b/src/main/resources/assets/emeraldcraft/models/item/squeezer.json new file mode 100644 index 00000000..2b2c3b6c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/squeezer.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/squeezer_0" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json new file mode 100644 index 00000000..1b133fdd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_ginkgo_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json new file mode 100644 index 00000000..106043bb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_ginkgo_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json new file mode 100644 index 00000000..a2ea017f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/vitrified_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json new file mode 100644 index 00000000..c5306b1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json new file mode 100644 index 00000000..969f50fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json new file mode 100644 index 00000000..dffa8121 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json new file mode 100644 index 00000000..43a114ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_cobblestone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_cobblestone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json new file mode 100644 index 00000000..3838e3e4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json new file mode 100644 index 00000000..af678c04 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json new file mode 100644 index 00000000..274ad3fc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json new file mode 100644 index 00000000..d5f426ba --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_stone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/warped_stone_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json b/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json new file mode 100644 index 00000000..60d82ae7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warped_wart.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/warped_wart" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/sounds.json b/src/main/resources/assets/emeraldcraft/sounds.json new file mode 100644 index 00000000..2a9ba229 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/sounds.json @@ -0,0 +1,212 @@ +{ + "piglin_cutey.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/ambient1", + "emeraldcraft:piglin_cutey/ambient2" + ], + "subtitle": "subtitles.entity.piglin_cutey.ambient" + }, + "piglin_cutey.celebrate": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/celebrate" + ], + "subtitle": "subtitles.entity.piglin_cutey.celebrate" + }, + "piglin_cutey.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/death" + ], + "subtitle": "subtitles.entity.piglin_cutey.death" + }, + "piglin_cutey.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/hurt1", + "emeraldcraft:piglin_cutey/hurt2" + ], + "subtitle": "subtitles.entity.piglin_cutey.hurt" + }, + "piglin_cutey.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/no" + ], + "subtitle": "subtitles.entity.piglin_cutey.no" + }, + "piglin_cutey.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/trade" + ], + "subtitle": "subtitles.entity.piglin_cutey.trade" + }, + "piglin_cutey.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:piglin_cutey/yes" + ], + "subtitle": "subtitles.entity.piglin_cutey.yes" + }, + "nether_pigman.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.ambient" + }, + "nether_pigman.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.death" + }, + "nether_pigman.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.hurt" + }, + "nether_pigman.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.no" + }, + "nether_pigman.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.trade" + }, + "nether_pigman.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_pigman/pigman1", + "emeraldcraft:nether_pigman/pigman2" + ], + "subtitle": "subtitles.entity.nether_pigman.yes" + }, + "nether_lambman.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.ambient" + }, + "nether_lambman.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.death" + }, + "nether_lambman.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.hurt" + }, + "nether_lambman.no": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.no" + }, + "nether_lambman.trade": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.trade" + }, + "nether_lambman.yes": { + "category": "entity", + "sounds": [ + "emeraldcraft:nether_lambman/lambman1", + "emeraldcraft:nether_lambman/lambman2" + ], + "subtitle": "subtitles.entity.nether_lambman.yes" + }, + "villager.work_astrologist": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_astrologist" + ], + "subtitle": "subtitles.entity.villager.work_astrologist" + }, + "villager.work_beekeeper": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_beekeeper" + ], + "subtitle": "subtitles.entity.villager.work_beekeeper" + }, + "villager.work_carpenter": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_carpenter" + ], + "subtitle": "subtitles.entity.villager.work_carpenter" + }, + "villager.work_chemical_engineer": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_chemical_engineer" + ], + "subtitle": "subtitles.entity.villager.work_chemical_engineer" + }, + "villager.work_geologist": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_geologist" + ], + "subtitle": "subtitles.entity.villager.work_geologist" + }, + "villager.work_glazier": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_glazier" + ], + "subtitle": "subtitles.entity.villager.work_glazier" + }, + "villager.work_grower": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_grower" + ], + "subtitle": "subtitles.entity.villager.work_grower" + }, + "villager.work_icer": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_icer" + ], + "subtitle": "subtitles.entity.villager.work_icer" + }, + "villager.work_miner": { + "category": "entity", + "sounds": [ + "emeraldcraft:villager/work_miner" + ], + "subtitle": "subtitles.entity.villager.work_miner" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg new file mode 100644 index 00000000..b0113dc4 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman1.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg new file mode 100644 index 00000000..996842a4 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg new file mode 100644 index 00000000..2ff33b68 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman1.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg new file mode 100644 index 00000000..2b62c365 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/nether_pigman/pigman2.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg new file mode 100644 index 00000000..fde2d124 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient1.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg new file mode 100644 index 00000000..a9d075df Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/ambient2.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg new file mode 100644 index 00000000..a65cd5a8 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg new file mode 100644 index 00000000..7c966fca Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/death.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt1.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt1.ogg new file mode 100644 index 00000000..b649eb94 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt1.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg new file mode 100644 index 00000000..5f1bacd3 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/hurt2.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg new file mode 100644 index 00000000..836a7582 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg new file mode 100644 index 00000000..6dd40c46 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/trade.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg new file mode 100644 index 00000000..0aca85f2 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg new file mode 100644 index 00000000..480cbdef Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_astrologist.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg new file mode 100644 index 00000000..de1fc0cc Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_beekeeper.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg new file mode 100644 index 00000000..b680e750 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg new file mode 100644 index 00000000..1d05e949 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_chemical_engineer.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg new file mode 100644 index 00000000..ed47cfac Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_geologist.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg new file mode 100644 index 00000000..34add114 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_glazier.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_grower.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_grower.ogg new file mode 100644 index 00000000..88fc3808 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_grower.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg new file mode 100644 index 00000000..8e9e19dd Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_icer.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_miner.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_miner.ogg new file mode 100644 index 00000000..843eff0a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/sounds/villager/work_miner.ogg differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png new file mode 100644 index 00000000..1198267b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png new file mode 100644 index 00000000..9117c797 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png new file mode 100644 index 00000000..67b2732c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png new file mode 100644 index 00000000..8325fbeb Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/azure_sandstone_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png b/src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png new file mode 100644 index 00000000..f951a629 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/blue_nether_bricks.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png new file mode 100644 index 00000000..0cf35850 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png new file mode 100644 index 00000000..98438d9d Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_saw.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png new file mode 100644 index 00000000..c51a755c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_top.png b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_top.png new file mode 100644 index 00000000..47a57be0 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/carpentry_table_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png new file mode 100644 index 00000000..9c694b4a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_holder.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sideh.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sideh.png new file mode 100644 index 00000000..257ef553 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sideh.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png new file mode 100644 index 00000000..4427d88b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_main_sidev.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png new file mode 100644 index 00000000..1c71e977 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png new file mode 100644 index 00000000..851cc437 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/continuous_miner_wheel_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png b/src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png new file mode 100644 index 00000000..341ce12b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crimson_cobblestone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crimson_stone.png b/src/main/resources/assets/emeraldcraft/textures/block/crimson_stone.png new file mode 100644 index 00000000..730ee74c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crimson_stone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_bottom.png new file mode 100644 index 00000000..3fc0ea60 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_side.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_side.png new file mode 100644 index 00000000..184cd3cc Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_bottom.png new file mode 100644 index 00000000..e9593d3e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_side.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_side.png new file mode 100644 index 00000000..cf234b2e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_table_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png new file mode 100644 index 00000000..df36d8bd Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/crystalball_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_azure_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_azure_sandstone.png new file mode 100644 index 00000000..5c0ff86b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cut_azure_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_dark_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_dark_sandstone.png new file mode 100644 index 00000000..cb60d91e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cut_dark_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png new file mode 100644 index 00000000..b1067c46 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png new file mode 100644 index 00000000..9f4baab1 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cut_jadeite_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_quartz_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_quartz_sandstone.png new file mode 100644 index 00000000..5007c201 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cut_quartz_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cyan_petunia.png b/src/main/resources/assets/emeraldcraft/textures/block/cyan_petunia.png new file mode 100644 index 00000000..59bbdb1c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/cyan_petunia.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png new file mode 100644 index 00000000..5c6fdaec Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png new file mode 100644 index 00000000..c5248ec2 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png new file mode 100644 index 00000000..354826dd Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.png new file mode 100644 index 00000000..2e3186c8 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png new file mode 100644 index 00000000..4fefbba1 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png new file mode 100644 index 00000000..fd697974 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_bottom.png new file mode 100644 index 00000000..8d1338b3 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png new file mode 100644 index 00000000..8eb6e4aa Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/emery_sandstone_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_bottom.png new file mode 100644 index 00000000..8d07c1b8 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_top.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_top.png new file mode 100644 index 00000000..517b2c04 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png new file mode 100644 index 00000000..0ce833eb Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png new file mode 100644 index 00000000..72c86b4e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log_top.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log_top.png new file mode 100644 index 00000000..2ec64f3a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_planks.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_planks.png new file mode 100644 index 00000000..01552e8c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_planks.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png new file mode 100644 index 00000000..b20438b5 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_trapdoor.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_trapdoor.png new file mode 100644 index 00000000..6a2e8611 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_trapdoor.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png new file mode 100644 index 00000000..31796309 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png new file mode 100644 index 00000000..e9ec4958 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png new file mode 100644 index 00000000..671c01f3 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png new file mode 100644 index 00000000..9c8a28c4 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png new file mode 100644 index 00000000..81737db1 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png new file mode 100644 index 00000000..feaec19e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/ice_maker_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sand.png new file mode 100644 index 00000000..c22d6a28 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png new file mode 100644 index 00000000..26cba90e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png new file mode 100644 index 00000000..8839600d Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png new file mode 100644 index 00000000..c964fbc8 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/jadeite_sandstone_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/magenta_petunia.png b/src/main/resources/assets/emeraldcraft/textures/block/magenta_petunia.png new file mode 100644 index 00000000..10bf3161 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/magenta_petunia.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/melter_side.png b/src/main/resources/assets/emeraldcraft/textures/block/melter_side.png new file mode 100644 index 00000000..90cf98ef Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/melter_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/melter_top.png b/src/main/resources/assets/emeraldcraft/textures/block/melter_top.png new file mode 100644 index 00000000..cf2ebcc0 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/melter_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png new file mode 100644 index 00000000..f25f6006 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png new file mode 100644 index 00000000..ab729929 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_front.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png new file mode 100644 index 00000000..5c6c4f3b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_side.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_top.png b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_top.png new file mode 100644 index 00000000..f3ce4090 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/mineral_table_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sand.png new file mode 100644 index 00000000..a1899df6 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png new file mode 100644 index 00000000..5fae6766 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png new file mode 100644 index 00000000..7a2b9b6b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png new file mode 100644 index 00000000..8de4898f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/quartz_sandstone_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_bottom.png new file mode 100644 index 00000000..1c08dc35 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_bottom.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side0.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side0.png new file mode 100644 index 00000000..cf2cc108 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side0.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side1.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side1.png new file mode 100644 index 00000000..4de2a0b1 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side1.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side2.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side2.png new file mode 100644 index 00000000..5e1b6b3c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side2.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side3.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side3.png new file mode 100644 index 00000000..04bb092f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side3.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png new file mode 100644 index 00000000..b6636906 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_side4.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/squeezer_top.png b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_top.png new file mode 100644 index 00000000..f22c6a87 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/squeezer_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log.png new file mode 100644 index 00000000..b6918226 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log_top.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log_top.png new file mode 100644 index 00000000..d16955de Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log_top.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.png new file mode 100644 index 00000000..b8e4403f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_cobblestone.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_cobblestone.png new file mode 100644 index 00000000..cdc4c160 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/warped_cobblestone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png new file mode 100644 index 00000000..45504e5b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/warped_stone.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png new file mode 100644 index 00000000..e49f5c7c Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage0.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png new file mode 100644 index 00000000..66293e10 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage1.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png new file mode 100644 index 00000000..19c4e3ee Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/block/warped_wart_stage2.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/boat/ginkgo.png b/src/main/resources/assets/emeraldcraft/textures/entity/boat/ginkgo.png new file mode 100644 index 00000000..b0636dcf Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/boat/ginkgo.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png b/src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png new file mode 100644 index 00000000..4c77ea0a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/nether_lambman/nether_lambman.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png b/src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png new file mode 100644 index 00000000..839e7a40 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/nether_pigman/nether_pigman.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png b/src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png new file mode 100644 index 00000000..23878109 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/piglin_cutey/piglin_cutey.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png new file mode 100644 index 00000000..b891fe61 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/astrologist.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png new file mode 100644 index 00000000..f67a9289 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/beekeeper.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png new file mode 100644 index 00000000..1010dada Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/carpenter.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/chemical_engineer.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/chemical_engineer.png new file mode 100644 index 00000000..a8145b88 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/chemical_engineer.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png new file mode 100644 index 00000000..5ac6a409 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/geologist.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png new file mode 100644 index 00000000..eb6572ab Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/glazier.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png new file mode 100644 index 00000000..dcb0e152 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/grower.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png new file mode 100644 index 00000000..d4afbec6 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/icer.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png new file mode 100644 index 00000000..3cf0c0e5 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/villager/profession/miner.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png new file mode 100644 index 00000000..b891fe61 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/astrologist.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png new file mode 100644 index 00000000..f67a9289 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/beekeeper.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png new file mode 100644 index 00000000..1010dada Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/carpenter.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/chemical_engineer.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/chemical_engineer.png new file mode 100644 index 00000000..a8145b88 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/chemical_engineer.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png new file mode 100644 index 00000000..5ac6a409 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/geologist.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png new file mode 100644 index 00000000..eb6572ab Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/glazier.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png new file mode 100644 index 00000000..dcb0e152 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/grower.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png new file mode 100644 index 00000000..d4afbec6 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/icer.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png new file mode 100644 index 00000000..3cf0c0e5 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/entity/zombie_villager/profession/miner.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png new file mode 100644 index 00000000..a0dcf566 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/carpentry.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/continuous_miner.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/continuous_miner.png new file mode 100644 index 00000000..771c889b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/continuous_miner.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/glass_kiln.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/glass_kiln.png new file mode 100644 index 00000000..f40de39d Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/glass_kiln.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png new file mode 100644 index 00000000..5233f421 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/ice_maker.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png new file mode 100644 index 00000000..69653fc7 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/melter.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png b/src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png new file mode 100644 index 00000000..4f3e2a9f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/container/mineral_table.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_ice_maker.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_ice_maker.png new file mode 100644 index 00000000..0f67e7d3 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/gui_ice_maker.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png new file mode 100644 index 00000000..528c2900 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/gui_melter.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png new file mode 100644 index 00000000..2ff58d9a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/gui_mineral_table.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png b/src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png new file mode 100644 index 00000000..c2541136 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/gui/gui_vanilla.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png b/src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png new file mode 100644 index 00000000..ee2195af Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png b/src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png new file mode 100644 index 00000000..1702e29e Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/copper_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/copper_concentrate.png new file mode 100644 index 00000000..de577bd7 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/copper_concentrate.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png b/src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png new file mode 100644 index 00000000..87d2b492 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/diamond_nugget.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png new file mode 100644 index 00000000..4b0cbc57 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/emerald_chest.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_feet.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_feet.png new file mode 100644 index 00000000..d303ef10 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/emerald_feet.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_head.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_head.png new file mode 100644 index 00000000..6026fb30 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/emerald_head.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png new file mode 100644 index 00000000..8ce060e0 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/emerald_legs.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/emerald_nugget.png b/src/main/resources/assets/emeraldcraft/textures/item/emerald_nugget.png new file mode 100644 index 00000000..e8fcfb3f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/emerald_nugget.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_boat.png new file mode 100644 index 00000000..9559b977 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_boat.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png new file mode 100644 index 00000000..73126bac Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png new file mode 100644 index 00000000..5befe09d Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png new file mode 100644 index 00000000..c4ceba04 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png new file mode 100644 index 00000000..2b2ceca6 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png new file mode 100644 index 00000000..8282be6f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/iron_concentrate.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png b/src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png new file mode 100644 index 00000000..e8b75023 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/jade_apple.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png new file mode 100644 index 00000000..a4cd2fef Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/lapis_chest.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png new file mode 100644 index 00000000..af0f83af Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/lapis_feet.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png new file mode 100644 index 00000000..3538713d Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/lapis_head.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png new file mode 100644 index 00000000..7e6e2961 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/lapis_legs.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/lapis_nugget.png b/src/main/resources/assets/emeraldcraft/textures/item/lapis_nugget.png new file mode 100644 index 00000000..6b53839a Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/lapis_nugget.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png new file mode 100644 index 00000000..5c271cd3 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/melted_copper_bucket.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_emerald_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_emerald_bucket.png new file mode 100644 index 00000000..f9cddea5 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/melted_emerald_bucket.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png new file mode 100644 index 00000000..b9279c9b Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/melted_gold_bucket.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_iron_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_iron_bucket.png new file mode 100644 index 00000000..f9524f8f Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/melted_iron_bucket.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png b/src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png new file mode 100644 index 00000000..ce333ca6 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png new file mode 100644 index 00000000..1e348662 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald_legs.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald_legs.png new file mode 100644 index 00000000..7e65f1af Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/models/armor_emerald_legs.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png new file mode 100644 index 00000000..89a89e58 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis.png differ diff --git a/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis_legs.png b/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis_legs.png new file mode 100644 index 00000000..52fbc117 Binary files /dev/null and b/src/main/resources/assets/emeraldcraft/textures/models/armor_lapis_legs.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bee.png b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bee.png new file mode 100644 index 00000000..9aee1e3c Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bee.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bottle.png b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bottle.png new file mode 100644 index 00000000..b8ace4b0 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_bottle.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_potion.png b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_potion.png new file mode 100644 index 00000000..da8e68bb Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_potion.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png new file mode 100644 index 00000000..0e40acd2 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/banner/emeraldcraft_snow.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png new file mode 100644 index 00000000..465c7f7d Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bee.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png new file mode 100644 index 00000000..89f73a97 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_bottle.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_potion.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_potion.png new file mode 100644 index 00000000..4e784357 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_potion.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png new file mode 100644 index 00000000..ebb30bc2 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/shield/emeraldcraft_snow.png differ diff --git a/src/main/resources/assets/minecraft/textures/entity/signs/ginkgo.png b/src/main/resources/assets/minecraft/textures/entity/signs/ginkgo.png new file mode 100644 index 00000000..43107382 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/entity/signs/ginkgo.png differ diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json new file mode 100644 index 00000000..c6a3fa9d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json @@ -0,0 +1,56 @@ +{ + "parent": "emeraldcraft:emeraldcraft/hard_currency", + "display": { + "icon": { + "item": "emeraldcraft:emerald_head", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.emeraldcraft.green_light.title" + }, + "description": { + "translate": "advancements.emeraldcraft.green_light.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "rewards": { + "experience": 100 + }, + "criteria": { + "emerald_armor": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_head" + ] + }, + { + "items": [ + "emeraldcraft:emerald_chest" + ] + }, + { + "items": [ + "emeraldcraft:emerald_legs" + ] + }, + { + "items": [ + "emeraldcraft:emerald_feet" + ] + } + ] + } + } + }, + "requirements": [ + [ + "emerald_armor" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json new file mode 100644 index 00000000..533eaf39 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json @@ -0,0 +1,77 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:emerald_chest", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.emeraldcraft.hard_currency.title" + }, + "description": { + "translate": "advancements.emeraldcraft.hard_currency.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "emerald_helmet": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_head" + ] + } + ] + } + }, + "emerald_chestplate": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_chest" + ] + } + ] + } + }, + "emerald_leggings": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_legs" + ] + } + ] + } + }, + "emerald_boots": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_feet" + ] + } + ] + } + } + }, + "requirements": [ + [ + "emerald_helmet", + "emerald_chestplate", + "emerald_leggings", + "emerald_boots" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json new file mode 100644 index 00000000..30d0d2f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json @@ -0,0 +1,37 @@ +{ + "display": { + "icon": { + "item": "emeraldcraft:emerald_stairs" + }, + "title": { + "translate": "advancements.emeraldcraft.root.title" + }, + "description": { + "translate": "advancements.emeraldcraft.root.description" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/block/emerald_block.png" + }, + "criteria": { + "green_currency": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "minecraft:emerald" + ] + } + ] + } + } + }, + "requirements": [ + [ + "green_currency" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json new file mode 100644 index 00000000..60384444 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json new file mode 100644 index 00000000..338baa46 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json new file mode 100644 index 00000000..57699e66 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json new file mode 100644 index 00000000..e3fbe799 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json new file mode 100644 index 00000000..76479549 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json new file mode 100644 index 00000000..3c64ba3c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:blue_nether_brick_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:blue_nether_brick_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json new file mode 100644 index 00000000..5fad7c48 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_brick_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json new file mode 100644 index 00000000..a0263799 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_brick_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json new file mode 100644 index 00000000..8c4654b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_bricks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json new file mode 100644 index 00000000..3c78abc8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:carpentry_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json new file mode 100644 index 00000000..a7d24882 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:continuous_miner" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json new file mode 100644 index 00000000..d4856c42 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json new file mode 100644 index 00000000..a3242fc0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:crimson_cobblestone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:crimson_cobblestone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..787ed98e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json new file mode 100644 index 00000000..8af0abee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json new file mode 100644 index 00000000..e19644bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json @@ -0,0 +1,44 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "emeraldcraft:crimson_stone" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "emeraldcraft:crimson_cobblestone" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json new file mode 100644 index 00000000..30edfd22 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:crimson_stone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:crimson_stone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json new file mode 100644 index 00000000..e28ce009 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_stone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json new file mode 100644 index 00000000..a25b105b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_stone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json new file mode 100644 index 00000000..298070b4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crystalball_table" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json new file mode 100644 index 00000000..249b81d3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..0c2b5e86 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json new file mode 100644 index 00000000..d4907109 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..2b748592 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json new file mode 100644 index 00000000..ae637c7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..454b188f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json new file mode 100644 index 00000000..00dde035 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..0f3b77bd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json new file mode 100644 index 00000000..59ff6fca --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..9e178140 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json new file mode 100644 index 00000000..43847493 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cyan_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json new file mode 100644 index 00000000..0010a8e9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json new file mode 100644 index 00000000..bb01f34a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json new file mode 100644 index 00000000..88267b19 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json new file mode 100644 index 00000000..18a8fa01 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json new file mode 100644 index 00000000..ef88fcff --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json new file mode 100644 index 00000000..318d0b6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:diamond_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:diamond_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json new file mode 100644 index 00000000..37f1cbbb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:diamond_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json new file mode 100644 index 00000000..59f5d49f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:diamond_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json new file mode 100644 index 00000000..0a513ac6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:emerald_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:emerald_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json new file mode 100644 index 00000000..d5d9c955 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emerald_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json new file mode 100644 index 00000000..66ad9f19 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emerald_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json new file mode 100644 index 00000000..f4f73dd6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json new file mode 100644 index 00000000..35c2f8b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json new file mode 100644 index 00000000..77541bf7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json new file mode 100644 index 00000000..18bf074c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json new file mode 100644 index 00000000..0c231044 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json new file mode 100644 index 00000000..7dabbfd9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json new file mode 100644 index 00000000..f4f2c529 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:ginkgo_door", + "properties": { + "half": "lower" + } + } + ], + "name": "emeraldcraft:ginkgo_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json new file mode 100644 index 00000000..029ec160 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json new file mode 100644 index 00000000..9aae855f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json new file mode 100644 index 00000000..4478e91b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json @@ -0,0 +1,185 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "emeraldcraft:ginkgo_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "emeraldcraft:ginkgo_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "emeraldcraft:ginkgo_nut" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json new file mode 100644 index 00000000..ac03dcab --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json new file mode 100644 index 00000000..052e7ade --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json new file mode 100644 index 00000000..174a1f32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json new file mode 100644 index 00000000..3a1e5c49 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json new file mode 100644 index 00000000..c46edc3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json new file mode 100644 index 00000000..fc81c457 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:ginkgo_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:ginkgo_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json new file mode 100644 index 00000000..42e7606e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json new file mode 100644 index 00000000..7f20eb36 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json new file mode 100644 index 00000000..eaec1442 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json new file mode 100644 index 00000000..66719568 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:glass_kiln" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json new file mode 100644 index 00000000..c42a13bd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:gold_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:gold_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json new file mode 100644 index 00000000..f5795e09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:gold_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json new file mode 100644 index 00000000..ee9d8293 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:gold_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json new file mode 100644 index 00000000..3cb3aa4f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ice_maker" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json new file mode 100644 index 00000000..5083d7dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:iron_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:iron_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json new file mode 100644 index 00000000..6e2d90ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:iron_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json new file mode 100644 index 00000000..906971c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:iron_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json new file mode 100644 index 00000000..857897f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json new file mode 100644 index 00000000..ebde40dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json new file mode 100644 index 00000000..8c46235a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..388be488 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json new file mode 100644 index 00000000..6c24731e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json new file mode 100644 index 00000000..8f54a20d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:lapis_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:lapis_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json new file mode 100644 index 00000000..8e93a632 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lapis_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json new file mode 100644 index 00000000..78ee26ca --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lapis_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json new file mode 100644 index 00000000..011c01a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:magenta_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json new file mode 100644 index 00000000..6ad08827 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:melter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json new file mode 100644 index 00000000..e86364e7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:mineral_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json new file mode 100644 index 00000000..249f7ab6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:netherite_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:netherite_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json new file mode 100644 index 00000000..02d5c606 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:netherite_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json new file mode 100644 index 00000000..a617b771 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:netherite_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json new file mode 100644 index 00000000..1b0155d5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cyan_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json new file mode 100644 index 00000000..3bdd9e69 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json new file mode 100644 index 00000000..d21a124e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:magenta_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json new file mode 100644 index 00000000..4b2a24cf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json new file mode 100644 index 00000000..ba62283a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json new file mode 100644 index 00000000..749cfa37 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json new file mode 100644 index 00000000..e5121c3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json new file mode 100644 index 00000000..7809ff67 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json new file mode 100644 index 00000000..7284f629 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..6322dfcc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..1df785a9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_azure_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json new file mode 100644 index 00000000..7b5ed45a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..ce3d9974 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..b6625ef1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_dark_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json new file mode 100644 index 00000000..a79eeccf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..afdfdc27 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..21623363 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_emery_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..a1743153 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..e40a2ece --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..e36db739 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_jadeite_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json new file mode 100644 index 00000000..eecb5910 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..75ea5526 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..a193480b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_quartz_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json new file mode 100644 index 00000000..332b1f3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:squeezer" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json new file mode 100644 index 00000000..561426d2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_ginkgo_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json new file mode 100644 index 00000000..e8ae41a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_ginkgo_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json new file mode 100644 index 00000000..e20a2f70 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:vitrified_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json new file mode 100644 index 00000000..ed714720 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json new file mode 100644 index 00000000..91d57661 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_cobblestone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:warped_cobblestone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json new file mode 100644 index 00000000..41cf1b02 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json new file mode 100644 index 00000000..e2446ba6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json new file mode 100644 index 00000000..5a095745 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json @@ -0,0 +1,44 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "emeraldcraft:warped_stone" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "emeraldcraft:warped_cobblestone" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json new file mode 100644 index 00000000..7cbd1bb1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_stone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:warped_stone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json new file mode 100644 index 00000000..544d6d6a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_stone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json new file mode 100644 index 00000000..cd296404 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_stone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json new file mode 100644 index 00000000..10849160 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json @@ -0,0 +1,57 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_wart", + "properties": { + "age": "3" + } + } + ], + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + }, + { + "function": "minecraft:apply_bonus", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_wart", + "properties": { + "age": "3" + } + } + ], + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 1 + } + } + ], + "name": "emeraldcraft:warped_wart" + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json new file mode 100644 index 00000000..4c4d0342 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 9.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:gold_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_pickaxe" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:nether_wart_block" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:cooked_porkchop" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:saddle" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_apple" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json new file mode 100644 index 00000000..df66ace1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json @@ -0,0 +1,127 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 8.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "name": "minecraft:nether_brick" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 7.0 + }, + "add": false + } + ], + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:porkchop" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "name": "minecraft:book" + }, + { + "type": "minecraft:item", + "name": "minecraft:feather" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json new file mode 100644 index 00000000..3d2a1b5a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 9.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:gold_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_pickaxe" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:warped_wart_block" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:cooked_mutton" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:saddle" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_apple" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json new file mode 100644 index 00000000..911ae248 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json @@ -0,0 +1,127 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 8.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "name": "minecraft:nether_brick" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 7.0 + }, + "add": false + } + ], + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:mutton" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "name": "minecraft:book" + }, + { + "type": "minecraft:item", + "name": "minecraft:feather" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json new file mode 100644 index 00000000..33cdf060 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json @@ -0,0 +1,290 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:golden_apple" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:enchanted_golden_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:agate_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "emeraldcraft:jade_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:name_tag" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:enchant_randomly" + } + ], + "name": "minecraft:book" + } + ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:bucket" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:melon_seeds" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:pumpkin_seeds" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:beetroot_seeds" + } + ] + }, + { + "rolls": 3.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:bone" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:amethyst_shard" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:rotten_flesh" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:string" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json new file mode 100644 index 00000000..8a3e4ca1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 44, + "name": "minecraft:crimson_roots" + }, + { + "type": "minecraft:item", + "weight": 51, + "name": "minecraft:crimson_fungus" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:warped_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:weeping_vines" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json new file mode 100644 index 00000000..721ad768 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json @@ -0,0 +1,51 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 33, + "name": "minecraft:warped_roots" + }, + { + "type": "minecraft:item", + "weight": 14, + "name": "minecraft:nether_sprouts" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:crimson_roots" + }, + { + "type": "minecraft:item", + "weight": 52, + "name": "minecraft:warped_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:crimson_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:twisting_vines" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json new file mode 100644 index 00000000..2d273db9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:flint" + }, + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:gravel" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:magma_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:clay_ball" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json new file mode 100644 index 00000000..66b2f1a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json @@ -0,0 +1,56 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:ancient_debris" + }, + { + "type": "minecraft:item", + "weight": 62, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "weight": 45, + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 109, + "name": "minecraft:netherrack" + }, + { + "type": "minecraft:item", + "weight": 65, + "name": "minecraft:blackstone" + }, + { + "type": "minecraft:item", + "weight": 69, + "name": "minecraft:basalt" + }, + { + "type": "minecraft:item", + "weight": 57, + "name": "minecraft:soul_sand" + }, + { + "type": "minecraft:item", + "weight": 40, + "name": "minecraft:soul_soil" + }, + { + "type": "minecraft:item", + "weight": 63, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json new file mode 100644 index 00000000..80f5603b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 16, + "name": "minecraft:obsidian" + }, + { + "type": "minecraft:item", + "weight": 17, + "name": "minecraft:crying_obsidian" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:blaze_powder" + }, + { + "type": "minecraft:item", + "weight": 6, + "name": "minecraft:glowstone_dust" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "emeraldcraft:vitrified_sand" + }, + { + "type": "minecraft:item", + "weight": 22, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json new file mode 100644 index 00000000..7c7651b2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json @@ -0,0 +1,116 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 13, + "name": "minecraft:amethyst_shard" + }, + { + "type": "minecraft:item", + "weight": 76, + "name": "minecraft:diamond" + }, + { + "type": "minecraft:item", + "weight": 189, + "name": "minecraft:coal" + }, + { + "type": "minecraft:item", + "weight": 210, + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "weight": 106, + "name": "minecraft:raw_gold" + }, + { + "type": "minecraft:item", + "weight": 249, + "name": "minecraft:raw_copper" + }, + { + "type": "minecraft:item", + "weight": 163, + "name": "minecraft:lapis_lazuli" + }, + { + "type": "minecraft:item", + "weight": 168, + "name": "minecraft:raw_iron" + }, + { + "type": "minecraft:item", + "weight": 159, + "name": "minecraft:cobblestone" + }, + { + "type": "minecraft:item", + "weight": 100, + "name": "minecraft:granite" + }, + { + "type": "minecraft:item", + "weight": 99, + "name": "minecraft:diorite" + }, + { + "type": "minecraft:item", + "weight": 101, + "name": "minecraft:andesite" + }, + { + "type": "minecraft:item", + "weight": 80, + "name": "minecraft:tuff" + }, + { + "type": "minecraft:item", + "weight": 92, + "name": "minecraft:cobbled_deepslate" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:calcite" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:smooth_basalt" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:dripstone_block" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:pointed_dripstone" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:amethyst_block" + }, + { + "type": "minecraft:item", + "weight": 215, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json new file mode 100644 index 00000000..154ff237 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:acacia_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:acacia_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:egg" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:acacia_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json new file mode 100644 index 00000000..41ae1e62 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 11, + "name": "minecraft:birch_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:birch_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:birch_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json new file mode 100644 index 00000000..aaa05450 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json @@ -0,0 +1,46 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:warped_stem" + }, + { + "type": "minecraft:item", + "weight": 9, + "name": "minecraft:warped_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:shroomlight" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:warped_wart_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:twisting_vines" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json new file mode 100644 index 00000000..9271dd74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:dark_oak_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:dark_oak_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:dark_oak_sapling" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json new file mode 100644 index 00000000..c425bf34 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:jungle_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:jungle_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:cocoa_beans" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:jungle_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json new file mode 100644 index 00000000..d49d1e5b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:oak_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:oak_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:apple" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:oak_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json new file mode 100644 index 00000000..82aee2bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:spruce_log" + }, + { + "type": "minecraft:item", + "weight": 13, + "name": "minecraft:spruce_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:spruce_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json new file mode 100644 index 00000000..1cf814a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json @@ -0,0 +1,46 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:crimson_stem" + }, + { + "type": "minecraft:item", + "weight": 9, + "name": "minecraft:crimson_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:shroomlight" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:nether_wart_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:weeping_vines" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json new file mode 100644 index 00000000..42452a30 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:blaze_powder" + }, + { + "type": "minecraft:item", + "name": "minecraft:soul_sand" + }, + { + "type": "minecraft:item", + "name": "minecraft:carved_pumpkin" + }, + { + "type": "minecraft:item", + "name": "minecraft:amethyst_shard" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json new file mode 100644 index 00000000..f2549af3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:honey_bottle" + }, + { + "type": "minecraft:item", + "name": "minecraft:honeycomb" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json new file mode 100644 index 00000000..b8c7ecc1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bookshelf" + }, + { + "type": "minecraft:item", + "name": "minecraft:shulker_shell" + }, + { + "type": "minecraft:item", + "name": "minecraft:note_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:chest" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json new file mode 100644 index 00000000..f76659c7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:gunpowder" + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli" + }, + { + "type": "minecraft:item", + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "name": "minecraft:bucket" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json new file mode 100644 index 00000000..22094456 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bone_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:terracotta" + }, + { + "type": "minecraft:item", + "name": "minecraft:tuff" + }, + { + "type": "minecraft:item", + "name": "minecraft:granite" + }, + { + "type": "minecraft:item", + "name": "minecraft:diorite" + }, + { + "type": "minecraft:item", + "name": "minecraft:andesite" + }, + { + "type": "minecraft:item", + "name": "minecraft:diamond" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json new file mode 100644 index 00000000..5ef38b1a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:glass_bottle" + }, + { + "type": "minecraft:item", + "name": "minecraft:terracotta" + }, + { + "type": "minecraft:item", + "name": "minecraft:tinted_glass" + }, + { + "type": "minecraft:item", + "name": "minecraft:glass" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json new file mode 100644 index 00000000..766adf80 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:azure_bluet" + }, + { + "type": "minecraft:item", + "name": "minecraft:oxeye_daisy" + }, + { + "type": "minecraft:item", + "name": "minecraft:cornflower" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json new file mode 100644 index 00000000..d461db44 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:snowball" + }, + { + "type": "minecraft:item", + "name": "minecraft:snow_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:ice" + }, + { + "type": "minecraft:item", + "name": "minecraft:packed_ice" + }, + { + "type": "minecraft:item", + "name": "minecraft:blue_ice" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json new file mode 100644 index 00000000..f974cd26 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:copper_ingot" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json new file mode 100644 index 00000000..9ce90e76 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json new file mode 100644 index 00000000..eabe4f32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json new file mode 100644 index 00000000..75c9692d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json new file mode 100644 index 00000000..0c5769ce --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json new file mode 100644 index 00000000..7d848113 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json new file mode 100644 index 00000000..f336242c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..b3842551 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json new file mode 100644 index 00000000..51af9bdc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json new file mode 100644 index 00000000..473d7611 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json new file mode 100644 index 00000000..2069aeea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json new file mode 100644 index 00000000..37d0371b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json new file mode 100644 index 00000000..9add56c8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:acacia_log" + } + ], + "result": "minecraft:acacia_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json new file mode 100644 index 00000000..101b435f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:barrel", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json new file mode 100644 index 00000000..462ed5c2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json new file mode 100644 index 00000000..5820a3cc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json new file mode 100644 index 00000000..d8bc0dd7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json new file mode 100644 index 00000000..03690cf8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json new file mode 100644 index 00000000..871b7c45 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json new file mode 100644 index 00000000..f1345ee3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..7a3e57d9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json new file mode 100644 index 00000000..1c741727 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json new file mode 100644 index 00000000..af9d0172 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json new file mode 100644 index 00000000..e77de61f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json new file mode 100644 index 00000000..81f661dc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json new file mode 100644 index 00000000..daadd38c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:birch_log" + } + ], + "result": "minecraft:birch_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json new file mode 100644 index 00000000..a4947915 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:planks" + } + ], + "result": "minecraft:bowl", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json new file mode 100644 index 00000000..125cd365 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json new file mode 100644 index 00000000..f1fc45af --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:crafting_table", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json new file mode 100644 index 00000000..7221c873 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json new file mode 100644 index 00000000..7ba56510 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json new file mode 100644 index 00000000..98b8a2ac --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json new file mode 100644 index 00000000..1f721e5f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json new file mode 100644 index 00000000..87fed88b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:crimson_stem" + } + ], + "result": "minecraft:crimson_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json new file mode 100644 index 00000000..24efd9b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..306bc8ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json new file mode 100644 index 00000000..0d72a301 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json new file mode 100644 index 00000000..e2dffa50 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json new file mode 100644 index 00000000..50c9781d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json new file mode 100644 index 00000000..06166435 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json new file mode 100644 index 00000000..9e571354 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json new file mode 100644 index 00000000..de69b46a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json new file mode 100644 index 00000000..e429f1b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json new file mode 100644 index 00000000..a0e00cc3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a24697b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json new file mode 100644 index 00000000..cfc211e4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..90cc0910 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json new file mode 100644 index 00000000..eeb596be --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json new file mode 100644 index 00000000..b91e301a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json new file mode 100644 index 00000000..1a6f5823 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json new file mode 100644 index 00000000..8973b4e4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json new file mode 100644 index 00000000..4b0b1d35 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:dark_oak_log" + } + ], + "result": "minecraft:dark_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json new file mode 100644 index 00000000..a6fffc55 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json new file mode 100644 index 00000000..5283737b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json new file mode 100644 index 00000000..77cca168 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json new file mode 100644 index 00000000..4583ef74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json new file mode 100644 index 00000000..bc59e86f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json new file mode 100644 index 00000000..000e8e5d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..428ac78b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json new file mode 100644 index 00000000..4dea5e51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json new file mode 100644 index 00000000..64e354f9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json new file mode 100644 index 00000000..561e3edd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json new file mode 100644 index 00000000..7714dc2f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json new file mode 100644 index 00000000..2b134904 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_log" + } + ], + "result": "emeraldcraft:ginkgo_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json new file mode 100644 index 00000000..ba342c0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json new file mode 100644 index 00000000..a2de0c2a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json new file mode 100644 index 00000000..bd2932c4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json new file mode 100644 index 00000000..c418ecee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json new file mode 100644 index 00000000..ea1f9a0d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json new file mode 100644 index 00000000..0bb3f38e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..86ecdaa3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json new file mode 100644 index 00000000..00a6d873 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json new file mode 100644 index 00000000..4ec6c8b7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json new file mode 100644 index 00000000..eac2e7fe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json new file mode 100644 index 00000000..d5239149 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json new file mode 100644 index 00000000..2c25a282 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:jungle_log" + } + ], + "result": "minecraft:jungle_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json new file mode 100644 index 00000000..b9ff2570 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json new file mode 100644 index 00000000..160dee03 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json new file mode 100644 index 00000000..19d762f3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json new file mode 100644 index 00000000..00c5eef6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json new file mode 100644 index 00000000..18ce1cf5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json new file mode 100644 index 00000000..f7ea05d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..6a0253f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json new file mode 100644 index 00000000..dcd74089 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json new file mode 100644 index 00000000..d33fe7ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json new file mode 100644 index 00000000..751133f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json new file mode 100644 index 00000000..a33c03e8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json new file mode 100644 index 00000000..9639b119 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:oak_log" + } + ], + "result": "minecraft:oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json new file mode 100644 index 00000000..6b5de2cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json new file mode 100644 index 00000000..214ca646 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json new file mode 100644 index 00000000..2f261d7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json new file mode 100644 index 00000000..9412ac67 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a6534c74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json new file mode 100644 index 00000000..897cdb21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..3f505f9b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json new file mode 100644 index 00000000..51babb92 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json new file mode 100644 index 00000000..01db6989 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json new file mode 100644 index 00000000..1f576d3c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json new file mode 100644 index 00000000..2b2f705d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json new file mode 100644 index 00000000..a83514e6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:spruce_log" + } + ], + "result": "minecraft:spruce_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json new file mode 100644 index 00000000..91fba463 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "sticks", + "ingredients": [ + { + "tag": "minecraft:planks" + } + ], + "result": "minecraft:stick", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json new file mode 100644 index 00000000..ba90f673 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:acacia_log" + } + ], + "result": "minecraft:stripped_acacia_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json new file mode 100644 index 00000000..6b1b3dcb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_acacia_log" + } + ], + "result": "minecraft:stripped_acacia_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json new file mode 100644 index 00000000..e0b62d75 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:birch_log" + } + ], + "result": "minecraft:stripped_birch_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json new file mode 100644 index 00000000..1720afd5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_birch_log" + } + ], + "result": "minecraft:stripped_birch_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json new file mode 100644 index 00000000..3af817b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:crimson_stem" + } + ], + "result": "minecraft:stripped_crimson_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json new file mode 100644 index 00000000..c457bc6c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_crimson_stem" + } + ], + "result": "minecraft:stripped_crimson_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json new file mode 100644 index 00000000..18cababf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:dark_oak_log" + } + ], + "result": "minecraft:stripped_dark_oak_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json new file mode 100644 index 00000000..eb798c8e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_dark_oak_log" + } + ], + "result": "minecraft:stripped_dark_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json new file mode 100644 index 00000000..434b3f3b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_log" + } + ], + "result": "emeraldcraft:stripped_ginkgo_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json new file mode 100644 index 00000000..7d8f5fee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:stripped_ginkgo_log" + } + ], + "result": "emeraldcraft:stripped_ginkgo_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json new file mode 100644 index 00000000..9eded676 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:jungle_log" + } + ], + "result": "minecraft:stripped_jungle_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json new file mode 100644 index 00000000..ae66d6e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_jungle_log" + } + ], + "result": "minecraft:stripped_jungle_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json new file mode 100644 index 00000000..2ad49eb1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:oak_log" + } + ], + "result": "minecraft:stripped_oak_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json new file mode 100644 index 00000000..7b1b587a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_oak_log" + } + ], + "result": "minecraft:stripped_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json new file mode 100644 index 00000000..f182b63a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:spruce_log" + } + ], + "result": "minecraft:stripped_spruce_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json new file mode 100644 index 00000000..1b639fd4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_spruce_log" + } + ], + "result": "minecraft:stripped_spruce_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json new file mode 100644 index 00000000..1c54981e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:warped_stem" + } + ], + "result": "minecraft:stripped_warped_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json new file mode 100644 index 00000000..99362ba4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_warped_stem" + } + ], + "result": "minecraft:stripped_warped_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json new file mode 100644 index 00000000..035bc333 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json new file mode 100644 index 00000000..89860216 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json new file mode 100644 index 00000000..ff171274 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json new file mode 100644 index 00000000..4652e566 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json new file mode 100644 index 00000000..5c25a315 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:warped_stem" + } + ], + "result": "minecraft:warped_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json new file mode 100644 index 00000000..7141a3cc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..dde29343 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json new file mode 100644 index 00000000..957e0281 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json new file mode 100644 index 00000000..f52d0f9c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json new file mode 100644 index 00000000..a24cce3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json new file mode 100644 index 00000000..5600d13d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json new file mode 100644 index 00000000..91914bcb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:lapis_lazuli" + }, + "X": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "emeraldcraft:agate_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json new file mode 100644 index 00000000..e1546b79 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:azure_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json new file mode 100644 index 00000000..7b3e3819 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sand" + } + }, + "result": { + "item": "emeraldcraft:azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json new file mode 100644 index 00000000..aed1980b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:azure_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json new file mode 100644 index 00000000..fd0a4cf6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:azure_sandstone" + }, + { + "item": "emeraldcraft:cut_azure_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:azure_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json new file mode 100644 index 00000000..77e95852 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:azure_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json new file mode 100644 index 00000000..4c0e31a2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json new file mode 100644 index 00000000..f89c2e58 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json new file mode 100644 index 00000000..eba07382 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json new file mode 100644 index 00000000..a80f8237 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "NW", + "WN" + ], + "key": { + "W": { + "item": "emeraldcraft:warped_wart" + }, + "N": { + "item": "minecraft:nether_brick" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json new file mode 100644 index 00000000..55657057 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " I ", + "PCP" + ], + "key": { + "P": { + "tag": "minecraft:planks" + }, + "C": { + "item": "minecraft:crafting_table" + }, + "I": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "emeraldcraft:carpentry_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json new file mode 100644 index 00000000..55fc77dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "RRR", + "IEI", + "P#P" + ], + "key": { + "R": { + "item": "emeraldcraft:rock_breaker" + }, + "I": { + "item": "minecraft:iron_ingot" + }, + "E": { + "item": "minecraft:emerald_block" + }, + "#": { + "item": "minecraft:redstone" + }, + "P": { + "item": "minecraft:piston" + } + }, + "result": { + "item": "emeraldcraft:continuous_miner" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json new file mode 100644 index 00000000..d2a0afc5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_copper" + } + }, + "result": { + "item": "emeraldcraft:copper_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json new file mode 100644 index 00000000..d1ce3ab1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..53bec736 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json new file mode 100644 index 00000000..2dd4c3e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:crimson_cobblestone" + } + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json new file mode 100644 index 00000000..f561eca3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_stone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json new file mode 100644 index 00000000..9c91f8d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_stone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json new file mode 100644 index 00000000..4239680c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:crimson_stone" + } + }, + "result": { + "item": "emeraldcraft:crimson_stone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json new file mode 100644 index 00000000..2d029940 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "AGA", + "###" + ], + "key": { + "#": { + "tag": "minecraft:planks" + }, + "G": { + "item": "minecraft:glass" + }, + "A": { + "item": "minecraft:amethyst_shard" + } + }, + "result": { + "item": "emeraldcraft:crystalball_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json new file mode 100644 index 00000000..954d87fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_azure_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..ca14d47b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json new file mode 100644 index 00000000..f2941e63 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_dark_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..12fc8f7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json new file mode 100644 index 00000000..4bb838a5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_emery_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..e3e52809 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json new file mode 100644 index 00000000..2a7fbb57 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_jadeite_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..a7707d36 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json new file mode 100644 index 00000000..96691a82 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_quartz_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..5d24b591 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json new file mode 100644 index 00000000..1e364584 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:dark_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json new file mode 100644 index 00000000..8725f42e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sand" + } + }, + "result": { + "item": "emeraldcraft:dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json new file mode 100644 index 00000000..b71284f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:dark_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json new file mode 100644 index 00000000..b4a351bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:dark_sandstone" + }, + { + "item": "emeraldcraft:cut_dark_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:dark_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json new file mode 100644 index 00000000..e0a4113c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:dark_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json new file mode 100644 index 00000000..27868da9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:diamond_nugget" + } + }, + "result": { + "item": "minecraft:diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json new file mode 100644 index 00000000..8dd990c0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:diamond_block" + } + ] + }, + "result": { + "item": "emeraldcraft:diamond_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json new file mode 100644 index 00000000..a451b4f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:diamond_block" + } + ] + }, + "result": { + "item": "emeraldcraft:diamond_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json new file mode 100644 index 00000000..4b403f21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:diamond_block" + } + }, + "result": { + "item": "emeraldcraft:diamond_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json new file mode 100644 index 00000000..b0992128 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json new file mode 100644 index 00000000..753eaaa4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json new file mode 100644 index 00000000..e494d0e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:emerald_nugget" + } + }, + "result": { + "item": "minecraft:emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json new file mode 100644 index 00000000..6dddcf23 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_head" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json new file mode 100644 index 00000000..b17a48e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json new file mode 100644 index 00000000..f6bbd14c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:emerald_block" + } + ] + }, + "result": { + "item": "emeraldcraft:emerald_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json new file mode 100644 index 00000000..85a598fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:emerald_block" + } + ] + }, + "result": { + "item": "emeraldcraft:emerald_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json new file mode 100644 index 00000000..0e6f7502 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:emerald_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json new file mode 100644 index 00000000..a06ef339 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sand" + }, + "O": { + "item": "minecraft:charcoal" + } + }, + "result": { + "item": "emeraldcraft:emery_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json new file mode 100644 index 00000000..ad1c969a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sand" + } + }, + "result": { + "item": "emeraldcraft:emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json new file mode 100644 index 00000000..93dcdba2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:emery_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json new file mode 100644 index 00000000..7c7940a1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:emery_sandstone" + }, + { + "item": "emeraldcraft:cut_emery_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:emery_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json new file mode 100644 index 00000000..8395f807 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:emery_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json new file mode 100644 index 00000000..b93611a0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json new file mode 100644 index 00000000..67205b4b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json new file mode 100644 index 00000000..0c9b7ac1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json new file mode 100644 index 00000000..4c51bb84 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json new file mode 100644 index 00000000..855f9892 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json new file mode 100644 index 00000000..265c4199 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json new file mode 100644 index 00000000..802c2b5a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json new file mode 100644 index 00000000..438ec6e6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json new file mode 100644 index 00000000..c19f4091 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json new file mode 100644 index 00000000..749890ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_log" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json new file mode 100644 index 00000000..4f1082b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "BBB", + "BXB", + "###" + ], + "key": { + "#": { + "item": "minecraft:glass" + }, + "X": { + "item": "minecraft:furnace" + }, + "B": { + "item": "minecraft:brick" + } + }, + "result": { + "item": "emeraldcraft:glass_kiln" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json new file mode 100644 index 00000000..b09ccd6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_gold" + } + }, + "result": { + "item": "emeraldcraft:gold_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json new file mode 100644 index 00000000..0288d71d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:gold_block" + } + ] + }, + "result": { + "item": "emeraldcraft:gold_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json new file mode 100644 index 00000000..087f48c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:gold_block" + } + ] + }, + "result": { + "item": "emeraldcraft:gold_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json new file mode 100644 index 00000000..7ddb2b3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:gold_block" + } + }, + "result": { + "item": "emeraldcraft:gold_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json new file mode 100644 index 00000000..a567099d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#B#", + "IEI", + "###" + ], + "key": { + "#": { + "tag": "forge:cobblestone" + }, + "B": { + "item": "minecraft:brick" + }, + "I": { + "item": "minecraft:ice" + }, + "E": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:ice_maker", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json new file mode 100644 index 00000000..d74a4d8a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_iron" + } + }, + "result": { + "item": "emeraldcraft:iron_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json new file mode 100644 index 00000000..8ae8a43d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:iron_block" + } + ] + }, + "result": { + "item": "emeraldcraft:iron_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json new file mode 100644 index 00000000..2efdc2a7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:iron_block" + } + ] + }, + "result": { + "item": "emeraldcraft:iron_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json new file mode 100644 index 00000000..f1e15335 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:iron_block" + } + }, + "result": { + "item": "emeraldcraft:iron_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json new file mode 100644 index 00000000..dcf67e10 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "X": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "emeraldcraft:jade_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json new file mode 100644 index 00000000..5d01af9f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json new file mode 100644 index 00000000..53d3623a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sand" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json new file mode 100644 index 00000000..9247128d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:jadeite_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..0d38d302 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:jadeite_sandstone" + }, + { + "item": "emeraldcraft:cut_jadeite_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json new file mode 100644 index 00000000..edf2bb0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json new file mode 100644 index 00000000..08771176 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json new file mode 100644 index 00000000..d5ebbeba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json new file mode 100644 index 00000000..eb581b09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_head" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json new file mode 100644 index 00000000..56a274b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:lapis_nugget" + } + }, + "result": { + "item": "minecraft:lapis_lazuli" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json new file mode 100644 index 00000000..b09836ea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json new file mode 100644 index 00000000..a6e0004f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:lapis_block" + } + ] + }, + "result": { + "item": "emeraldcraft:lapis_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json new file mode 100644 index 00000000..1a882ced --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:lapis_block" + } + ] + }, + "result": { + "item": "emeraldcraft:lapis_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json new file mode 100644 index 00000000..33202bdc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:lapis_block" + } + }, + "result": { + "item": "emeraldcraft:lapis_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json new file mode 100644 index 00000000..286b5d20 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "#E#", + "#M#" + ], + "key": { + "#": { + "tag": "forge:cobblestone" + }, + "M": { + "item": "minecraft:magma_block" + }, + "E": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:melter", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json new file mode 100644 index 00000000..fd9a164c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "DXD", + "DDD" + ], + "key": { + "#": { + "item": "minecraft:iron_ingot" + }, + "X": { + "item": "minecraft:furnace" + }, + "D": { + "item": "minecraft:polished_deepslate" + } + }, + "result": { + "item": "emeraldcraft:mineral_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json new file mode 100644 index 00000000..cd5dff85 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:netherite_block" + } + ] + }, + "result": { + "item": "emeraldcraft:netherite_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json new file mode 100644 index 00000000..020a986b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:netherite_block" + } + ] + }, + "result": { + "item": "emeraldcraft:netherite_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json new file mode 100644 index 00000000..ecb91ef9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:netherite_block" + } + }, + "result": { + "item": "emeraldcraft:netherite_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json new file mode 100644 index 00000000..a9576f43 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:quartz" + } + }, + "result": { + "item": "emeraldcraft:quartz_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json new file mode 100644 index 00000000..c0339cb0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sand" + } + }, + "result": { + "item": "emeraldcraft:quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json new file mode 100644 index 00000000..813688de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:quartz_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json new file mode 100644 index 00000000..a8b44a2a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:quartz_sandstone" + }, + { + "item": "emeraldcraft:cut_quartz_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json new file mode 100644 index 00000000..ad059a11 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json new file mode 100644 index 00000000..ade70684 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "DOD", + "OBO", + "COC" + ], + "key": { + "D": { + "item": "minecraft:diamond" + }, + "O": { + "item": "minecraft:obsidian" + }, + "B": { + "item": "minecraft:blaze_rod" + }, + "C": { + "item": "minecraft:copper_ingot" + } + }, + "result": { + "item": "emeraldcraft:rock_breaker", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..4c934505 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..83c1a7c6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_azure_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..03a0a7f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..fd735256 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_dark_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..2360234c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..ec7152c3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_emery_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..2c2c376f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..2f79f7b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_jadeite_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..eeec6fa9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..18cad0ef --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_quartz_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json new file mode 100644 index 00000000..6c0678d1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " I ", + "#H#", + "###" + ], + "key": { + "#": { + "tag": "minecraft:planks" + }, + "H": { + "item": "minecraft:honeycomb_block" + }, + "I": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "emeraldcraft:squeezer" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json new file mode 100644 index 00000000..ff184cab --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:stripped_ginkgo_log" + } + }, + "result": { + "item": "emeraldcraft:stripped_ginkgo_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json new file mode 100644 index 00000000..c4fffe7c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json new file mode 100644 index 00000000..8648c72a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json new file mode 100644 index 00000000..9b793783 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_cobblestone" + } + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json new file mode 100644 index 00000000..cd0d1e00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_stone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json new file mode 100644 index 00000000..690bf613 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_stone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json new file mode 100644 index 00000000..c74f1cfe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_stone" + } + }, + "result": { + "item": "emeraldcraft:warped_stone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json new file mode 100644 index 00000000..01786f94 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_wart" + } + }, + "result": { + "item": "minecraft:warped_wart_block" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json new file mode 100644 index 00000000..c104e010 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:lapis_lazuli" + } + ], + "result": { + "item": "emeraldcraft:azure_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json new file mode 100644 index 00000000..1f231189 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:nether_wart_block" + } + ], + "result": { + "item": "emeraldcraft:crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json new file mode 100644 index 00000000..742200c1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:nether_wart_block" + } + ], + "result": { + "item": "emeraldcraft:crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json new file mode 100644 index 00000000..36211089 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "cyan_dye", + "ingredients": [ + { + "item": "emeraldcraft:cyan_petunia" + } + ], + "result": { + "item": "minecraft:cyan_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json new file mode 100644 index 00000000..fa961d57 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:diamond" + } + ], + "result": { + "item": "emeraldcraft:diamond_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json new file mode 100644 index 00000000..62ae4908 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:emerald" + } + ], + "result": { + "item": "emeraldcraft:emerald_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json new file mode 100644 index 00000000..b44d64b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "emeraldcraft:quartz_sand" + }, + { + "item": "minecraft:charcoal" + } + ], + "result": { + "item": "emeraldcraft:emery_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json new file mode 100644 index 00000000..6af161b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": { + "item": "emeraldcraft:ginkgo_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json new file mode 100644 index 00000000..33809217 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": { + "item": "emeraldcraft:ginkgo_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json new file mode 100644 index 00000000..3bbb8693 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:emerald" + } + ], + "result": { + "item": "emeraldcraft:jadeite_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json new file mode 100644 index 00000000..bcfdbd99 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:lapis_lazuli" + } + ], + "result": { + "item": "emeraldcraft:lapis_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json new file mode 100644 index 00000000..03e98a9c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "magenta_dye", + "ingredients": [ + { + "item": "emeraldcraft:magenta_petunia" + } + ], + "result": { + "item": "minecraft:magenta_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json new file mode 100644 index 00000000..fde07036 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:quartz" + } + ], + "result": { + "item": "emeraldcraft:quartz_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json new file mode 100644 index 00000000..839c0a56 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:warped_wart_block" + } + ], + "result": { + "item": "emeraldcraft:warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json new file mode 100644 index 00000000..6ec49525 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:warped_wart_block" + } + ], + "result": { + "item": "emeraldcraft:warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..3b5c2557 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:black_terracotta" + }, + "result": "minecraft:black_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..9fdf097f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:blue_terracotta" + }, + "result": "minecraft:blue_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json new file mode 100644 index 00000000..e8bc9d0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:clay_ball" + }, + "result": "minecraft:brick", + "experience": 0.3, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..9d7b1a5c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:brown_terracotta" + }, + "result": "minecraft:brown_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..6e2a86d8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:cyan_terracotta" + }, + "result": "minecraft:cyan_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json new file mode 100644 index 00000000..689923de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "tag": "minecraft:sand" + }, + "result": "minecraft:glass", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..672a6bd3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:gray_terracotta" + }, + "result": "minecraft:gray_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..f484b30e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:green_terracotta" + }, + "result": "minecraft:green_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..896ce784 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:light_blue_terracotta" + }, + "result": "minecraft:light_blue_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..856d1a8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:light_gray_terracotta" + }, + "result": "minecraft:light_gray_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..3e83732d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:lime_terracotta" + }, + "result": "minecraft:lime_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..f5c1db32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:magenta_terracotta" + }, + "result": "minecraft:magenta_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json new file mode 100644 index 00000000..71a7134a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:netherrack" + }, + "result": "minecraft:nether_brick", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..162b9a27 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:orange_terracotta" + }, + "result": "minecraft:orange_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..6245cb51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:pink_terracotta" + }, + "result": "minecraft:pink_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..193fe745 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:purple_terracotta" + }, + "result": "minecraft:purple_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..51714b6b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:red_terracotta" + }, + "result": "minecraft:red_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json new file mode 100644 index 00000000..6f50ef0c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:clay" + }, + "result": "minecraft:terracotta", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..5cb32471 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:white_terracotta" + }, + "result": "minecraft:white_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..a7cc83f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:yellow_terracotta" + }, + "result": "minecraft:yellow_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json new file mode 100644 index 00000000..e68d211d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_copper", + "amount": 100 + }, + "result": "minecraft:copper_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json new file mode 100644 index 00000000..8f51b77f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_emerald", + "amount": 100 + }, + "result": "minecraft:emerald_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json new file mode 100644 index 00000000..d9b11880 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_gold", + "amount": 100 + }, + "result": "minecraft:gold_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json new file mode 100644 index 00000000..aaeb47bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "water", + "amount": 100 + }, + "result": "minecraft:ice", + "freezingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json new file mode 100644 index 00000000..caf9fa7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_iron", + "amount": 100 + }, + "result": "minecraft:iron_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json new file mode 100644 index 00000000..f31e3970 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "lava", + "amount": 100 + }, + "result": "minecraft:obsidian", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json new file mode 100644 index 00000000..17a2a3ad --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:blackstone" + }, + "result": { + "fluid": "lava", + "amount": 50 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json new file mode 100644 index 00000000..9aa3d653 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:cobblestone" + }, + "result": { + "fluid": "lava", + "amount": 50 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json new file mode 100644 index 00000000..2cb9dff6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:magma_block" + }, + "result": { + "fluid": "lava", + "amount": 100 + }, + "meltingtime": 40 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json new file mode 100644 index 00000000..44daac2d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:magma_cream" + }, + "result": { + "fluid": "lava", + "amount": 25 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json new file mode 100644 index 00000000..faf842c7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:copper_block" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json new file mode 100644 index 00000000..f53e5eda --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:copper_concentrate" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json new file mode 100644 index 00000000..0b02fe9a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json new file mode 100644 index 00000000..43f83cf9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:exposed_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json new file mode 100644 index 00000000..ee4ba5b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:exposed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json new file mode 100644 index 00000000..b74c3cb6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:oxidized_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json new file mode 100644 index 00000000..789cf9ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:oxidized_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json new file mode 100644 index 00000000..ebe64430 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_copper_block" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json new file mode 100644 index 00000000..1a54452f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json new file mode 100644 index 00000000..981e7106 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_exposed_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json new file mode 100644 index 00000000..a0fb4829 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_exposed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json new file mode 100644 index 00000000..2ec3746f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_oxidized_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json new file mode 100644 index 00000000..b3e44b72 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_oxidized_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json new file mode 100644 index 00000000..d1cff34d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_weathered_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json new file mode 100644 index 00000000..d36b05b2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_weathered_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json new file mode 100644 index 00000000..447ae5fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:weathered_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json new file mode 100644 index 00000000..e5e65e01 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:weathered_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json new file mode 100644 index 00000000..9baf4d6a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": { + "fluid": "melted_emerald", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json new file mode 100644 index 00000000..064e02b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": { + "fluid": "melted_gold", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json new file mode 100644 index 00000000..4868ffc8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:gold_concentrate" + }, + "result": { + "fluid": "melted_gold", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json new file mode 100644 index 00000000..2e819c68 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": { + "fluid": "melted_iron", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json new file mode 100644 index 00000000..9b1c1f78 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:iron_concentrate" + }, + "result": { + "fluid": "melted_iron", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json new file mode 100644 index 00000000..4829bde2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:ice" + }, + "result": { + "fluid": "water", + "amount": 100 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json new file mode 100644 index 00000000..4f570ab2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:snow_block" + }, + "result": { + "fluid": "water", + "amount": 100 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json new file mode 100644 index 00000000..517bf6de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:snowball" + }, + "result": { + "fluid": "water", + "amount": 25 + }, + "meltingtime": 10 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json new file mode 100644 index 00000000..c68a4585 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:coal_block" + }, + "result": "emeraldcraft:diamond_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json new file mode 100644 index 00000000..94333a4b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "emeraldcraft:jadeite_sand" + }, + "result": "emeraldcraft:emerald_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json new file mode 100644 index 00000000..3d527c32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:red_sand" + }, + "result": "minecraft:gold_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json new file mode 100644 index 00000000..0508e144 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:gravel" + }, + "result": "minecraft:iron_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json new file mode 100644 index 00000000..721953e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "emeraldcraft:azure_sand" + }, + "result": "emeraldcraft:lapis_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json new file mode 100644 index 00000000..4c79b945 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json new file mode 100644 index 00000000..87ba11c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:dark_sandstone" + }, + "result": "emeraldcraft:smooth_dark_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json new file mode 100644 index 00000000..6434db51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..1367c528 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json new file mode 100644 index 00000000..df915cb9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..b639d12a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..411623aa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..d46cd191 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..af88cd98 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..49aa8e46 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..3b36f1e2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..fed8eda4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..095af911 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..1d6f5320 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..26114e1f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..6431a472 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..d121e50b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..7ebff225 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..92ff9bd1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..cbd02bc6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..e506f850 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..5c54c653 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..abd9c7a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..74467914 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..06e9ec09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..dafda82c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..670de24f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..7c2f6c13 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..09c9c817 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json new file mode 100644 index 00000000..a3819b00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json new file mode 100644 index 00000000..fabdcc01 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json new file mode 100644 index 00000000..f6254956 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json new file mode 100644 index 00000000..5ac7a5eb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json new file mode 100644 index 00000000..6e616c21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json new file mode 100644 index 00000000..8e34baa3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..7f5b601b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..b7493e8d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..02f74cd9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json new file mode 100644 index 00000000..d542c90a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json new file mode 100644 index 00000000..cf89403a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json new file mode 100644 index 00000000..9f46c0cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json new file mode 100644 index 00000000..45e8bb38 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json new file mode 100644 index 00000000..8779c6b6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json new file mode 100644 index 00000000..5a167190 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..e1dc54fc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..573b03eb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..51bb0eb0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json new file mode 100644 index 00000000..49dd0e41 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json new file mode 100644 index 00000000..f21b0fc9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json new file mode 100644 index 00000000..104996b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json new file mode 100644 index 00000000..810f1016 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json new file mode 100644 index 00000000..b1a98d00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json new file mode 100644 index 00000000..13ea6980 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..e4e3d6ea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..c12a0609 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..f87311be --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..73987aaa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..799dea17 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..c674f26b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..1129cdf1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..1323c43c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..af7928e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..71548247 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..b99a05c0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..4a920f71 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..34f60aaa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..8b4f4845 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..e371056f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..d82a47fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..33b899bb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt new file mode 100644 index 00000000..aa3ee36a Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield2.nbt new file mode 100644 index 00000000..0e728dbc Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt new file mode 100644 index 00000000..f52ee7d1 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield3.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/center/spring.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/center/spring.nbt new file mode 100644 index 00000000..07353549 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/center/spring.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt new file mode 100644 index 00000000..ef05f809 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/candles.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt new file mode 100644 index 00000000..40263e9b Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/decor/lamp.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt new file mode 100644 index 00000000..294d1042 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/farm1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt new file mode 100644 index 00000000..f15e8405 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/medium1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt new file mode 100644 index 00000000..2a3a7aca Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/plant.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt new file mode 100644 index 00000000..b37c26a6 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small2.nbt new file mode 100644 index 00000000..bbb5e380 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/houses/small2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt new file mode 100644 index 00000000..b9c45b22 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt new file mode 100644 index 00000000..bc7c2834 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt new file mode 100644 index 00000000..14f0ccc7 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight3.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt new file mode 100644 index 00000000..a5db96ad Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/streets/straight4.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt new file mode 100644 index 00000000..2578eab3 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider2.nbt new file mode 100644 index 00000000..e13a8a24 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/striders/strider2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt new file mode 100644 index 00000000..041dbec4 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/crimson/villager.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt new file mode 100644 index 00000000..11692aa9 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/center/spring.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt new file mode 100644 index 00000000..911e151b Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/candles.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/lamp.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/lamp.nbt new file mode 100644 index 00000000..a38f94e6 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/decor/lamp.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt new file mode 100644 index 00000000..a1df7111 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/farm1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt new file mode 100644 index 00000000..b96eff8e Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/medium1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/plant.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/plant.nbt new file mode 100644 index 00000000..2fbdd838 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/plant.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small1.nbt new file mode 100644 index 00000000..949afec2 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt new file mode 100644 index 00000000..86f1db55 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/houses/small2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight1.nbt new file mode 100644 index 00000000..330439b5 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight2.nbt new file mode 100644 index 00000000..bfc83184 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight3.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight3.nbt new file mode 100644 index 00000000..8a93052c Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight3.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight4.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight4.nbt new file mode 100644 index 00000000..1a6376c0 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/streets/straight4.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt new file mode 100644 index 00000000..2578eab3 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider1.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider2.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider2.nbt new file mode 100644 index 00000000..e13a8a24 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/striders/strider2.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt new file mode 100644 index 00000000..8e664596 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/nether_warfield/warped/villager.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt new file mode 100644 index 00000000..41c7b541 Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter.nbt differ diff --git a/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt new file mode 100644 index 00000000..1e98ab0d Binary files /dev/null and b/src/main/resources/data/emeraldcraft/structures/shelter/piglin_cutey_shelter_no_piglin_cutey.nbt differ diff --git a/src/main/resources/data/emeraldcraft/tags/blocks/ginkgo_logs.json b/src/main/resources/data/emeraldcraft/tags/blocks/ginkgo_logs.json new file mode 100644 index 00000000..ac4487cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/tags/blocks/ginkgo_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_log", + "emeraldcraft:ginkgo_wood", + "emeraldcraft:stripped_ginkgo_log", + "emeraldcraft:stripped_ginkgo_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/tags/items/ginkgo_logs.json b/src/main/resources/data/emeraldcraft/tags/items/ginkgo_logs.json new file mode 100644 index 00000000..ac4487cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/tags/items/ginkgo_logs.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_log", + "emeraldcraft:ginkgo_wood", + "emeraldcraft:stripped_ginkgo_log", + "emeraldcraft:stripped_ginkgo_wood" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/nether_warfield.json b/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/nether_warfield.json new file mode 100644 index 00000000..9380ba92 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/nether_warfield.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:emery_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/shelter.json b/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/shelter.json new file mode 100644 index 00000000..2fb66202 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/shelter.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:crimson_forest" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json new file mode 100644 index 00000000..4a077be4 --- /dev/null +++ b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "entries": [ + + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/cobblestone.json b/src/main/resources/data/forge/tags/items/cobblestone.json new file mode 100644 index 00000000..11f75ec1 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/cobblestone.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:crimson_cobblestone", + "emeraldcraft:warped_cobblestone" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets.json b/src/main/resources/data/forge/tags/items/nuggets.json new file mode 100644 index 00000000..d9b57d14 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "#forge:nuggets/diamond", + "#forge:nuggets/lapis", + "#forge:nuggets/emerald" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets/diamond.json b/src/main/resources/data/forge/tags/items/nuggets/diamond.json new file mode 100644 index 00000000..285591a7 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets/diamond.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_nugget" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets/emerald.json b/src/main/resources/data/forge/tags/items/nuggets/emerald.json new file mode 100644 index 00000000..b1a1708f --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets/emerald.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:emerald_nugget" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/nuggets/lapis.json b/src/main/resources/data/forge/tags/items/nuggets/lapis.json new file mode 100644 index 00000000..c9124baa --- /dev/null +++ b/src/main/resources/data/forge/tags/items/nuggets/lapis.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:lapis_nugget" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/stone.json b/src/main/resources/data/forge/tags/items/stone.json new file mode 100644 index 00000000..7b7a5b59 --- /dev/null +++ b/src/main/resources/data/forge/tags/items/stone.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:crimson_stone", + "emeraldcraft:warped_stone" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json b/src/main/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json new file mode 100644 index 00000000..59d6d7ab --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_sand", + "emeraldcraft:jadeite_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json b/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json new file mode 100644 index 00000000..8b8e5ed8 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_sand", + "emeraldcraft:emery_sand", + "emeraldcraft:jadeite_sand", + "emeraldcraft:quartz_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/fence_gates.json b/src/main/resources/data/minecraft/tags/blocks/fence_gates.json new file mode 100644 index 00000000..d522443d --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/fence_gates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_fence_gate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/flower_pots.json b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json new file mode 100644 index 00000000..aa8cd570 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/flower_pots.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:potted_ginkgo_sapling" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/guarded_by_piglins.json b/src/main/resources/data/minecraft/tags/blocks/guarded_by_piglins.json new file mode 100644 index 00000000..0e322ec5 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/guarded_by_piglins.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:gold_stairs", + "emeraldcraft:gold_slab", + "emeraldcraft:gold_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/leaves.json b/src/main/resources/data/minecraft/tags/blocks/leaves.json new file mode 100644 index 00000000..7bc85606 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_leaves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/logs.json b/src/main/resources/data/minecraft/tags/blocks/logs.json new file mode 100644 index 00000000..a48fd7c2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/logs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#emeraldcraft:ginkgo_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json b/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json new file mode 100644 index 00000000..a48fd7c2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#emeraldcraft:ginkgo_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/axe.json b/src/main/resources/data/minecraft/tags/blocks/mineable/axe.json new file mode 100644 index 00000000..67e353cd --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/mineable/axe.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:warped_wart", + "emeraldcraft:carpentry_table", + "emeraldcraft:squeezer" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 00000000..5c02b9a3 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,104 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:emerald_slab", + "emeraldcraft:iron_slab", + "emeraldcraft:lapis_slab", + "emeraldcraft:gold_slab", + "emeraldcraft:diamond_slab", + "emeraldcraft:netherite_slab", + "emeraldcraft:emerald_stairs", + "emeraldcraft:iron_stairs", + "emeraldcraft:lapis_stairs", + "emeraldcraft:gold_stairs", + "emeraldcraft:diamond_stairs", + "emeraldcraft:netherite_stairs", + "emeraldcraft:emerald_wall", + "emeraldcraft:iron_wall", + "emeraldcraft:lapis_wall", + "emeraldcraft:gold_wall", + "emeraldcraft:diamond_wall", + "emeraldcraft:netherite_wall", + + "emeraldcraft:vitrified_sand", + "emeraldcraft:azure_sandstone", + "emeraldcraft:dark_sandstone", + "emeraldcraft:emery_sandstone", + "emeraldcraft:jadeite_sandstone", + "emeraldcraft:quartz_sandstone", + "emeraldcraft:smooth_azure_sandstone", + "emeraldcraft:smooth_dark_sandstone", + "emeraldcraft:smooth_emery_sandstone", + "emeraldcraft:smooth_jadeite_sandstone", + "emeraldcraft:smooth_quartz_sandstone", + "emeraldcraft:cut_azure_sandstone", + "emeraldcraft:cut_dark_sandstone", + "emeraldcraft:cut_emery_sandstone", + "emeraldcraft:cut_jadeite_sandstone", + "emeraldcraft:cut_quartz_sandstone", + + "emeraldcraft:azure_sandstone_slab", + "emeraldcraft:dark_sandstone_slab", + "emeraldcraft:emery_sandstone_slab", + "emeraldcraft:jadeite_sandstone_slab", + "emeraldcraft:quartz_sandstone_slab", + "emeraldcraft:smooth_azure_sandstone_slab", + "emeraldcraft:smooth_dark_sandstone_slab", + "emeraldcraft:smooth_emery_sandstone_slab", + "emeraldcraft:smooth_jadeite_sandstone_slab", + "emeraldcraft:smooth_quartz_sandstone_slab", + "emeraldcraft:cut_azure_sandstone_slab", + "emeraldcraft:cut_dark_sandstone_slab", + "emeraldcraft:cut_emery_sandstone_slab", + "emeraldcraft:cut_jadeite_sandstone_slab", + "emeraldcraft:cut_quartz_sandstone_slab", + + "emeraldcraft:azure_sandstone_stairs", + "emeraldcraft:dark_sandstone_stairs", + "emeraldcraft:emery_sandstone_stairs", + "emeraldcraft:jadeite_sandstone_stairs", + "emeraldcraft:quartz_sandstone_stairs", + "emeraldcraft:smooth_azure_sandstone_stairs", + "emeraldcraft:smooth_dark_sandstone_stairs", + "emeraldcraft:smooth_emery_sandstone_stairs", + "emeraldcraft:smooth_jadeite_sandstone_stairs", + "emeraldcraft:smooth_quartz_sandstone_stairs", + + "emeraldcraft:azure_sandstone_wall", + "emeraldcraft:dark_sandstone_wall", + "emeraldcraft:emery_sandstone_wall", + "emeraldcraft:jadeite_sandstone_wall", + "emeraldcraft:quartz_sandstone_wall", + + "emeraldcraft:glass_kiln", + "emeraldcraft:mineral_table", + "emeraldcraft:continuous_miner", + "emeraldcraft:ice_maker", + "emeraldcraft:melter", + + "emeraldcraft:blue_nether_bricks", + "emeraldcraft:blue_nether_brick_slab", + "emeraldcraft:blue_nether_brick_stairs", + "emeraldcraft:blue_nether_brick_wall", + + "emeraldcraft:crimson_stone", + "emeraldcraft:crimson_stone_slab", + "emeraldcraft:crimson_stone_stairs", + "emeraldcraft:crimson_stone_wall", + + "emeraldcraft:crimson_cobblestone", + "emeraldcraft:crimson_cobblestone_slab", + "emeraldcraft:crimson_cobblestone_stairs", + "emeraldcraft:crimson_cobblestone_wall", + + "emeraldcraft:warped_stone", + "emeraldcraft:warped_stone_slab", + "emeraldcraft:warped_stone_stairs", + "emeraldcraft:warped_stone_wall", + + "emeraldcraft:warped_cobblestone", + "emeraldcraft:warped_cobblestone_slab", + "emeraldcraft:warped_cobblestone_stairs", + "emeraldcraft:warped_cobblestone_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json b/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json new file mode 100644 index 00000000..da5577cb --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/mineable/shovel.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_sand", + "emeraldcraft:quartz_sand", + "emeraldcraft:jadeite_sand", + "emeraldcraft:emery_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json new file mode 100644 index 00000000..32dc1a61 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/needs_diamond_tool.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:netherite_slab", + "emeraldcraft:netherite_stairs", + "emeraldcraft:netherite_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json new file mode 100644 index 00000000..3a09c41f --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/needs_iron_tool.json @@ -0,0 +1,14 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_slab", + "emeraldcraft:diamond_stairs", + "emeraldcraft:diamond_wall", + "emeraldcraft:emerald_slab", + "emeraldcraft:emerald_stairs", + "emeraldcraft:emerald_wall", + "emeraldcraft:gold_slab", + "emeraldcraft:gold_stairs", + "emeraldcraft:gold_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json b/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json new file mode 100644 index 00000000..fa6d1dfc --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/needs_stone_tool.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:iron_slab", + "emeraldcraft:iron_stairs", + "emeraldcraft:iron_wall", + "emeraldcraft:lapis_slab", + "emeraldcraft:lapis_stairs", + "emeraldcraft:lapis_wall", + "emeraldcraft:continuous_miner", + "emeraldcraft:ice_maker" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/planks.json b/src/main/resources/data/minecraft/tags/blocks/planks.json new file mode 100644 index 00000000..ebcec18c --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/planks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_planks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/sand.json b/src/main/resources/data/minecraft/tags/blocks/sand.json new file mode 100644 index 00000000..1eecdc8d --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/sand.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_sand", + "emeraldcraft:dark_sand", + "emeraldcraft:emery_sand", + "emeraldcraft:jadeite_sand", + "emeraldcraft:quartz_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/saplings.json b/src/main/resources/data/minecraft/tags/blocks/saplings.json new file mode 100644 index 00000000..72c153d7 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/saplings.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_sapling" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/slabs.json b/src/main/resources/data/minecraft/tags/blocks/slabs.json new file mode 100644 index 00000000..60560ff8 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/slabs.json @@ -0,0 +1,32 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_slab", + "emeraldcraft:emerald_slab", + "emeraldcraft:gold_slab", + "emeraldcraft:iron_slab", + "emeraldcraft:lapis_slab", + "emeraldcraft:netherite_slab", + "emeraldcraft:azure_sandstone_slab", + "emeraldcraft:smooth_azure_sandstone_slab", + "emeraldcraft:cut_azure_sandstone_slab", + "emeraldcraft:dark_sandstone_slab", + "emeraldcraft:smooth_dark_sandstone_slab", + "emeraldcraft:cut_dark_sandstone_slab", + "emeraldcraft:emery_sandstone_slab", + "emeraldcraft:smooth_emery_sandstone_slab", + "emeraldcraft:cut_emery_sandstone_slab", + "emeraldcraft:jadeite_sandstone_slab", + "emeraldcraft:smooth_jadeite_sandstone_slab", + "emeraldcraft:cut_jadeite_sandstone_slab", + "emeraldcraft:quartz_sandstone_slab", + "emeraldcraft:smooth_quartz_sandstone_slab", + "emeraldcraft:cut_quartz_sandstone_slab", + "emeraldcraft:blue_nether_brick_slab", + "emeraldcraft:crimson_stone_slab", + "emeraldcraft:crimson_cobblestone_slab", + "emeraldcraft:warped_stone_slab", + "emeraldcraft:warped_cobblestone_slab", + "emeraldcraft:ginkgo_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/stairs.json b/src/main/resources/data/minecraft/tags/blocks/stairs.json new file mode 100644 index 00000000..bffe6704 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/stairs.json @@ -0,0 +1,27 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_stairs", + "emeraldcraft:emerald_stairs", + "emeraldcraft:gold_stairs", + "emeraldcraft:iron_stairs", + "emeraldcraft:lapis_stairs", + "emeraldcraft:netherite_stairs", + "emeraldcraft:azure_sandstone_stairs", + "emeraldcraft:smooth_azure_sandstone_stairs", + "emeraldcraft:dark_sandstone_stairs", + "emeraldcraft:smooth_dark_sandstone_stairs", + "emeraldcraft:emery_sandstone_stairs", + "emeraldcraft:smooth_emery_sandstone_stairs", + "emeraldcraft:jadeite_sandstone_stairs", + "emeraldcraft:smooth_jadeite_sandstone_stairs", + "emeraldcraft:quartz_sandstone_stairs", + "emeraldcraft:smooth_quartz_sandstone_stairs", + "emeraldcraft:blue_nether_brick_stairs", + "emeraldcraft:crimson_stone_stairs", + "emeraldcraft:crimson_cobblestone_stairs", + "emeraldcraft:warped_stone_stairs", + "emeraldcraft:warped_cobblestone_stairs", + "emeraldcraft:ginkgo_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/standing_signs.json b/src/main/resources/data/minecraft/tags/blocks/standing_signs.json new file mode 100644 index 00000000..93f4ff52 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/standing_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_sign" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wall_signs.json b/src/main/resources/data/minecraft/tags/blocks/wall_signs.json new file mode 100644 index 00000000..d47e7aad --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wall_signs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_wall_sign" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/walls.json b/src/main/resources/data/minecraft/tags/blocks/walls.json new file mode 100644 index 00000000..b2f52c2a --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/walls.json @@ -0,0 +1,21 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_wall", + "emeraldcraft:emerald_wall", + "emeraldcraft:gold_wall", + "emeraldcraft:iron_wall", + "emeraldcraft:lapis_wall", + "emeraldcraft:netherite_wall", + "emeraldcraft:azure_sandstone_wall", + "emeraldcraft:dark_sandstone_wall", + "emeraldcraft:emery_sandstone_wall", + "emeraldcraft:jadeite_sandstone_wall", + "emeraldcraft:quartz_sandstone_wall", + "emeraldcraft:blue_nether_brick_wall", + "emeraldcraft:crimson_stone_wall", + "emeraldcraft:crimson_cobblestone_wall", + "emeraldcraft:warped_stone_wall", + "emeraldcraft:warped_cobblestone_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json b/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json new file mode 100644 index 00000000..619346c8 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_button" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json b/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json new file mode 100644 index 00000000..7806e893 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json b/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json new file mode 100644 index 00000000..957f4446 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_fences.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json b/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json new file mode 100644 index 00000000..d794a281 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_pressure_plate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json b/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json new file mode 100644 index 00000000..70916480 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json b/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json new file mode 100644 index 00000000..dc608a5b --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json b/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json new file mode 100644 index 00000000..a5ceb872 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_trapdoor" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/boats.json b/src/main/resources/data/minecraft/tags/items/boats.json new file mode 100644 index 00000000..4b1dc12e --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/boats.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_boat" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/leaves.json b/src/main/resources/data/minecraft/tags/items/leaves.json new file mode 100644 index 00000000..7bc85606 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/leaves.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_leaves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/logs.json b/src/main/resources/data/minecraft/tags/items/logs.json new file mode 100644 index 00000000..a48fd7c2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/logs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#emeraldcraft:ginkgo_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/logs_that_burn.json b/src/main/resources/data/minecraft/tags/items/logs_that_burn.json new file mode 100644 index 00000000..a48fd7c2 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/logs_that_burn.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "#emeraldcraft:ginkgo_logs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/piglin_loved.json b/src/main/resources/data/minecraft/tags/items/piglin_loved.json new file mode 100644 index 00000000..82053339 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/piglin_loved.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:gold_stairs", + "emeraldcraft:gold_slab", + "emeraldcraft:gold_wall", + "emeraldcraft:gold_concentrate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/planks.json b/src/main/resources/data/minecraft/tags/items/planks.json new file mode 100644 index 00000000..ebcec18c --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/planks.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_planks" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/sand.json b/src/main/resources/data/minecraft/tags/items/sand.json new file mode 100644 index 00000000..1eecdc8d --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/sand.json @@ -0,0 +1,10 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_sand", + "emeraldcraft:dark_sand", + "emeraldcraft:emery_sand", + "emeraldcraft:jadeite_sand", + "emeraldcraft:quartz_sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/saplings.json b/src/main/resources/data/minecraft/tags/items/saplings.json new file mode 100644 index 00000000..72c153d7 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/saplings.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_sapling" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/slabs.json b/src/main/resources/data/minecraft/tags/items/slabs.json new file mode 100644 index 00000000..60560ff8 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/slabs.json @@ -0,0 +1,32 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_slab", + "emeraldcraft:emerald_slab", + "emeraldcraft:gold_slab", + "emeraldcraft:iron_slab", + "emeraldcraft:lapis_slab", + "emeraldcraft:netherite_slab", + "emeraldcraft:azure_sandstone_slab", + "emeraldcraft:smooth_azure_sandstone_slab", + "emeraldcraft:cut_azure_sandstone_slab", + "emeraldcraft:dark_sandstone_slab", + "emeraldcraft:smooth_dark_sandstone_slab", + "emeraldcraft:cut_dark_sandstone_slab", + "emeraldcraft:emery_sandstone_slab", + "emeraldcraft:smooth_emery_sandstone_slab", + "emeraldcraft:cut_emery_sandstone_slab", + "emeraldcraft:jadeite_sandstone_slab", + "emeraldcraft:smooth_jadeite_sandstone_slab", + "emeraldcraft:cut_jadeite_sandstone_slab", + "emeraldcraft:quartz_sandstone_slab", + "emeraldcraft:smooth_quartz_sandstone_slab", + "emeraldcraft:cut_quartz_sandstone_slab", + "emeraldcraft:blue_nether_brick_slab", + "emeraldcraft:crimson_stone_slab", + "emeraldcraft:crimson_cobblestone_slab", + "emeraldcraft:warped_stone_slab", + "emeraldcraft:warped_cobblestone_slab", + "emeraldcraft:ginkgo_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/stairs.json b/src/main/resources/data/minecraft/tags/items/stairs.json new file mode 100644 index 00000000..bffe6704 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/stairs.json @@ -0,0 +1,27 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_stairs", + "emeraldcraft:emerald_stairs", + "emeraldcraft:gold_stairs", + "emeraldcraft:iron_stairs", + "emeraldcraft:lapis_stairs", + "emeraldcraft:netherite_stairs", + "emeraldcraft:azure_sandstone_stairs", + "emeraldcraft:smooth_azure_sandstone_stairs", + "emeraldcraft:dark_sandstone_stairs", + "emeraldcraft:smooth_dark_sandstone_stairs", + "emeraldcraft:emery_sandstone_stairs", + "emeraldcraft:smooth_emery_sandstone_stairs", + "emeraldcraft:jadeite_sandstone_stairs", + "emeraldcraft:smooth_jadeite_sandstone_stairs", + "emeraldcraft:quartz_sandstone_stairs", + "emeraldcraft:smooth_quartz_sandstone_stairs", + "emeraldcraft:blue_nether_brick_stairs", + "emeraldcraft:crimson_stone_stairs", + "emeraldcraft:crimson_cobblestone_stairs", + "emeraldcraft:warped_stone_stairs", + "emeraldcraft:warped_cobblestone_stairs", + "emeraldcraft:ginkgo_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/walls.json b/src/main/resources/data/minecraft/tags/items/walls.json new file mode 100644 index 00000000..b2f52c2a --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/walls.json @@ -0,0 +1,21 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:diamond_wall", + "emeraldcraft:emerald_wall", + "emeraldcraft:gold_wall", + "emeraldcraft:iron_wall", + "emeraldcraft:lapis_wall", + "emeraldcraft:netherite_wall", + "emeraldcraft:azure_sandstone_wall", + "emeraldcraft:dark_sandstone_wall", + "emeraldcraft:emery_sandstone_wall", + "emeraldcraft:jadeite_sandstone_wall", + "emeraldcraft:quartz_sandstone_wall", + "emeraldcraft:blue_nether_brick_wall", + "emeraldcraft:crimson_stone_wall", + "emeraldcraft:crimson_cobblestone_wall", + "emeraldcraft:warped_stone_wall", + "emeraldcraft:warped_cobblestone_wall" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_buttons.json b/src/main/resources/data/minecraft/tags/items/wooden_buttons.json new file mode 100644 index 00000000..619346c8 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_buttons.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_button" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_doors.json b/src/main/resources/data/minecraft/tags/items/wooden_doors.json new file mode 100644 index 00000000..7806e893 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_doors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_door" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_fences.json b/src/main/resources/data/minecraft/tags/items/wooden_fences.json new file mode 100644 index 00000000..957f4446 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_fences.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_fence" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json b/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json new file mode 100644 index 00000000..d794a281 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_pressure_plate" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_slabs.json b/src/main/resources/data/minecraft/tags/items/wooden_slabs.json new file mode 100644 index 00000000..70916480 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_slabs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_slab" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_stairs.json b/src/main/resources/data/minecraft/tags/items/wooden_stairs.json new file mode 100644 index 00000000..dc608a5b --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_stairs.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_stairs" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json b/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json new file mode 100644 index 00000000..a5ceb872 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_trapdoor" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/bastion_remnant.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/bastion_remnant.json new file mode 100644 index 00000000..a6b5eeea --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/bastion_remnant.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:quartz_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json new file mode 100644 index 00000000..83008d43 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:xanadu", + "emeraldcraft:petunia_plains", + "emeraldcraft:volcanic_caves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft_mesa.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft_mesa.json new file mode 100644 index 00000000..b95bfe24 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft_mesa.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_desert", + "emeraldcraft:jadeite_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json new file mode 100644 index 00000000..a6b5eeea --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:quartz_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json new file mode 100644 index 00000000..1b23ff51 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json @@ -0,0 +1,11 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_forest", + "emeraldcraft:petunia_plains", + "emeraldcraft:azure_desert", + "emeraldcraft:jadeite_desert", + "emeraldcraft:golden_beach", + "emeraldcraft:xanadu" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_desert.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_desert.json new file mode 100644 index 00000000..b95bfe24 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_desert.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:azure_desert", + "emeraldcraft:jadeite_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json new file mode 100644 index 00000000..e2368b17 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:xanadu" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/stronghold.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/stronghold.json new file mode 100644 index 00000000..efdb6a5c --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/stronghold.json @@ -0,0 +1,17 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:dead_crimson_ocean", + "emeraldcraft:dead_warped_ocean", + "emeraldcraft:deep_dead_crimson_ocean", + "emeraldcraft:deep_dead_warped_ocean", + "emeraldcraft:xanadu", + "emeraldcraft:ginkgo_forest", + "emeraldcraft:karst_hills", + "emeraldcraft:petunia_plains", + "emeraldcraft:golden_beach", + "emeraldcraft:azure_desert", + "emeraldcraft:jadeite_desert", + "emeraldcraft:volcanic_caves" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/swamp_hut.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/swamp_hut.json new file mode 100644 index 00000000..e2368b17 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/swamp_hut.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:xanadu" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json new file mode 100644 index 00000000..82271d12 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:petunia_plains" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_beach.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_beach.json new file mode 100644 index 00000000..7224fac6 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_beach.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:golden_beach" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_deep_ocean.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_deep_ocean.json new file mode 100644 index 00000000..2cb40384 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_deep_ocean.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:deep_dead_crimson_ocean", + "emeraldcraft:deep_dead_warped_ocean" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_forest.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_forest.json new file mode 100644 index 00000000..b5eaf203 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_forest.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:ginkgo_forest" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_hill.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_hill.json new file mode 100644 index 00000000..134d293a --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_hill.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:karst_hills" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_nether.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_nether.json new file mode 100644 index 00000000..7d9a3b9b --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_nether.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:emery_desert", + "emeraldcraft:quartz_desert" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/worldgen/biome/is_ocean.json b/src/main/resources/data/minecraft/tags/worldgen/biome/is_ocean.json new file mode 100644 index 00000000..5db5015b --- /dev/null +++ b/src/main/resources/data/minecraft/tags/worldgen/biome/is_ocean.json @@ -0,0 +1,7 @@ +{ + "replace": false, + "values": [ + "emeraldcraft:dead_crimson_ocean", + "emeraldcraft:dead_warped_ocean" + ] +} \ No newline at end of file diff --git a/src/main/resources/emeraldcraft.mixins.json b/src/main/resources/emeraldcraft.mixins.json new file mode 100644 index 00000000..270b93b4 --- /dev/null +++ b/src/main/resources/emeraldcraft.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "com.hexagram2021.emeraldcraft.mixin", + "compatibilityLevel": "JAVA_17", + "refmap": "emeraldcraft.refmap.json", + "mixins": [ + "HeroGiftsTaskAccess", + "AbstractSkeletonMixin" + ], + "minVersion": "0.8" +} diff --git a/src/main/resources/logo.png b/src/main/resources/logo.png new file mode 100644 index 00000000..14d2077c Binary files /dev/null and b/src/main/resources/logo.png differ diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 00000000..b18e3cdd --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "examplemod resources", + "pack_format": 8 + } +}