From 904b896da375d2e5968e876c54ee02927dbabab3 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Mon, 19 Oct 2020 17:29:05 +0300 Subject: [PATCH] Runed Flavolite --- psd/flavolite_runed.psd | Bin 0 -> 83392 bytes .../ru/betterend/blocks/RunedFlavolite.java | 13 + .../blocks/complex/StoneMaterial.java | 12 +- .../blocks/model/BaseBlockModel.java | 221 ---------------- .../blocks/model/EndModelProvider.java | 42 --- .../ru/betterend/blocks/model/SlabModel.java | 238 ----------------- .../betterend/blocks/model/SlabTopModel.java | 239 ------------------ .../ru/betterend/client/BetterEndClient.java | 6 +- .../ru/betterend/recipe/CraftingRecipes.java | 10 + .../ru/betterend/registry/BlockRegistry.java | 3 + .../blockstates/flavolite_runed.json | 225 +++++++++++++++++ .../models/block/flavolite_runed_1.json | 23 ++ .../models/block/flavolite_runed_2.json | 23 ++ .../models/block/flavolite_runed_3.json | 23 ++ .../models/item/flavolite_runed.json | 3 + .../textures/block/flavolite_runed_1.png | Bin 0 -> 719 bytes .../textures/block/flavolite_runed_2.png | Bin 0 -> 729 bytes .../textures/block/flavolite_runed_3.png | Bin 0 -> 705 bytes .../textures/block/flavolite_runed_4.png | Bin 0 -> 723 bytes .../textures/block/flavolite_runed_5.png | Bin 0 -> 723 bytes .../textures/block/flavolite_runed_6.png | Bin 0 -> 707 bytes .../textures/block/flavolite_runed_7.png | Bin 0 -> 712 bytes .../textures/block/flavolite_runed_8.png | Bin 0 -> 707 bytes .../textures/block/flavolite_runed_9.png | Bin 0 -> 717 bytes 24 files changed, 331 insertions(+), 750 deletions(-) create mode 100644 psd/flavolite_runed.psd create mode 100644 src/main/java/ru/betterend/blocks/RunedFlavolite.java delete mode 100644 src/main/java/ru/betterend/blocks/model/BaseBlockModel.java delete mode 100644 src/main/java/ru/betterend/blocks/model/EndModelProvider.java delete mode 100644 src/main/java/ru/betterend/blocks/model/SlabModel.java delete mode 100644 src/main/java/ru/betterend/blocks/model/SlabTopModel.java create mode 100644 src/main/resources/assets/betterend/blockstates/flavolite_runed.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_1.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_2.json create mode 100644 src/main/resources/assets/betterend/models/block/flavolite_runed_3.json create mode 100644 src/main/resources/assets/betterend/models/item/flavolite_runed.json create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_1.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_2.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_3.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_4.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_5.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_6.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_7.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_8.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_runed_9.png diff --git a/psd/flavolite_runed.psd b/psd/flavolite_runed.psd new file mode 100644 index 0000000000000000000000000000000000000000..13345a196d0f68aede1ce05be372fdfedf182a13 GIT binary patch literal 83392 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 Tbj`G3^_rqJMVrC+Su_2ARfrSD literal 0 HcmV?d00001 diff --git a/src/main/java/ru/betterend/blocks/RunedFlavolite.java b/src/main/java/ru/betterend/blocks/RunedFlavolite.java new file mode 100644 index 00000000..b63e2fba --- /dev/null +++ b/src/main/java/ru/betterend/blocks/RunedFlavolite.java @@ -0,0 +1,13 @@ +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; + +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.BlockRegistry; + +public class RunedFlavolite extends BlockBase { + + public RunedFlavolite() { + super(FabricBlockSettings.copyOf(BlockRegistry.FLAVOLITE.polished).lightLevel(6)); + } +} diff --git a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java index f6d68c84..d9892081 100644 --- a/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/StoneMaterial.java @@ -20,8 +20,8 @@ import ru.betterend.util.TagHelper; public class StoneMaterial { public final Block stone; - public final Block tile; - public final Block small_tiles; + public final Block polished; + public final Block tiles; public final Block pillar; public final Block stairs; public final Block slab; @@ -38,8 +38,8 @@ public class StoneMaterial { FabricBlockSettings material = FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color); stone = BlockRegistry.registerBlock(name, new BlockBase(material)); - tile = BlockRegistry.registerBlock(name + "_polished", new BlockBase(material)); - small_tiles = BlockRegistry.registerBlock(name + "_tiles", new BlockBase(material)); + polished = BlockRegistry.registerBlock(name + "_polished", new BlockBase(material)); + tiles = BlockRegistry.registerBlock(name + "_tiles", new BlockBase(material)); pillar = BlockRegistry.registerBlock(name + "_pillar", new BlockPillar(material)); stairs = BlockRegistry.registerBlock(name + "_stairs", new BlockStairs(stone)); slab = BlockRegistry.registerBlock(name + "_slab", new BlockSlab(stone)); @@ -54,8 +54,8 @@ public class StoneMaterial { // Recipes // RecipeBuilder.make(name + "_bricks", bricks).setOutputCount(4).setShape("##", "##").addMaterial('#', stone).setGroup("end_bricks").build(); - RecipeBuilder.make(name + "_polished", tile).setOutputCount(4).setShape("##", "##").addMaterial('#', bricks).setGroup("end_tile").build(); - RecipeBuilder.make(name + "_tiles", small_tiles).setOutputCount(4).setShape("##", "##").addMaterial('#', tile).setGroup("end_small_tile").build(); + RecipeBuilder.make(name + "_polished", polished).setOutputCount(4).setShape("##", "##").addMaterial('#', bricks).setGroup("end_tile").build(); + RecipeBuilder.make(name + "_tiles", tiles).setOutputCount(4).setShape("##", "##").addMaterial('#', polished).setGroup("end_small_tile").build(); RecipeBuilder.make(name + "_pillar", pillar).setShape("#", "#").addMaterial('#', slab).setGroup("end_pillar").build(); RecipeBuilder.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', stone).setGroup("end_stone_stairs").build(); diff --git a/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java b/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java deleted file mode 100644 index 6e8698bd..00000000 --- a/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java +++ /dev/null @@ -1,221 +0,0 @@ -package ru.betterend.blocks.model; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Random; -import java.util.Set; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.mojang.datafixers.util.Pair; - -import net.fabricmc.fabric.api.renderer.v1.Renderer; -import net.fabricmc.fabric.api.renderer.v1.RendererAccess; -import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; -import net.fabricmc.fabric.api.renderer.v1.mesh.MeshBuilder; -import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; -import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; -import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; -import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.render.model.ModelBakeSettings; -import net.minecraft.client.render.model.ModelLoader; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.client.render.model.json.JsonUnbakedModel; -import net.minecraft.client.render.model.json.ModelOverrideList; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockRenderView; -import ru.betterend.BetterEnd; - -public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedModel { - - private static final Identifier DEFAULT_BLOCK_MODEL = new Identifier("minecraft:block/block"); - - private final SpriteIdentifier[] spritesIDs; - private final Sprite[] sprites; - private ModelTransformation transformation; - private Mesh mesh; - - public BaseBlockModel(String... textures) { - this.spritesIDs = new SpriteIdentifier[textures.length]; - this.sprites = new Sprite[textures.length]; - for (int i = 0; i < textures.length; i++) { - this.spritesIDs[i] = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, BetterEnd.makeID(textures[i])); - } - } - - @Override - public BakedModel bake(ModelLoader loader, Function textureGetter, - ModelBakeSettings rotationContainer, Identifier modelId) { - for(int i = 0; i < sprites.length; i++) { - this.sprites[i] = textureGetter.apply(spritesIDs[i]); - } - - JsonUnbakedModel jsonBlockModel = (JsonUnbakedModel) loader.getOrLoadModel(DEFAULT_BLOCK_MODEL); - this.transformation = jsonBlockModel.getTransformations(); - - Renderer renderer = RendererAccess.INSTANCE.getRenderer(); - MeshBuilder builder = renderer.meshBuilder(); - QuadEmitter emitter = builder.getEmitter(); - - Direction[] directions = Direction.values(); - for (Direction direction : directions) { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - switch (sprites.length) { - case 1: { - emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV); - break; - } - case 2: { - switch (direction) { - case DOWN: - case UP: { - emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV); - break; - } - default: { - emitter.spriteBake(0, sprites[1], MutableQuadView.BAKE_LOCK_UV); - } - } - } - case 3: { - switch (direction) { - case DOWN: - case UP: { - emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV); - break; - } - case NORTH: - case SOUTH: { - emitter.spriteBake(0, sprites[1], MutableQuadView.BAKE_LOCK_UV); - break; - } - default: { - emitter.spriteBake(0, sprites[2], MutableQuadView.BAKE_LOCK_UV); - } - } - } - case 4: { - switch (direction) { - case DOWN: - case UP: { - emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV); - break; - } - case NORTH: { - emitter.spriteBake(0, sprites[1], MutableQuadView.BAKE_LOCK_UV); - break; - } - case SOUTH: { - emitter.spriteBake(0, sprites[2], MutableQuadView.BAKE_LOCK_UV); - break; - } - default: { - emitter.spriteBake(0, sprites[3], MutableQuadView.BAKE_LOCK_UV); - } - } - } - case 5: { - switch (direction) { - case DOWN: - case UP: - case NORTH: - case SOUTH: { - emitter.spriteBake(0, sprites[direction.ordinal()], MutableQuadView.BAKE_LOCK_UV); - break; - } - default: { - emitter.spriteBake(0, sprites[4], MutableQuadView.BAKE_LOCK_UV); - } - } - } - default: { - emitter.spriteBake(0, sprites[direction.ordinal()], MutableQuadView.BAKE_LOCK_UV); - } - } - - emitter.spriteColor(0, -1, -1, -1, -1); - emitter.emit(); - } - this.mesh = builder.build(); - - return this; - } - - @Override - public boolean isVanillaAdapter() { - return false; - } - - @Override - public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, - Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public void emitItemQuads(ItemStack stack, Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public List getQuads(BlockState state, Direction face, Random random) { - return null; - } - - @Override - public boolean useAmbientOcclusion() { - return false; - } - - @Override - public boolean hasDepth() { - return false; - } - - @Override - public boolean isSideLit() { - return true; - } - - @Override - public boolean isBuiltin() { - return false; - } - - @Override - public Sprite getSprite() { - return this.sprites[0]; - } - - @Override - public ModelTransformation getTransformation() { - return this.transformation; - } - - @Override - public ModelOverrideList getOverrides() { - return ModelOverrideList.EMPTY; - } - - @Override - public Collection getModelDependencies() { - return Arrays.asList(DEFAULT_BLOCK_MODEL); - } - - @Override - public Collection getTextureDependencies(Function unbakedModelGetter, - Set> unresolvedTextureReferences) { - return Arrays.asList(spritesIDs); - } -} diff --git a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java b/src/main/java/ru/betterend/blocks/model/EndModelProvider.java deleted file mode 100644 index 3d661303..00000000 --- a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java +++ /dev/null @@ -1,42 +0,0 @@ -package ru.betterend.blocks.model; - -import java.util.Map; - -import org.jetbrains.annotations.Nullable; - -import com.google.common.collect.Maps; - -import net.fabricmc.fabric.api.client.model.ModelProviderContext; -import net.fabricmc.fabric.api.client.model.ModelProviderException; -import net.fabricmc.fabric.api.client.model.ModelResourceProvider; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.util.Identifier; -import ru.betterend.BetterEnd; - -public class EndModelProvider implements ModelResourceProvider { - - private static final Map MODELS; - - public static final UnbakedModel FLAVOLITE_BLOCK = new BaseBlockModel("block/flavolite"); - public static final UnbakedModel FLAVOLITE_SLAB = new SlabModel("block/flavolite"); - - public static void registerModel(String path, UnbakedModel model) { - MODELS.put(BetterEnd.makeID(path), model); - } - - @Override - public @Nullable UnbakedModel loadModelResource(Identifier resourceId, ModelProviderContext context) throws ModelProviderException { - if (MODELS.containsKey(resourceId)) { - return MODELS.get(resourceId); - } - return null; - } - - static { - MODELS = Maps.newHashMap(); - - registerModel("item/flavolite", FLAVOLITE_BLOCK); - registerModel("block/flavolite", FLAVOLITE_BLOCK); - registerModel("item/flavolite_slab", FLAVOLITE_SLAB); - } -} diff --git a/src/main/java/ru/betterend/blocks/model/SlabModel.java b/src/main/java/ru/betterend/blocks/model/SlabModel.java deleted file mode 100644 index 91e24cb0..00000000 --- a/src/main/java/ru/betterend/blocks/model/SlabModel.java +++ /dev/null @@ -1,238 +0,0 @@ -package ru.betterend.blocks.model; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Random; -import java.util.Set; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.mojang.datafixers.util.Pair; - -import net.fabricmc.fabric.api.renderer.v1.Renderer; -import net.fabricmc.fabric.api.renderer.v1.RendererAccess; -import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; -import net.fabricmc.fabric.api.renderer.v1.mesh.MeshBuilder; -import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; -import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; -import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; -import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.render.model.ModelBakeSettings; -import net.minecraft.client.render.model.ModelLoader; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.client.render.model.json.JsonUnbakedModel; -import net.minecraft.client.render.model.json.ModelOverrideList; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockRenderView; -import ru.betterend.BetterEnd; - -public class SlabModel implements UnbakedModel, BakedModel, FabricBakedModel { - - private static final Identifier DEFAULT_SLAB_MODEL = new Identifier("minecraft:block/slab"); - - private final SpriteIdentifier[] spritesIDs; - private final Sprite[] sprites; - private ModelTransformation transformation; - private Mesh mesh; - - public SlabModel(String... textures) { - this.spritesIDs = new SpriteIdentifier[textures.length]; - this.sprites = new Sprite[textures.length]; - for (int i = 0; i < textures.length; i++) { - this.spritesIDs[i] = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, BetterEnd.makeID(textures[i])); - } - } - - @Override - public BakedModel bake(ModelLoader loader, Function textureGetter, - ModelBakeSettings rotationContainer, Identifier modelId) { - for(int i = 0; i < sprites.length; i++) { - this.sprites[i] = textureGetter.apply(spritesIDs[i]); - } - - JsonUnbakedModel jsonBlockModel = (JsonUnbakedModel) loader.getOrLoadModel(DEFAULT_SLAB_MODEL); - this.transformation = jsonBlockModel.getTransformations(); - - Renderer renderer = RendererAccess.INSTANCE.getRenderer(); - MeshBuilder builder = renderer.meshBuilder(); - QuadEmitter emitter = builder.getEmitter(); - - for (Direction direction : Direction.values()) { - switch (sprites.length) { - case 1: { - this.buildFace(emitter, direction, sprites[0]); - break; - } - case 2: { - switch (direction) { - case DOWN: - case UP: { - this.buildFace(emitter, direction, sprites[0]); - break; - } - default: { - this.buildFace(emitter, direction, sprites[1]); - } - } - } - case 3: { - switch (direction) { - case DOWN: - case UP: { - this.buildFace(emitter, direction, sprites[0]); - break; - } - case NORTH: - case SOUTH: { - this.buildFace(emitter, direction, sprites[1]); - break; - } - default: { - this.buildFace(emitter, direction, sprites[2]); - } - } - } - case 4: { - switch (direction) { - case DOWN: - case UP: { - this.buildFace(emitter, direction, sprites[0]); - break; - } - case NORTH: { - this.buildFace(emitter, direction, sprites[1]); - break; - } - case SOUTH: { - this.buildFace(emitter, direction, sprites[2]); - break; - } - default: { - this.buildFace(emitter, direction, sprites[3]); - } - } - } - case 5: { - switch (direction) { - case DOWN: - case UP: - case NORTH: - case SOUTH: { - this.buildFace(emitter, direction, sprites[direction.ordinal()]); - break; - } - default: { - this.buildFace(emitter, direction, sprites[4]); - } - } - } - default: { - this.buildFace(emitter, direction, sprites[direction.ordinal()]); - } - } - - emitter.spriteColor(0, -1, -1, -1, -1); - emitter.emit(); - } - this.mesh = builder.build(); - - return this; - } - - private void buildFace(QuadEmitter emitter, Direction direction, Sprite sprite) { - switch(direction) { - case DOWN: { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - emitter.cullFace(direction); - break; - } - case UP: { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); - break; - } - default: { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 0.5f, 0.0f); - emitter.cullFace(direction); - } - } - emitter.spriteBake(0, sprite, MutableQuadView.BAKE_LOCK_UV); - } - - @Override - public boolean isVanillaAdapter() { - return false; - } - - @Override - public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, - Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public void emitItemQuads(ItemStack stack, Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public List getQuads(BlockState state, Direction face, Random random) { - return null; - } - - @Override - public boolean useAmbientOcclusion() { - return false; - } - - @Override - public boolean hasDepth() { - return false; - } - - @Override - public boolean isSideLit() { - return true; - } - - @Override - public boolean isBuiltin() { - return false; - } - - @Override - public Sprite getSprite() { - return this.sprites[0]; - } - - @Override - public ModelTransformation getTransformation() { - return this.transformation; - } - - @Override - public ModelOverrideList getOverrides() { - return ModelOverrideList.EMPTY; - } - - @Override - public Collection getModelDependencies() { - return Arrays.asList(DEFAULT_SLAB_MODEL); - } - - @Override - public Collection getTextureDependencies(Function unbakedModelGetter, - Set> unresolvedTextureReferences) { - return Arrays.asList(spritesIDs); - } -} diff --git a/src/main/java/ru/betterend/blocks/model/SlabTopModel.java b/src/main/java/ru/betterend/blocks/model/SlabTopModel.java deleted file mode 100644 index 8330a28e..00000000 --- a/src/main/java/ru/betterend/blocks/model/SlabTopModel.java +++ /dev/null @@ -1,239 +0,0 @@ -package ru.betterend.blocks.model; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Random; -import java.util.Set; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.mojang.datafixers.util.Pair; - -import net.fabricmc.fabric.api.renderer.v1.Renderer; -import net.fabricmc.fabric.api.renderer.v1.RendererAccess; -import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; -import net.fabricmc.fabric.api.renderer.v1.mesh.MeshBuilder; -import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; -import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; -import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; -import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.render.model.ModelBakeSettings; -import net.minecraft.client.render.model.ModelLoader; -import net.minecraft.client.render.model.UnbakedModel; -import net.minecraft.client.render.model.json.JsonUnbakedModel; -import net.minecraft.client.render.model.json.ModelOverrideList; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.texture.SpriteAtlasTexture; -import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockRenderView; -import ru.betterend.BetterEnd; - -public class SlabTopModel implements UnbakedModel, BakedModel, FabricBakedModel { - - private static final Identifier DEFAULT_MODEL = new Identifier("minecraft:block/slab_top"); - - private final SpriteIdentifier[] spritesIDs; - private final Sprite[] sprites; - private ModelTransformation transformation; - private Mesh mesh; - - public SlabTopModel(String... textures) { - this.spritesIDs = new SpriteIdentifier[textures.length]; - this.sprites = new Sprite[textures.length]; - for (int i = 0; i < textures.length; i++) { - this.spritesIDs[i] = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, BetterEnd.makeID(textures[i])); - } - } - - @Override - public BakedModel bake(ModelLoader loader, Function textureGetter, - ModelBakeSettings rotationContainer, Identifier modelId) { - for(int i = 0; i < sprites.length; i++) { - this.sprites[i] = textureGetter.apply(spritesIDs[i]); - } - - JsonUnbakedModel jsonBlockModel = (JsonUnbakedModel) loader.getOrLoadModel(DEFAULT_MODEL); - this.transformation = jsonBlockModel.getTransformations(); - - Renderer renderer = RendererAccess.INSTANCE.getRenderer(); - MeshBuilder builder = renderer.meshBuilder(); - QuadEmitter emitter = builder.getEmitter(); - - Direction[] directions = Direction.values(); - for (Direction direction : directions) { - switch (sprites.length) { - case 1: { - this.buildModel(emitter, direction, sprites[0]); - break; - } - case 2: { - switch (direction) { - case DOWN: - case UP: { - this.buildModel(emitter, direction, sprites[0]); - break; - } - default: { - this.buildModel(emitter, direction, sprites[1]); - } - } - } - case 3: { - switch (direction) { - case DOWN: - case UP: { - this.buildModel(emitter, direction, sprites[0]); - break; - } - case NORTH: - case SOUTH: { - this.buildModel(emitter, direction, sprites[1]); - break; - } - default: { - this.buildModel(emitter, direction, sprites[2]); - } - } - } - case 4: { - switch (direction) { - case DOWN: - case UP: { - this.buildModel(emitter, direction, sprites[0]); - break; - } - case NORTH: { - this.buildModel(emitter, direction, sprites[1]); - break; - } - case SOUTH: { - this.buildModel(emitter, direction, sprites[2]); - break; - } - default: { - this.buildModel(emitter, direction, sprites[3]); - } - } - } - case 5: { - switch (direction) { - case DOWN: - case UP: - case NORTH: - case SOUTH: { - this.buildModel(emitter, direction, sprites[direction.ordinal()]); - break; - } - default: { - this.buildModel(emitter, direction, sprites[4]); - } - } - } - default: { - this.buildModel(emitter, direction, sprites[direction.ordinal()]); - } - } - - emitter.spriteColor(0, -1, -1, -1, -1); - emitter.emit(); - } - this.mesh = builder.build(); - - return this; - } - - private void buildModel(QuadEmitter emitter, Direction direction, Sprite sprite) { - switch(direction) { - case DOWN: { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); - break; - } - case UP: { - emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - emitter.cullFace(direction); - break; - } - default: { - emitter.square(direction, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f); - emitter.cullFace(direction); - } - } - emitter.spriteBake(0, sprite, MutableQuadView.BAKE_LOCK_UV); - } - - @Override - public boolean isVanillaAdapter() { - return false; - } - - @Override - public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, - Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public void emitItemQuads(ItemStack stack, Supplier randomSupplier, RenderContext context) { - context.meshConsumer().accept(mesh); - } - - @Override - public List getQuads(BlockState state, Direction face, Random random) { - return null; - } - - @Override - public boolean useAmbientOcclusion() { - return false; - } - - @Override - public boolean hasDepth() { - return false; - } - - @Override - public boolean isSideLit() { - return true; - } - - @Override - public boolean isBuiltin() { - return false; - } - - @Override - public Sprite getSprite() { - return this.sprites[0]; - } - - @Override - public ModelTransformation getTransformation() { - return this.transformation; - } - - @Override - public ModelOverrideList getOverrides() { - return ModelOverrideList.EMPTY; - } - - @Override - public Collection getModelDependencies() { - return Arrays.asList(DEFAULT_MODEL); - } - - @Override - public Collection getTextureDependencies(Function unbakedModelGetter, - Set> unresolvedTextureReferences) { - return Arrays.asList(spritesIDs); - } -} diff --git a/src/main/java/ru/betterend/client/BetterEndClient.java b/src/main/java/ru/betterend/client/BetterEndClient.java index a990c465..59ba9792 100644 --- a/src/main/java/ru/betterend/client/BetterEndClient.java +++ b/src/main/java/ru/betterend/client/BetterEndClient.java @@ -2,10 +2,10 @@ package ru.betterend.client; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; -import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; + import net.minecraft.client.render.RenderLayer; import net.minecraft.util.registry.Registry; -import ru.betterend.blocks.model.EndModelProvider; + import ru.betterend.registry.BlockEntityRenderRegistry; import ru.betterend.registry.EntityRenderRegistry; import ru.betterend.registry.ParticleRegistry; @@ -19,8 +19,6 @@ public class BetterEndClient implements ClientModInitializer { ScreensRegistry.register(); ParticleRegistry.register(); EntityRenderRegistry.register(); - - ModelLoadingRegistry.INSTANCE.registerResourceProvider(resorceManager -> new EndModelProvider()); } private void registerRenderLayers() { diff --git a/src/main/java/ru/betterend/recipe/CraftingRecipes.java b/src/main/java/ru/betterend/recipe/CraftingRecipes.java index 65bece8b..28e08442 100644 --- a/src/main/java/ru/betterend/recipe/CraftingRecipes.java +++ b/src/main/java/ru/betterend/recipe/CraftingRecipes.java @@ -31,6 +31,11 @@ public class CraftingRecipes { .setShape(new String[] { "III", "III", "III" }) .addMaterial('I', ItemRegistry.TERMINITE_INGOT) .build(); + RecipeBuilder.make(material + "_block_to_ingot", ItemRegistry.TERMINITE_INGOT) + .addMaterial('#', BlockRegistry.TERMINITE_BLOCK) + .setOutputCount(9) + .setList("#") + .build(); registerHelmet(material, ItemRegistry.TERMINITE_INGOT, ItemRegistry.TERMINITE_HELMET); registerChestplate(material, ItemRegistry.TERMINITE_INGOT, ItemRegistry.TERMINITE_CHESTPLATE); @@ -48,6 +53,11 @@ public class CraftingRecipes { .setShape(new String[] { "III", "III", "III" }) .addMaterial('I', ItemRegistry.AETERNIUM_INGOT) .build(); + RecipeBuilder.make(material + "_block_to_ingot", ItemRegistry.AETERNIUM_INGOT) + .addMaterial('#', BlockRegistry.AETERNIUM_BLOCK) + .setOutputCount(9) + .setList("#") + .build(); registerHelmet(material, ItemRegistry.AETERNIUM_INGOT, ItemRegistry.AETERNIUM_HELMET); registerChestplate(material, ItemRegistry.AETERNIUM_INGOT, ItemRegistry.AETERNIUM_CHESTPLATE); diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index 8e85d3f6..e8bf9919 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -5,6 +5,7 @@ import net.minecraft.block.MaterialColor; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.util.registry.Registry; + import ru.betterend.BetterEnd; import ru.betterend.blocks.AeterniumBlock; import ru.betterend.blocks.AuroraCrystalBlock; @@ -28,6 +29,7 @@ import ru.betterend.blocks.BlockUmbrellaMoss; import ru.betterend.blocks.BlockUmbrellaMossTall; import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.EnderBlock; +import ru.betterend.blocks.RunedFlavolite; import ru.betterend.blocks.TerminiteBlock; import ru.betterend.blocks.basis.BlockGlowingFur; import ru.betterend.blocks.basis.BlockLeaves; @@ -51,6 +53,7 @@ public class BlockRegistry { // Rocks // public static final StoneMaterial FLAVOLITE = new StoneMaterial("flavolite", MaterialColor.SAND); public static final StoneMaterial VIOLECITE = new StoneMaterial("violecite", MaterialColor.PURPLE); + public static final Block FLAVOLITE_RUNED = registerBlock("flavolite_runed", new RunedFlavolite()); // Wooden Materials // public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling()); diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_runed.json b/src/main/resources/assets/betterend/blockstates/flavolite_runed.json new file mode 100644 index 00000000..30e8aa38 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/flavolite_runed.json @@ -0,0 +1,225 @@ +{ + "variants": { + "": [ + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json new file mode 100644 index 00000000..4a502958 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_1", + "rune_2": "betterend:block/flavolite_runed_2", + "rune_3": "betterend:block/flavolite_runed_3" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json new file mode 100644 index 00000000..d3d89a3e --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_4", + "rune_2": "betterend:block/flavolite_runed_5", + "rune_3": "betterend:block/flavolite_runed_6" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json new file mode 100644 index 00000000..61b24ad8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json @@ -0,0 +1,23 @@ +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_7", + "rune_2": "betterend:block/flavolite_runed_8", + "rune_3": "betterend:block/flavolite_runed_9" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/flavolite_runed.json b/src/main/resources/assets/betterend/models/item/flavolite_runed.json new file mode 100644 index 00000000..359977ad --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/flavolite_runed.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/flavolite_runed_1" +} diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_1.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4a80b292f7d8d595b9071bc5be70c8397766a8 GIT binary patch literal 719 zcmV;=0xrmQY97l8 z-wdez&4LkPi$qUzc|{)oqHBAGen4~1l-W4#GUb%1Cy)4u#tq&&dJUv`NB(DKxVpfn zjC9v5OQurMrfINjoVE{0>4~4dg?OcW_$&JP8)!A^`*(!TZgHZ_pWLDS46ZUw6T)Ln z#}o4|<3w1Bu{;#&k})&Jmj`NHu$(yldCz>zcvVytO(~(;(za{%+r&@`UKJlYrgxr^ z4vBGlf@vZ)EzFRP2fEs0W~i#-#j{#(DBTI~74ZQd9Oa8!WKQt*PmeJ#gr*}70Y}9- zhdAdbc?J=huA|lk5us=UIAYV%uY0@*>J{w=f}U;HTG9UiIUV*$dv#vZd1}tocYnhs zqitK7wgX`Iu%)PD{mSNi1Lr--Ci=$V1#`?&ftwAm@=h?I}w^$3K4N#q(!` z5HK@DgyZ4BlP6b5P)&>UKRxp!iu`=97GTo zow2*8tE)2q%=FM=+ya7t2qIj2c;3=9p{lgjD5cO^BZTlj7ZF4R=NwK1oC8(%uYN>p zO8oxQcX%Jc2{tcKK}7HxSeBVm3L!*%*U_5Mnz4QQ7I!aSpsh8$kK8=HB~JwgXy&oJ z;JXpEzo{4@_DJ+}+bi<)7el{dT#abXnVOC1kSR;TojkZm2p33RG5A1Ad-85!yxyRe zajR=;%QPC=bsafp=G_BQd*YYxBVH-benY=`7vGHb(M!VDw>VMK=Rf0znIFuZpUo%d!x~*#swZwn z#1))#sB;d>2}J1n5!)3c25RX6N9=mW^%@rn+IPeu68$-LYYh<*Tyq?E2Sf)p+bf(z zswKRhmEC&9_Kizc!;0zQp6PI;HGl5FdC!s(V+{D(QNDN&D~0;u9lZ~98gbhZ`|534 zYqU>aliW|Ca!N)!5 zz&dV`!$KGW>x(t2O5gS8FFd(^ll5lHvJ`S!crxDLRVl^5Lx_fsJ;TjAh(OL0c|K5T zL8m`{PZYGjh%V#2EP(Ipbx)V{<_Z00000 LNkvXXu0mjf`eIaO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_3.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb11e49ea4fd40da6284e58f9222500679c0300 GIT binary patch literal 705 zcmV;y0zUnTP)jf;QWd2J;&WQL;Bt&HV2t;TJA&l0MB|tK}_RdUy)vGFk zMT9rG(mgs?+QZLnn!X^j@tUg2XK(8I^@`=2xq}waPmXYCx+A@uXbzO&h zX8!mOq3!Uq5OL!7U!#@?&CyyZz9DLC-@V0jp(!lOf&x&5`8>0pH`IIb$4aYCs~LAE zuQRPxJg;2tKd{al!3;CQ)^#OXN2doK|C-tV_=;dg`{q6KbYY$*rs;$PID9eEsI1c? zgN(R4W@dz7jJs<}N`zo&h-eTl%gVf*5vlauKwX_Q_H<*1wuXpcB0||Rl8i2nv{q47 zs_f7fxH=s1ys`i36&eh_y(5Z4gVq|Vs(>(^&S>gLU5`khEl!L*Y|1Vj==vQoMy7{P zOy`M)J~5CGSbbsW1VM1mcv%QPJg2i4^dcyY?3vaY%`5A&F|^9MuIS}-BBh>q*t3-r z#U0-^YH@0DM2(6*Y3+{g1d)pTH`Vsz2qs8yYPhhye#7?Ycs0^E60Sd|`oiVmZ|3!Z zK14ziG^MA4S_)=D(~aTw8FgtCy(gLxdqulPu%2-|Ag7tQH^$?h5RJa;pT2N)^Cjcq znsq67w{f_-A!wu&hX5&MDjnVJOG1F`6L~pNYQd&I-}3J6cVdjVJF3d%eCBxkjA@>5 ncR~nwc82}%WM<9)q?Gsn!6h+5gd+n-SbzV6)i4q?T8-k5|fgfQ{Dw-pe%(L zBYhkIxS9T;cEbL6b+>`@p0y@6qu|9ceeomZ8iubQ)9E|(&LJ4nr_X5JjOjwEjq2`^ zQbI1bw{$Vm?MK%7hGaKf+BK~fS}izH8bXVS#0eQ3&KGb65kWWGElwP`MztBg3v>>q zCr^oSk3T%1+01&rWnN!1*np}c8t)2Pt$6P+OKk4nr>#aS*XSr{RD5@WFtFPkk#nLO zIyUk<;Z1IE&$-V2eq`%3AtIO=r4-DJ7~}uhdyn@X=N!&^a1KNmpMH+98 zz9oc+bDq2`Pz{d|q+waElv0osi78R5Vy5ixzs<8>eniZS5F+>9dO)5PR~?oEdCEvL zFy%j~C~?ye+CbVLSkodBROYER<4&!nHN|cjxADO!{v@mh^+aRb-d8GJ0xe^ za1XPLVMs~|)y(yuR|MOjXGgR`{PI1#Gz3$8t?=+W%4p245^bgm%=3%@ID>h*BGuEB zJ$Wpos#tZDQqa7h7f;a>e#x}2Z|RObB7!W-LWnIbJ>$zW{nsDRionC)xsEf-d10Dw z*?#pto76IY_K5X7(jB*`Dk36;5E!~WdhvuH_z(%fQNDSHurBc75C37VNYl}76Ar^U zhdAdbdBu58N*&WDkLkNND6Rz@O={_ff&B3kKp>f`0KXS_;7jqC^_!@EBP$W`=$G zoIFodJFqMZ{&G4In+>t=$;*kNimofQD77fg3l)E-wJJUaz%Z+L?~#5O@WBBU<%)j( zm^><418LaecQ=^MTyCE;Ew5-vgy8To-4)bQ2*H6{>240x*{J+Ql!&x}kVdMs4E+vw znu)zI9PS)wQ+xM?-OZZ}+da!%(6qAM-4J}F6omjylc^-q{Re~qSts&*qSS&+e>~yY z)1QekqN;fBxtz}&4o9ZzgsKukK(o^I9jZ#s8Gxo~_!s0yWa6Bvuq6Nh002ovPDHLk FV1m%HRNepp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_6.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_6.png new file mode 100644 index 0000000000000000000000000000000000000000..058c3ebf4c18531f2d6f274de3afecf62c721afc GIT binary patch literal 707 zcmV;!0zCbRP)<_RyK|A@LfF?PIv^OUkwn7}*XE9s+ET zPY-}#W~izXV`M&DP~V-2QIVL4-#n$QXX2LGyQ4{QZ|E@6?UjHNLO??Zm~F@i-8A6d z5D}0F1iF5JRtX^>QDGcOX@danj*18nIGv8@ct!WwE1J*LQt;ymTaDO9hC>gja(B8V zjc~ygs)~jf*-B^ea-5xny|^&9)cHBl0^8bs*2LZhd@`G^>y*g{#4)K<~u&tG`?;%8Dym>D9%>EVIP%PW@i pf|(Ix#ELP^6J|y!1%R&W_!rNVU)uuC4A1}o002ovPDHLkV1kmUP5=M^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_7.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_7.png new file mode 100644 index 0000000000000000000000000000000000000000..240d808e2bc12a282072cc9de41515209a2bfd22 GIT binary patch literal 712 zcmV;(0yq7MP)B^nGu#SvLh^lMs9b%_rKwe z4%(u!N=lzpRi@tkQo}r>s?=J^Ia6!JIrqO85kv%I3`PWu0aYH}yhKX~{PXHJto4A9 zmH#*uEH6f*tQ^1H4Uc5$Sr3$R;it^<#a!21e7trd|^!?;ZMn6~9`b%I8zC1ceBVAXNFIWinNrty}` zJb^K&Dq^f9gcU@ws?5vCboY+=+dmNNXqpc9{X5pMFwP^CL|A8XEo|F{T*eXK^!R>H zSRdHJg*m(@$@tiYD7h^Z4a6`bPN7z6Er~c1k@sYFdatyu_ZKVrn9c z3roDGi#_TbR@=vbk~1oXS|a`Fikd1V+@gbGTZ{Mys%zP|PmnR<8qaQjz*w}p25*--z0~rfGikK-5*wT$)LkA_+aPR$xGi`%{ z4p*|^TYSse{g0OB8CAv1sI_8dgb+Sv5kW+7&f!GBIZ);4?JsCciTA(%g!d5;%8~%X zImP?PmS(J0G)6Q;Dg`JUZ(s86uisEJ!~4k1?dRl6gAOQ4S~J>@EbD(X3c&|_@WiVt z^71c3KQfIInscV*!hFiKIb(~*(-CBXG%)zcwmg#8jd**&r;Hn~X_hez?YfSfGwZ`W zl6J)JzC^r&4|t6@D@be9l5nEr*Kbg_VPdT7iUMGc<+2cRpcA3hf^!aQj#?`vZ#Z$3 zys_Th)4QH=98gts+crXobbin2!-9PME4}RT)5v<6+0GmDWyS&H%N|-I%})$&qLhNF zD&Bjh-GOpacHe)6Xuyl3t_zYjc4lY@I1$>bKZu8b$8gS}&N)g=NN{vhhgm~JKs?}x zT@S6|oO|A8KM-TV1k4P576dNyBf38lU;j;857e{af4HU8O8e$L!;Ob&<7v60guwpT zqpFDWo-MDqAV@FF<%!ejA5wlme4y(FrrVCy&Rp^%O%f@eF$&wZp_kK%*bQ|1iS_(I zBC(Pfx=O4CjRSR8XlWza2|qZXeMHr1w*xPjHEP@NqbD|x)rIu!&-mjFMkduW%l637 zMpOe5`sadHD=H3aneljy6{Dp)R0G;85>L3$vyY!5r$Xo=yZr(01AW&&f8lWb8Ponq zN|};24liCHzN3~5-l3flY+^WkfrydPN?uRYR?+#x8{WPBlMn)>6hwr}`OMYTC(O%C pDFyF6B^SnNq?AI=8Gslg{{va*TzR3qg{S}k002ovPDHLkV1hlIROtW! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_9.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_9.png new file mode 100644 index 0000000000000000000000000000000000000000..db84759503cf2979bde541ab7b8a4e8a2bdcfcb4 GIT binary patch literal 717 zcmV;;0y6!HP){gdA4tSk5PS)7q68F-Bxn%C7^>4% zUAOM}chE6wwk8YK;#;oW{Ltb&V`jA0D5cO^!+ZbEiwGiua}Fm0&Vd>G=TEU3BY*w+ zBdQ%ZAuj=Fh$yO_uq>2P@V>`=Thi$@<1n$BR#-}j5;LcLqMQ;0!P$iM7q~nzYDYZXk&Y36d4|S>n=Yv> z(P&uT_vDm0?QW4W(S7|fqDJ}RPh{};Z$3b3#pj5Kk-mC{%0d%ZmIdLhmg9-IPdE{3 z$<$q??jt#8QaI6CC8xmM?Z3n&qGp&G7DB*mU>G(WUPo4?pk`<{k#1&MT*xu9|MVv| z4<{hAEN>WPP0krJGgOrI=7Ky1R1Hy&e)ov7oY;Nxl;#)uwNVK4tDf#+L|nl+hdJjc zDMByw<49{25dl%avEH7Mo#K3<8x%iwbXoyutzrKIa=JU9!vng00H@^7UeXRn{P!O* zh+tp7gduUe`-faTn`ye=z^M}Q!qhuN962X)S*Y^?e?DRTh|oyien@ML_W3K~yijW; zgn%3m2fA*+Z&t*zr{qkIk*EhU2b>rcxyL$ZR25o#SJhVQHJHO`rs$FS_-A4WC=N!Y zJ^6zg0>|Ae=F<%W9#x0<{yw0Vf|;X9WV*Vbrbc;lMEe076tz7}BkOU4+b{T)vEHsQ zGlqV+|H9ejd#pF-giuH^aJIfi%u{m$0pAsDGtgf>LKRY;Ny~v!3pW4#j2F*;!+TH8 z84=-lcgJ@7fcZ3&-}cTaGp(k3GE)Me>pK1e9kyc%3Dqf300000NkvXXu0mjf`rS=m literal 0 HcmV?d00001