Pottable crops and fixes
|
@ -5,7 +5,6 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||||
import ru.bclib.blocks.BlockProperties;
|
import ru.bclib.blocks.BlockProperties;
|
||||||
import ru.bclib.blocks.properties.StringProperty;
|
|
||||||
import ru.betterend.registry.EndPortals;
|
import ru.betterend.registry.EndPortals;
|
||||||
|
|
||||||
public class EndBlockProperties extends BlockProperties {
|
public class EndBlockProperties extends BlockProperties {
|
||||||
|
@ -14,8 +13,8 @@ public class EndBlockProperties extends BlockProperties {
|
||||||
public static final EnumProperty<CactusBottom> CACTUS_BOTTOM = EnumProperty.create("bottom", CactusBottom.class);
|
public static final EnumProperty<CactusBottom> CACTUS_BOTTOM = EnumProperty.create("bottom", CactusBottom.class);
|
||||||
|
|
||||||
public static final IntegerProperty PORTAL = IntegerProperty.create("portal", 0, EndPortals.getCount());
|
public static final IntegerProperty PORTAL = IntegerProperty.create("portal", 0, EndPortals.getCount());
|
||||||
public static final IntegerProperty PLANT_ID = IntegerProperty.create("plant_id", 0, 127);
|
public static final IntegerProperty PLANT_ID = IntegerProperty.create("plant_id", 0, 63);
|
||||||
public static final IntegerProperty SOIL_ID = IntegerProperty.create("soil_id", 0, 10);
|
public static final IntegerProperty SOIL_ID = IntegerProperty.create("soil_id", 0, 15);
|
||||||
public static final BooleanProperty HAS_ITEM = BooleanProperty.create("has_item");
|
public static final BooleanProperty HAS_ITEM = BooleanProperty.create("has_item");
|
||||||
|
|
||||||
public enum PedestalState implements StringRepresentable {
|
public enum PedestalState implements StringRepresentable {
|
||||||
|
|
|
@ -56,4 +56,9 @@ public class FlamaeaBlock extends EndPlantBlock implements ISpetialItem {
|
||||||
public boolean canPlaceOnWater() {
|
public boolean canPlaceOnWater() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addToPot() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package ru.betterend.blocks;
|
package ru.betterend.blocks;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.mojang.math.Transformation;
|
import com.mojang.math.Transformation;
|
||||||
|
@ -18,8 +16,6 @@ import net.minecraft.client.resources.model.UnbakedModel;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.packs.PackResources;
|
|
||||||
import net.minecraft.server.packs.PackType;
|
|
||||||
import net.minecraft.sounds.SoundEvents;
|
import net.minecraft.sounds.SoundEvents;
|
||||||
import net.minecraft.sounds.SoundSource;
|
import net.minecraft.sounds.SoundSource;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
|
@ -30,7 +26,6 @@ import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.level.BlockGetter;
|
import net.minecraft.world.level.BlockGetter;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.LeavesBlock;
|
|
||||||
import net.minecraft.world.level.block.SaplingBlock;
|
import net.minecraft.world.level.block.SaplingBlock;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.StateDefinition;
|
import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
|
@ -41,35 +36,25 @@ import net.minecraft.world.phys.shapes.Shapes;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import ru.bclib.blocks.BaseBlockNotFull;
|
import ru.bclib.blocks.BaseBlockNotFull;
|
||||||
import ru.bclib.client.models.BasePatterns;
|
import ru.bclib.client.models.BasePatterns;
|
||||||
import ru.bclib.client.models.BlockModelProvider;
|
|
||||||
import ru.bclib.client.models.ModelsHelper;
|
import ru.bclib.client.models.ModelsHelper;
|
||||||
import ru.bclib.client.models.ModelsHelper.MultiPartBuilder;
|
import ru.bclib.client.models.ModelsHelper.MultiPartBuilder;
|
||||||
import ru.bclib.client.models.PatternsHelper;
|
import ru.bclib.client.models.PatternsHelper;
|
||||||
import ru.bclib.client.render.BCLRenderLayer;
|
import ru.bclib.client.render.BCLRenderLayer;
|
||||||
import ru.bclib.interfaces.IPostInit;
|
import ru.bclib.interfaces.IPostInit;
|
||||||
import ru.bclib.interfaces.IRenderTyped;
|
import ru.bclib.interfaces.IRenderTyped;
|
||||||
import ru.bclib.interfaces.ISpetialItem;
|
|
||||||
import ru.bclib.util.BlocksHelper;
|
import ru.bclib.util.BlocksHelper;
|
||||||
import ru.bclib.util.JsonFactory;
|
import ru.bclib.util.JsonFactory;
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
import ru.betterend.blocks.basis.EndTerrainBlock;
|
|
||||||
import ru.betterend.blocks.basis.PottableLeavesBlock;
|
import ru.betterend.blocks.basis.PottableLeavesBlock;
|
||||||
import ru.betterend.client.models.Patterns;
|
import ru.betterend.client.models.Patterns;
|
||||||
import ru.betterend.config.Configs;
|
import ru.betterend.config.Configs;
|
||||||
import ru.betterend.interfaces.PottablePlant;
|
import ru.betterend.interfaces.PottablePlant;
|
||||||
|
import ru.betterend.interfaces.PottableTerrain;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SplittableRandom;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IPostInit {
|
public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IPostInit {
|
||||||
private static final IntegerProperty PLANT_ID = EndBlockProperties.PLANT_ID;
|
private static final IntegerProperty PLANT_ID = EndBlockProperties.PLANT_ID;
|
||||||
|
@ -121,10 +106,10 @@ public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IP
|
||||||
}
|
}
|
||||||
|
|
||||||
EndBlocks.getModBlocks().forEach(block -> {
|
EndBlocks.getModBlocks().forEach(block -> {
|
||||||
if (block instanceof PottablePlant && canBeAdded(block)) {
|
if (block instanceof PottablePlant && ((PottablePlant) block).addToPot()) {//&& canBeAdded(block)) {
|
||||||
processBlock(plants, block, "flower_pots.plants", reservedPlantsIDs);
|
processBlock(plants, block, "flower_pots.plants", reservedPlantsIDs);
|
||||||
}
|
}
|
||||||
else if (block instanceof EndTerrainBlock) {
|
else if (block instanceof PottableTerrain) {
|
||||||
processBlock(soils, block, "flower_pots.soils", reservedSoilIDs);
|
processBlock(soils, block, "flower_pots.soils", reservedSoilIDs);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -154,22 +139,6 @@ public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IP
|
||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canBeAdded(Block block) {
|
|
||||||
if (block instanceof SaplingBlock) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (block instanceof PottableLeavesBlock) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (block instanceof ISpetialItem) {
|
|
||||||
return !((ISpetialItem) block).canPlaceOnWater();
|
|
||||||
}
|
|
||||||
else if (block.getStateDefinition().getProperties().isEmpty()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void processBlock(Block[] target, Block block, String path, Map<String, Integer> idMap) {
|
private void processBlock(Block[] target, Block block, String path, Map<String, Integer> idMap) {
|
||||||
ResourceLocation location = Registry.BLOCK.getKey(block);
|
ResourceLocation location = Registry.BLOCK.getKey(block);
|
||||||
if (idMap.containsKey(location.getPath())) {
|
if (idMap.containsKey(location.getPath())) {
|
||||||
|
@ -194,7 +163,7 @@ public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IP
|
||||||
}
|
}
|
||||||
ItemStack itemStack = player.getItemInHand(hand);
|
ItemStack itemStack = player.getItemInHand(hand);
|
||||||
int soilID = state.getValue(SOIL_ID);
|
int soilID = state.getValue(SOIL_ID);
|
||||||
if (soilID == 0 || soils[soilID - 1] == null) {
|
if (soilID == 0 || soilID > soils.length || soils[soilID - 1] == null) {
|
||||||
if (!(itemStack.getItem() instanceof BlockItem)) {
|
if (!(itemStack.getItem() instanceof BlockItem)) {
|
||||||
return InteractionResult.PASS;
|
return InteractionResult.PASS;
|
||||||
}
|
}
|
||||||
|
@ -210,12 +179,12 @@ public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IP
|
||||||
|
|
||||||
int plantID = state.getValue(PLANT_ID);
|
int plantID = state.getValue(PLANT_ID);
|
||||||
if (itemStack.isEmpty()) {
|
if (itemStack.isEmpty()) {
|
||||||
if (plantID > 0 && plantID <= plants.length) {
|
if (plantID > 0 && plantID <= plants.length && plants[plantID - 1] != null) {
|
||||||
BlocksHelper.setWithUpdate(level, pos, state.setValue(PLANT_ID, 0));
|
BlocksHelper.setWithUpdate(level, pos, state.setValue(PLANT_ID, 0));
|
||||||
player.addItem(new ItemStack(plants[plantID - 1]));
|
player.addItem(new ItemStack(plants[plantID - 1]));
|
||||||
return InteractionResult.SUCCESS;
|
return InteractionResult.SUCCESS;
|
||||||
}
|
}
|
||||||
if (soilID > 0 && soilID <= soils.length) {
|
if (soilID > 0 && soilID <= soils.length && soils[soilID - 1] != null) {
|
||||||
BlocksHelper.setWithUpdate(level, pos, state.setValue(SOIL_ID, 0));
|
BlocksHelper.setWithUpdate(level, pos, state.setValue(SOIL_ID, 0));
|
||||||
player.addItem(new ItemStack(soils[soilID - 1]));
|
player.addItem(new ItemStack(soils[soilID - 1]));
|
||||||
}
|
}
|
||||||
|
@ -295,14 +264,38 @@ public class FlowerPotBlock extends BaseBlockNotFull implements IRenderTyped, IP
|
||||||
objSource = new ResourceLocation(modelPath.getNamespace(), "blockstates/" + modelPath.getPath() + ".json");
|
objSource = new ResourceLocation(modelPath.getNamespace(), "blockstates/" + modelPath.getPath() + ".json");
|
||||||
JsonObject obj = JsonFactory.getJsonObject(objSource);
|
JsonObject obj = JsonFactory.getJsonObject(objSource);
|
||||||
if (obj != null) {
|
if (obj != null) {
|
||||||
JsonElement variants = obj.get("variants").getAsJsonObject().get("");
|
JsonElement variants = obj.get("variants");
|
||||||
|
JsonElement list = null;
|
||||||
String path = null;
|
String path = null;
|
||||||
|
|
||||||
|
if (variants == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (variants.isJsonArray()) {
|
if (variants.isJsonArray()) {
|
||||||
path = variants.getAsJsonArray().get(0).getAsJsonObject().get("model").getAsString();
|
list = variants.getAsJsonArray().get(0);
|
||||||
|
}
|
||||||
|
else if (variants.isJsonObject()) {
|
||||||
|
list = variants.getAsJsonObject().get(((PottablePlant) plants[i]).getPottedState());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (list == null) {
|
||||||
|
BetterEnd.LOGGER.warning("Incorrect json for pot plant " + objSource + ", no matching variants");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (list.isJsonArray()) {
|
||||||
|
path = list.getAsJsonArray().get(0).getAsJsonObject().get("model").getAsString();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
path = variants.getAsJsonObject().get("model").getAsString();
|
path = list.getAsJsonObject().get("model").getAsString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (path == null) {
|
||||||
|
BetterEnd.LOGGER.warning("Incorrect json for pot plant " + objSource + ", no matching variants");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
model.part(new ResourceLocation(path)).setTransformation(offset).setCondition(state -> state.getValue(PLANT_ID) == compareID).add();
|
model.part(new ResourceLocation(path)).setTransformation(offset).setCondition(state -> state.getValue(PLANT_ID) == compareID).add();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -2,6 +2,8 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.BlockPos.MutableBlockPos;
|
import net.minecraft.core.BlockPos.MutableBlockPos;
|
||||||
|
@ -401,4 +403,10 @@ public class NeonCactusPlantBlock extends BaseBlockNotFull implements SimpleWate
|
||||||
public boolean canPlantOn(Block block) {
|
public boolean canPlantOn(Block block) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Environment(EnvType.CLIENT)
|
||||||
|
public String getPottedState() {
|
||||||
|
return "bottom=moss,shape=top,facing=up";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,11 @@ import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||||
import ru.bclib.blocks.BaseCropBlock;
|
import ru.betterend.blocks.basis.PottableCropBlock;
|
||||||
import ru.betterend.registry.EndBlocks;
|
import ru.betterend.registry.EndBlocks;
|
||||||
import ru.betterend.registry.EndItems;
|
import ru.betterend.registry.EndItems;
|
||||||
|
|
||||||
public class ShadowBerryBlock extends BaseCropBlock {
|
public class ShadowBerryBlock extends PottableCropBlock {
|
||||||
private static final VoxelShape SHAPE = Block.box(1, 0, 1, 15, 8, 15);
|
private static final VoxelShape SHAPE = Block.box(1, 0, 1, 15, 8, 15);
|
||||||
|
|
||||||
public ShadowBerryBlock() {
|
public ShadowBerryBlock() {
|
||||||
|
|
|
@ -2,6 +2,8 @@ package ru.betterend.blocks;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
|
@ -103,4 +105,10 @@ public class SmallJellyshroomBlock extends BaseAttachedBlock implements IRenderT
|
||||||
public boolean canPlantOn(Block block) {
|
public boolean canPlantOn(Block block) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Environment(EnvType.CLIENT)
|
||||||
|
public String getPottedState() {
|
||||||
|
return "facing=up";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,4 +36,9 @@ public class EndPlantBlock extends BasePlantBlock implements PottablePlant {
|
||||||
public boolean canPlantOn(Block block) {
|
public boolean canPlantOn(Block block) {
|
||||||
return isTerrain(block.defaultBlockState());
|
return isTerrain(block.defaultBlockState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addToPot() {
|
||||||
|
return getStateDefinition().getProperties().isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,9 @@ package ru.betterend.blocks.basis;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.material.MaterialColor;
|
import net.minecraft.world.level.material.MaterialColor;
|
||||||
import ru.bclib.blocks.BaseTerrainBlock;
|
import ru.bclib.blocks.BaseTerrainBlock;
|
||||||
|
import ru.betterend.interfaces.PottableTerrain;
|
||||||
|
|
||||||
public class EndTerrainBlock extends BaseTerrainBlock {
|
public class EndTerrainBlock extends BaseTerrainBlock implements PottableTerrain {
|
||||||
public EndTerrainBlock(MaterialColor color) {
|
public EndTerrainBlock(MaterialColor color) {
|
||||||
super(Blocks.END_STONE, color);
|
super(Blocks.END_STONE, color);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,9 @@ package ru.betterend.blocks.basis;
|
||||||
import net.minecraft.world.level.block.Blocks;
|
import net.minecraft.world.level.block.Blocks;
|
||||||
import net.minecraft.world.level.material.MaterialColor;
|
import net.minecraft.world.level.material.MaterialColor;
|
||||||
import ru.bclib.blocks.TripleTerrainBlock;
|
import ru.bclib.blocks.TripleTerrainBlock;
|
||||||
|
import ru.betterend.interfaces.PottableTerrain;
|
||||||
|
|
||||||
public class EndTripleTerrain extends TripleTerrainBlock {
|
public class EndTripleTerrain extends TripleTerrainBlock implements PottableTerrain {
|
||||||
|
|
||||||
public EndTripleTerrain(MaterialColor color) {
|
public EndTripleTerrain(MaterialColor color) {
|
||||||
super(Blocks.END_STONE, color);
|
super(Blocks.END_STONE, color);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package ru.betterend.blocks.basis;
|
||||||
|
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import ru.bclib.blocks.BaseCropBlock;
|
||||||
|
import ru.betterend.interfaces.PottablePlant;
|
||||||
|
|
||||||
|
public class PottableCropBlock extends BaseCropBlock implements PottablePlant {
|
||||||
|
private final Block[] terrain;
|
||||||
|
|
||||||
|
public PottableCropBlock(Item drop, Block... terrain) {
|
||||||
|
super(drop, terrain);
|
||||||
|
this.terrain = terrain;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlantOn(Block block) {
|
||||||
|
for (Block ter: terrain) {
|
||||||
|
if (block == ter) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getPottedState() {
|
||||||
|
return "age=3";
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,18 @@
|
||||||
package ru.betterend.interfaces;
|
package ru.betterend.interfaces;
|
||||||
|
|
||||||
|
import net.fabricmc.api.EnvType;
|
||||||
|
import net.fabricmc.api.Environment;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
|
||||||
public interface PottablePlant {
|
public interface PottablePlant {
|
||||||
boolean canPlantOn(Block block);
|
boolean canPlantOn(Block block);
|
||||||
|
|
||||||
|
default boolean addToPot() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Environment(EnvType.CLIENT)
|
||||||
|
default String getPottedState() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
package ru.betterend.interfaces;
|
||||||
|
|
||||||
|
public interface PottableTerrain {}
|
|
@ -10,7 +10,6 @@ import net.minecraft.world.level.material.MaterialColor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import ru.bclib.blocks.BaseBarrelBlock;
|
import ru.bclib.blocks.BaseBarrelBlock;
|
||||||
import ru.bclib.blocks.BaseChestBlock;
|
import ru.bclib.blocks.BaseChestBlock;
|
||||||
import ru.bclib.blocks.BaseCropBlock;
|
|
||||||
import ru.bclib.blocks.BaseFurnaceBlock;
|
import ru.bclib.blocks.BaseFurnaceBlock;
|
||||||
import ru.bclib.blocks.BaseOreBlock;
|
import ru.bclib.blocks.BaseOreBlock;
|
||||||
import ru.bclib.blocks.BasePathBlock;
|
import ru.bclib.blocks.BasePathBlock;
|
||||||
|
@ -132,6 +131,7 @@ import ru.betterend.blocks.basis.EndUnderwaterWallPlantBlock;
|
||||||
import ru.betterend.blocks.basis.EndWallMushroom;
|
import ru.betterend.blocks.basis.EndWallMushroom;
|
||||||
import ru.betterend.blocks.basis.EndWallPlantBlock;
|
import ru.betterend.blocks.basis.EndWallPlantBlock;
|
||||||
import ru.betterend.blocks.basis.FurBlock;
|
import ru.betterend.blocks.basis.FurBlock;
|
||||||
|
import ru.betterend.blocks.basis.PottableCropBlock;
|
||||||
import ru.betterend.blocks.basis.PottableLeavesBlock;
|
import ru.betterend.blocks.basis.PottableLeavesBlock;
|
||||||
import ru.betterend.blocks.basis.StoneLanternBlock;
|
import ru.betterend.blocks.basis.StoneLanternBlock;
|
||||||
import ru.betterend.blocks.complex.ColoredMaterial;
|
import ru.betterend.blocks.complex.ColoredMaterial;
|
||||||
|
@ -321,10 +321,10 @@ public class EndBlocks extends BlocksRegistry {
|
||||||
|
|
||||||
// Crops
|
// Crops
|
||||||
public static final Block SHADOW_BERRY = registerBlock("shadow_berry", new ShadowBerryBlock());
|
public static final Block SHADOW_BERRY = registerBlock("shadow_berry", new ShadowBerryBlock());
|
||||||
public static final Block BLOSSOM_BERRY = registerBlock("blossom_berry_seed", new BaseCropBlock(EndItems.BLOSSOM_BERRY, PINK_MOSS));
|
public static final Block BLOSSOM_BERRY = registerBlock("blossom_berry_seed", new PottableCropBlock(EndItems.BLOSSOM_BERRY, PINK_MOSS));
|
||||||
public static final Block AMBER_ROOT = registerBlock("amber_root_seed", new BaseCropBlock(EndItems.AMBER_ROOT_RAW, AMBER_MOSS));
|
public static final Block AMBER_ROOT = registerBlock("amber_root_seed", new PottableCropBlock(EndItems.AMBER_ROOT_RAW, AMBER_MOSS));
|
||||||
public static final Block CHORUS_MUSHROOM = registerBlock("chorus_mushroom_seed", new BaseCropBlock(EndItems.CHORUS_MUSHROOM_RAW, CHORUS_NYLIUM));
|
public static final Block CHORUS_MUSHROOM = registerBlock("chorus_mushroom_seed", new PottableCropBlock(EndItems.CHORUS_MUSHROOM_RAW, CHORUS_NYLIUM));
|
||||||
//public static final Block PEARLBERRY = registerBlock("pearlberry_seed", new EndCropBlock(EndItems.BLOSSOM_BERRY, END_MOSS, END_MYCELIUM));
|
//public static final Block PEARLBERRY = registerBlock("pearlberry_seed", new PottableCropBlock(EndItems.BLOSSOM_BERRY, END_MOSS, END_MYCELIUM));
|
||||||
public static final Block CAVE_PUMPKIN_SEED = registerBlock("cave_pumpkin_seed", new CavePumpkinVineBlock());
|
public static final Block CAVE_PUMPKIN_SEED = registerBlock("cave_pumpkin_seed", new CavePumpkinVineBlock());
|
||||||
public static final Block CAVE_PUMPKIN = registerBlock("cave_pumpkin", new CavePumpkinBlock());
|
public static final Block CAVE_PUMPKIN = registerBlock("cave_pumpkin", new CavePumpkinBlock());
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/amber_grass_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/amber_root_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/blooming_cooksonia_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio",
|
||||||
|
"textures": {
|
||||||
|
"particle": "betterend:block/bolux_mushroom",
|
||||||
|
"texture": "betterend:block/bolux_mushroom"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 4, 3, 4 ],
|
||||||
|
"to": [ 12, 7, 12 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 8, 0, 16, 8 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 8, 12, 16, 16 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 8, 12, 16, 16 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 8, 12, 16, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 8, 12, 16, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 5, 7, 5 ],
|
||||||
|
"to": [ 11, 8, 11 ],
|
||||||
|
"faces": {
|
||||||
|
"up": { "uv": [ 9, 1, 15, 7 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 9, 11, 15, 12 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 9, 11, 15, 12 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 9, 11, 15, 12 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 9, 11, 15, 12 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 7, 0, 7 ],
|
||||||
|
"to": [ 9, 3, 9 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "uv": [ 0, 0, 2, 3 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 0, 2, 3 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 2, 0, 0, 3 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 2, 0, 0, 3 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/bushy_grass_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/chorus_mushroom_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/clawfern_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
"__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio",
|
||||||
|
"textures": {
|
||||||
|
"particle": "betterend:block/crystal_grass_2",
|
||||||
|
"texture": "betterend:block/crystal_grass_2"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 5, 0, 4.5 ],
|
||||||
|
"to": [ 5.001, 9, 9.5 ],
|
||||||
|
"rotation": { "origin": [ 5, 0, 4.5 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 8.5, 0, 4.5 ],
|
||||||
|
"to": [ 8.501, 9, 9.5 ],
|
||||||
|
"rotation": { "origin": [ 8.5, 0, 4.5 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneY4",
|
||||||
|
"from": [ 4, 8.5, 4 ],
|
||||||
|
"to": [ 9, 8.501, 9 ],
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 8.5, -3, 7 ],
|
||||||
|
"to": [ 8.501, 6, 12 ],
|
||||||
|
"rotation": { "origin": [ 8.5, -3, 7 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 12, -3, 7 ],
|
||||||
|
"to": [ 12.001, 6, 12 ],
|
||||||
|
"rotation": { "origin": [ 12, -3, 7 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 7, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneY4",
|
||||||
|
"from": [ 8, 5.5, 6 ],
|
||||||
|
"to": [ 13, 5.501, 11 ],
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 5, -3, 9 ],
|
||||||
|
"to": [ 5.001, 5, 14 ],
|
||||||
|
"rotation": { "origin": [ 5, -3, 9 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 8, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 8, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX1",
|
||||||
|
"from": [ 8, -3, 9.5 ],
|
||||||
|
"to": [ 8.001, 5, 14.5 ],
|
||||||
|
"rotation": { "origin": [ 8, -3, 9.5 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 6, 8, 11, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 6, 8, 11, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/fracturn_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/globulagus_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/jungle_grass_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/lamellarium_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,163 @@
|
||||||
|
{
|
||||||
|
"__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio",
|
||||||
|
"parent": "block/block",
|
||||||
|
"textures": {
|
||||||
|
"particle": "betterend:block/murkweed",
|
||||||
|
"texture": "betterend:block/murkweed"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 5, 11, 3 ],
|
||||||
|
"to": [ 9, 15, 7 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 6, 15, 4 ],
|
||||||
|
"to": [ 8, 15.5, 6 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 5.5, 15.5, 3.5 ],
|
||||||
|
"to": [ 8.5, 16, 6.5 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 5, 0, 2.5 ],
|
||||||
|
"to": [ 5.001, 11, 8.5 ],
|
||||||
|
"rotation": { "origin": [ 5, 0, 2.5 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 9, 0, 2.5 ],
|
||||||
|
"to": [ 9.000999, 11, 8.5 ],
|
||||||
|
"rotation": { "origin": [ 9, 0, 2.5 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 9, 0, 6.5 ],
|
||||||
|
"to": [ 9.000999, 9, 12.5 ],
|
||||||
|
"rotation": { "origin": [ 9, 0, 6.5 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 13, 0, 6.5 ],
|
||||||
|
"to": [ 13.001, 9, 12.5 ],
|
||||||
|
"rotation": { "origin": [ 13, 0, 6.5 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 4.5, 0, 7.5 ],
|
||||||
|
"to": [ 4.501, 5, 13.5 ],
|
||||||
|
"rotation": { "origin": [ 4.5, 0, 7.5 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX4",
|
||||||
|
"from": [ 8.5, 0, 7.5 ],
|
||||||
|
"to": [ 8.500999, 5, 13.5 ],
|
||||||
|
"rotation": { "origin": [ 8.5, 0, 7.5 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 9, 9, 7 ],
|
||||||
|
"to": [ 13, 13, 11 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 10, 13, 9 ],
|
||||||
|
"to": [ 12, 13.5, 11 ],
|
||||||
|
"faces": {
|
||||||
|
"north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 9.5, 13.5, 7.5 ],
|
||||||
|
"to": [ 12.5, 14, 10.5 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 5, 5, 8 ],
|
||||||
|
"to": [ 8, 9, 11 ],
|
||||||
|
"faces": {
|
||||||
|
"down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" },
|
||||||
|
"up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" },
|
||||||
|
"north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" },
|
||||||
|
"east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio",
|
||||||
|
"textures": {
|
||||||
|
"particle": "betterend:block/neon_cactus_small_side",
|
||||||
|
"side": "betterend:block/neon_cactus_small_side_moss",
|
||||||
|
"top": "betterend:block/neon_cactus_small_top"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"__comment": "Box1",
|
||||||
|
"from": [ 6, 0, 6 ],
|
||||||
|
"to": [ 10, 8, 10 ],
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"up": { "uv": [ 6, 6, 10, 10 ], "texture": "#top" },
|
||||||
|
"north": { "uv": [ 7, 6, 11, 14 ], "texture": "#side" },
|
||||||
|
"south": { "uv": [ 7, 6, 11, 14 ], "texture": "#side" },
|
||||||
|
"west": { "uv": [ 5, 6, 9, 14 ], "texture": "#side" },
|
||||||
|
"east": { "uv": [ 5, 6, 9, 14 ], "texture": "#side" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX2",
|
||||||
|
"from": [ 4, 0, 4 ],
|
||||||
|
"to": [ 4.001, 8, 15.5 ],
|
||||||
|
"rotation": { "origin": [ 4, 0, 4 ], "axis": "y", "angle": 45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" },
|
||||||
|
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__comment": "PlaneX2",
|
||||||
|
"from": [ 12, 0, 4 ],
|
||||||
|
"to": [ 12.001, 8, 15.5 ],
|
||||||
|
"rotation": { "origin": [ 12, 0, 4 ], "axis": "y", "angle": -45 },
|
||||||
|
"shade": false,
|
||||||
|
"faces": {
|
||||||
|
"west": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" },
|
||||||
|
"east": { "uv": [ 0, 0, 16, 16 ], "texture": "#side" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/shadow_plant_potted"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cross",
|
||||||
|
"textures": {
|
||||||
|
"cross": "betterend:block/vaiolush_fern_potted"
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 202 B |
After Width: | Height: | Size: 218 B |
After Width: | Height: | Size: 210 B |
After Width: | Height: | Size: 145 B |
After Width: | Height: | Size: 500 B |
After Width: | Height: | Size: 330 B |
After Width: | Height: | Size: 229 B |
After Width: | Height: | Size: 325 B |
After Width: | Height: | Size: 138 B |
After Width: | Height: | Size: 224 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 233 B |
After Width: | Height: | Size: 340 B |
After Width: | Height: | Size: 435 B |