diff --git a/psd/flavolite_runed.psd b/psd/flavolite_runed.psd new file mode 100644 index 00000000..13345a19 Binary files /dev/null and b/psd/flavolite_runed.psd differ 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 00000000..8a4a80b2 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_1.png differ diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_2.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_2.png new file mode 100644 index 00000000..985ff51f Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_2.png differ 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 00000000..9eb11e49 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_3.png differ diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_4.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_4.png new file mode 100644 index 00000000..7cec0e42 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_4.png differ diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_5.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_5.png new file mode 100644 index 00000000..0abf60c7 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_5.png differ 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 00000000..058c3ebf Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_6.png differ 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 00000000..240d808e Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_7.png differ diff --git a/src/main/resources/assets/betterend/textures/block/flavolite_runed_8.png b/src/main/resources/assets/betterend/textures/block/flavolite_runed_8.png new file mode 100644 index 00000000..9406391e Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_8.png differ 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 00000000..db847595 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/flavolite_runed_9.png differ