Metal lanterns

This commit is contained in:
paulevsGitch 2021-01-25 06:58:30 +03:00
parent 2e8564a26c
commit 1985750261
68 changed files with 446 additions and 206 deletions

View file

@ -1,5 +1,10 @@
package ru.betterend.blocks;
import java.io.Reader;
import java.util.Map;
import com.google.common.collect.Maps;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.block.Block;
@ -8,14 +13,18 @@ import net.minecraft.block.Material;
import net.minecraft.block.MaterialColor;
import net.minecraft.block.ShapeContext;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.registry.Registry;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.BlockView;
import ru.betterend.blocks.basis.EndLanternBlock;
import ru.betterend.client.render.ERenderLayer;
import ru.betterend.interfaces.IRenderTypeable;
import ru.betterend.patterns.BlockPatterned;
import ru.betterend.patterns.Patterns;
public class BulbVineLanternBlock extends EndLanternBlock implements IRenderTypeable {
public class BulbVineLanternBlock extends EndLanternBlock implements IRenderTypeable, BlockPatterned {
private static final VoxelShape SHAPE_CEIL = Block.createCuboidShape(4, 4, 4, 12, 16, 12);
private static final VoxelShape SHAPE_FLOOR = Block.createCuboidShape(4, 0, 4, 12, 12, 12);
@ -43,4 +52,39 @@ public class BulbVineLanternBlock extends EndLanternBlock implements IRenderType
public ERenderLayer getRenderLayer() {
return ERenderLayer.CUTOUT;
}
@Override
public String getStatesPattern(Reader data) {
Identifier blockId = Registry.BLOCK.getId(this);
return Patterns.createJson(data, blockId.getPath(), blockId.getPath());
}
@Override
public String getModelPattern(String block) {
Identifier blockId = Registry.BLOCK.getId(this);
Map<String, String> map = Maps.newHashMap();
map.put("%glow%", getGlowTexture());
map.put("%metal%", getMetalTexture(blockId));
if (block.contains("item") || block.contains("ceil")) {
return Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_CEIL, map);
}
else {
return Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_FLOOR, map);
}
}
protected String getMetalTexture(Identifier blockId) {
String name = blockId.getPath();
name = name.substring(0, name.indexOf('_'));
return name + "_bulb_vine_lantern_metal";
}
protected String getGlowTexture() {
return "bulb_vine_lantern_bulb";
}
@Override
public Identifier statePatternId() {
return Patterns.STATE_BULB_LANTERN;
}
}

View file

@ -1,16 +1,11 @@
package ru.betterend.blocks;
import java.io.Reader;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.client.color.block.BlockColorProvider;
import net.minecraft.client.color.item.ItemColorProvider;
import net.minecraft.util.Identifier;
import ru.betterend.interfaces.IColorProvider;
import ru.betterend.patterns.BlockPatterned;
import ru.betterend.patterns.Patterns;
public class BulbVineLanternColoredBlock extends BulbVineLanternBlock implements IColorProvider, BlockPatterned {
public class BulbVineLanternColoredBlock extends BulbVineLanternBlock implements IColorProvider {
public BulbVineLanternColoredBlock(FabricBlockSettings settings) {
super(settings);
}
@ -30,24 +25,7 @@ public class BulbVineLanternColoredBlock extends BulbVineLanternBlock implements
}
@Override
public String getStatesPattern(Reader data) {
String path = "betterend:block/bulb_lantern_colored";
return Patterns.createJson(data, path, path);
}
@Override
public String getModelPattern(String block) {
String path = "betterend:block/bulb_lantern_colored";
if (block.contains("item") || block.contains("ceil")) {
return Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_COLORED_CEIL, path, path);
}
else {
return Patterns.createJson(Patterns.BLOCK_BULB_LANTERN_COLORED_FLOOR, path, path);
}
}
@Override
public Identifier statePatternId() {
return Patterns.STATE_BULB_LANTERN;
protected String getGlowTexture() {
return "bulb_vine_lantern_overlay";
}
}

View file

@ -7,8 +7,6 @@ import com.google.common.collect.Maps;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.MaterialColor;
import net.minecraft.block.ShapeContext;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
@ -19,11 +17,11 @@ import ru.betterend.blocks.basis.AttachedBlock;
import ru.betterend.client.render.ERenderLayer;
import ru.betterend.interfaces.IRenderTypeable;
public class ThallasiumChandelierBlock extends AttachedBlock implements IRenderTypeable {
public class ChandelierBlock extends AttachedBlock implements IRenderTypeable {
private static final EnumMap<Direction, VoxelShape> BOUNDING_SHAPES = Maps.newEnumMap(Direction.class);
public ThallasiumChandelierBlock() {
super(FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).materialColor(MaterialColor.BLUE).noCollision().nonOpaque().requiresTool().luminance(15));
public ChandelierBlock(FabricBlockSettings settings) {
super(settings.noCollision().nonOpaque().requiresTool().luminance(15));
}
@Override

View file

@ -7,7 +7,11 @@ import net.minecraft.block.MaterialColor;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.item.ToolMaterial;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.tag.BlockTags;
import ru.betterend.blocks.BulbVineLanternBlock;
import ru.betterend.blocks.BulbVineLanternColoredBlock;
import ru.betterend.blocks.ChandelierBlock;
import ru.betterend.blocks.basis.BlockBase;
import ru.betterend.blocks.basis.EndAnvilBlock;
import ru.betterend.blocks.basis.EndChainBlock;
@ -42,6 +46,11 @@ public class MetalMaterial {
public final Block stairs;
public final Block slab;
public final Block chandelier;
public final Block bulb_lantern;
public final ColoredMaterial bulb_lantern_colored;
public final Item nugget;
public final Item ingot;
public final Item shovel;
public final Item sword;
@ -51,19 +60,25 @@ public class MetalMaterial {
public MetalMaterial(String name, MaterialColor color, ToolMaterial material) {
FabricBlockSettings materialBlock = FabricBlockSettings.copyOf(Blocks.IRON_BLOCK).materialColor(color);
FabricBlockSettings lantern = FabricBlockSettings.copyOf(materialBlock).sounds(BlockSoundGroup.LANTERN).hardness(1).resistance(1).luminance(15);
ore = EndBlocks.registerBlock(name + "_ore", new BlockBase(FabricBlockSettings.copyOf(Blocks.END_STONE)));
block = EndBlocks.registerBlock(name + "_block", new BlockBase(materialBlock));
tile = EndBlocks.registerBlock(name + "_tile", new BlockBase(materialBlock));
bars = EndBlocks.registerBlock(name + "_bars", new EndMetalPaneBlock(block));
plate = EndBlocks.registerBlock(name + "_plate", new EndWoodenPlateBlock(block));
stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(tile));
slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(tile));
door = EndBlocks.registerBlock(name + "_door", new EndDoorBlock(block));
trapdoor = EndBlocks.registerBlock(name + "_trapdoor", new EndTrapdoorBlock(block));
anvil = EndBlocks.registerBlock(name + "_anvil", new EndAnvilBlock(color));
bars = EndBlocks.registerBlock(name + "_bars", new EndMetalPaneBlock(block));
chain = EndBlocks.registerBlock(name + "_chain", new EndChainBlock(color));
stairs = EndBlocks.registerBlock(name + "_stairs", new EndStairsBlock(tile));
slab = EndBlocks.registerBlock(name + "_slab", new EndSlabBlock(tile));
plate = EndBlocks.registerBlock(name + "_plate", new EndWoodenPlateBlock(block));
chandelier = EndBlocks.registerBlock(name + "_chandelier", new ChandelierBlock(materialBlock));
bulb_lantern = EndBlocks.registerBlock(name + "_bulb_lantern", new BulbVineLanternBlock(lantern));
bulb_lantern_colored = new ColoredMaterial(BulbVineLanternColoredBlock::new, bulb_lantern, false);
nugget = EndItems.registerItem(name + "_nugget");
ingot = EndItems.registerItem(name + "_ingot");
shovel = EndItems.registerTool(name + "_shovel", new EndShovelItem(material, 1.5F, -3.0F, EndItems.makeItemSettings()));
sword = EndItems.registerTool(name + "_sword", new EndSwordItem(material, 3, -2.4F, EndItems.makeItemSettings()));
@ -71,9 +86,10 @@ public class MetalMaterial {
axe = EndItems.registerTool(name + "_axe", new EndAxeItem(material, 6.0F, -3.0F, EndItems.makeItemSettings()));
hoe = EndItems.registerTool(name + "_hoe", new EndHoeItem(material, -3, 0.0F, EndItems.makeItemSettings()));
FurnaceRecipe.make("thallasium_ingot_furnace", ore, ingot).build();
FurnaceRecipe.make("thallasium_ingot_furnace", ore, ingot).build(true);
AlloyingRecipe.Builder.create("thallasium_ingot").setInput(ore, ore).setOutput(ingot, 3).setExpiriense(2.1F).build();
GridRecipe.make(name + "_ingot_from_nuggets", ingot).setShape("###", "###", "###").addMaterial('#', nugget).setGroup("end_metal_ingots_nug").build();
GridRecipe.make(name + "_block", block).setShape("###", "###", "###").addMaterial('#', ingot).setGroup("end_metal_blocks").build();
GridRecipe.make(name + "_ingot_from_block", ingot).setOutputCount(9).setList("#").addMaterial('#', block).setGroup("end_metal_ingots").build();
@ -82,14 +98,24 @@ public class MetalMaterial {
GridRecipe.make(name + "_plate", plate).setShape("##").addMaterial('#', ingot).setGroup("end_metal_plates").build();
GridRecipe.make(name + "_door", door).setOutputCount(3).setOutputCount(16).setShape("##", "##", "##").addMaterial('#', ingot).setGroup("end_metal_doors").build();
GridRecipe.make(name + "_trapdoor", trapdoor).setShape("##", "##").addMaterial('#', ingot).setGroup("end_metal_trapdoors").build();
GridRecipe.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', block).setGroup("end_metal_stairs").build();
GridRecipe.make(name + "_slab", slab).setOutputCount(6).setShape("###").addMaterial('#', block).setGroup("end_metal_slabs").build();
GridRecipe.make(name + "_stairs", stairs).setOutputCount(4).setShape("# ", "## ", "###").addMaterial('#', block, tile).setGroup("end_metal_stairs").build();
GridRecipe.make(name + "_slab", slab).setOutputCount(6).setShape("###").addMaterial('#', block, tile).setGroup("end_metal_slabs").build();
GridRecipe.make(name + "_chain", chain).setShape("N", "#", "N").addMaterial('#', ingot).addMaterial('N', nugget).setGroup("end_metal_chain").build();
GridRecipe.make(name + "_anvil", anvil).setOutputCount(3).setShape("###", " I ", "III").addMaterial('#', block, tile).addMaterial('I', ingot).setGroup("end_metal_anvil").build();
GridRecipe.make(name + "bulb_lantern", bulb_lantern).setShape("C", "I", "#").addMaterial('C', chain).addMaterial('I', ingot).addMaterial('#', EndItems.GLOWING_BULB).build();
GridRecipe.make(name + "_axe", axe).setShape("##", "#I", " I").addMaterial('#', ingot).addMaterial('I', Items.STICK).build();
GridRecipe.make(name + "_hoe", hoe).setShape("##", " I", " I").addMaterial('#', ingot).addMaterial('I', Items.STICK).build();
GridRecipe.make(name + "_pickaxe", pickaxe).setShape("###", " I ", " I ").addMaterial('#', ingot).addMaterial('I', Items.STICK).build();
GridRecipe.make(name + "_sword", sword).setShape("#", "#", "I").addMaterial('#', ingot).addMaterial('I', Items.STICK).build();
GridRecipe.make(name + "_chandelier", chandelier).setShape("I#I", " # ").addMaterial('#', ingot).addMaterial('I', EndItems.LUMECORN_ROD).setGroup("end_metal_chandelier").build();
FurnaceRecipe.make(name + "_axe_ingot", axe, nugget).build(true);
FurnaceRecipe.make(name + "_hoe_ingot", hoe, nugget).build(true);
FurnaceRecipe.make(name + "_pickaxe_ingot", pickaxe, nugget).build(true);
FurnaceRecipe.make(name + "_sword_ingot", sword, nugget).build(true);
TagHelper.addTag(BlockTags.ANVIL, anvil);
}
}

View file

@ -82,8 +82,8 @@ public class Patterns {
public final static Identifier BLOCK_BOOKSHELF = BetterEnd.makeID("patterns/block/bookshelf.json");
public final static Identifier BLOCK_STONE_LANTERN_CEIL = BetterEnd.makeID("patterns/block/stone_lantern_ceil.json");
public final static Identifier BLOCK_STONE_LANTERN_FLOOR = BetterEnd.makeID("patterns/block/stone_lantern_floor.json");
public final static Identifier BLOCK_BULB_LANTERN_COLORED_FLOOR = BetterEnd.makeID("models/block/bulb_lantern_colored_floor.json");
public final static Identifier BLOCK_BULB_LANTERN_COLORED_CEIL = BetterEnd.makeID("models/block/bulb_lantern_colored_ceil.json");
public final static Identifier BLOCK_BULB_LANTERN_FLOOR = BetterEnd.makeID("patterns/block/bulb_lantern_floor.json");
public final static Identifier BLOCK_BULB_LANTERN_CEIL = BetterEnd.makeID("patterns/block/bulb_lantern_ceil.json");
public final static Identifier BLOCK_PETAL_COLORED = BetterEnd.makeID("models/block/block_petal_colored.json");
public final static Identifier BLOCK_COMPOSTER = BetterEnd.makeID("patterns/block/composter.json");
public final static Identifier BLOCK_COLORED = BetterEnd.makeID("patterns/block/block_colored.json");

View file

@ -117,7 +117,7 @@ public class CraftingRecipes {
GridRecipe.make("amber_gem", EndItems.AMBER_GEM).setShape("##", "##").addMaterial('#', EndItems.RAW_AMBER).build();
GridRecipe.make("amber_block", EndBlocks.AMBER_BLOCK).setShape("###", "###", "###").addMaterial('#', EndItems.AMBER_GEM).build();
GridRecipe.make("bulb_lantern", EndBlocks.BULB_LANTERN).addMaterial('C', Items.CHAIN).addMaterial('I', Items.IRON_INGOT).setShape("C", "I", "#").addMaterial('#', EndItems.GLOWING_BULB).build();
GridRecipe.make("bulb_lantern", EndBlocks.IRON_BULB_LANTERN).setShape("C", "I", "#").addMaterial('C', Items.CHAIN).addMaterial('I', Items.IRON_INGOT).addMaterial('#', EndItems.GLOWING_BULB).build();
GridRecipe.make("twisted_moss_dye", Items.PINK_DYE).setList("#").addMaterial('#', EndBlocks.TWISTED_MOSS).build();
GridRecipe.make("byshy_grass_dye", Items.MAGENTA_DYE).setList("#").addMaterial('#', EndBlocks.BUSHY_GRASS).build();
GridRecipe.make("tail_moss_dye", Items.GRAY_DYE).setList("#").addMaterial('#', EndBlocks.TAIL_MOSS).build();
@ -190,9 +190,6 @@ public class CraftingRecipes {
GridRecipe.make("fiber_string", Items.STRING).setOutputCount(6).setShape("#", "#", "#").addMaterial('#', EndItems.SILK_FIBER).build();
GridRecipe.make("thallasium_chandelier", EndBlocks.THALLASIUM_CHANDELIER).setShape("I#I", " # ")
.addMaterial('#', EndBlocks.THALLASIUM.ingot).addMaterial('I', EndItems.LUMECORN_ROD).build();
GridRecipe.make("ender_eye_amber", Items.ENDER_EYE)
.setShape("SAS", "APA", "SAS")
.addMaterial('S', EndItems.CRYSTAL_SHARDS)

View file

@ -2,6 +2,7 @@ package ru.betterend.recipe.builders;
import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.recipe.BlastingRecipe;
import net.minecraft.recipe.Ingredient;
import net.minecraft.recipe.RecipeType;
import net.minecraft.recipe.SmeltingRecipe;
@ -58,10 +59,19 @@ public class FurnaceRecipe {
}
public void build() {
build(false);
}
public void build(boolean blasting) {
if (exist) {
Identifier id = BetterEnd.makeID(name);
SmeltingRecipe recipe = new SmeltingRecipe(id, group, Ingredient.ofItems(input), new ItemStack(output, count), xp, time);
EndRecipeManager.addRecipe(RecipeType.SMELTING, recipe);
if (blasting) {
BlastingRecipe recipe2 = new BlastingRecipe(id, group, Ingredient.ofItems(input), new ItemStack(output, count), xp, time / 2);
EndRecipeManager.addRecipe(RecipeType.BLASTING, recipe2);
}
}
else {
BetterEnd.LOGGER.debug("Smelting recipe {} couldn't be added", name);

View file

@ -78,7 +78,6 @@ import ru.betterend.blocks.TenaneaFlowersBlock;
import ru.betterend.blocks.TenaneaSaplingBlock;
import ru.betterend.blocks.TerminiteBlock;
import ru.betterend.blocks.TerrainPlantBlock;
import ru.betterend.blocks.ThallasiumChandelierBlock;
import ru.betterend.blocks.TwistedUmbrellaMossBlock;
import ru.betterend.blocks.TwistedUmbrellaMossTallBlock;
import ru.betterend.blocks.UmbrellaMossBlock;
@ -305,10 +304,8 @@ public class EndBlocks {
public static final Block END_STONE_LANTERN = registerBlock("end_stone_lantern", new StoneLanternBlock(Blocks.END_STONE));
public static final Block BLACKSTONE_LANTERN = registerBlock("blackstone_lantern", new StoneLanternBlock(Blocks.BLACKSTONE));
public static final Block BULB_LANTERN = registerBlock("bulb_lantern", new BulbVineLanternBlock());
public static final ColoredMaterial BULB_LANTERN_COLORED = new ColoredMaterial(BulbVineLanternColoredBlock::new, BULB_LANTERN, false);
public static final Block THALLASIUM_CHANDELIER = registerBlock("thallasium_chandelier", new ThallasiumChandelierBlock());
public static final Block IRON_BULB_LANTERN = registerBlock("iron_bulb_lantern", new BulbVineLanternBlock());
public static final ColoredMaterial IRON_BULB_LANTERN_COLORED = new ColoredMaterial(BulbVineLanternColoredBlock::new, IRON_BULB_LANTERN, false);
// Blocks With Entity //
public static final Block END_STONE_SMELTER = registerBlock("end_stone_smelter", new EndStoneSmelter());