mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-19 02:36:59 +00:00
218 lines
5.9 KiB
Java
218 lines
5.9 KiB
Java
package com.volmit.iris.util;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.data.BlockData;
|
|
|
|
import com.volmit.iris.Iris;
|
|
import com.volmit.iris.object.IrisDimension;
|
|
|
|
public class B
|
|
{
|
|
private static final BlockData AIR = Material.AIR.createBlockData();
|
|
private static final KMap<String, BlockData> bdc = new KMap<>();
|
|
private static final KList<String> nulls = new KList<>();
|
|
private static final IrisDimension defaultCompat = new IrisDimension();
|
|
|
|
public static BlockData get(String bd)
|
|
{
|
|
return getBlockData(bd);
|
|
}
|
|
|
|
public static Material mat(String bd)
|
|
{
|
|
return getBlockData(bd).getMaterial();
|
|
}
|
|
|
|
public static BlockData getBlockData(String bd)
|
|
{
|
|
return getBlockData(bd, defaultCompat);
|
|
}
|
|
|
|
public static BlockData getBlockData(String bdxf, IrisDimension resolver)
|
|
{
|
|
try
|
|
{
|
|
String bd = bdxf.trim();
|
|
|
|
if(bdc.containsKey(bd))
|
|
{
|
|
return bdc.get(bd).clone();
|
|
}
|
|
|
|
BlockData bdx = parseBlockData(bd);
|
|
|
|
if(bdx == null)
|
|
{
|
|
bdx = resolver.resolve(bd);
|
|
}
|
|
|
|
if(bdx == null)
|
|
{
|
|
Iris.warn("Unknown Block Data '" + bd + "'");
|
|
nulls.add(bd);
|
|
return bdx;
|
|
}
|
|
|
|
bdc.put(bd, bdx);
|
|
|
|
return bdx;
|
|
}
|
|
|
|
catch(Throwable e)
|
|
{
|
|
Iris.warn("Unknown Block Data '" + bdxf + "'");
|
|
}
|
|
|
|
return AIR;
|
|
}
|
|
|
|
public static BlockData parseBlockData(String ix)
|
|
{
|
|
try
|
|
{
|
|
BlockData bx = Bukkit.createBlockData(ix);
|
|
|
|
if(bx != null)
|
|
{
|
|
return bx;
|
|
}
|
|
}
|
|
|
|
catch(Throwable e)
|
|
{
|
|
|
|
}
|
|
|
|
String i = ix.toUpperCase().trim();
|
|
i = i.equals("WOOL") ? "WHITE_WOOL" : i;
|
|
i = i.equals("CONCRETE") ? "WHITE_CONCRETE" : i;
|
|
|
|
try
|
|
{
|
|
Material m = Material.valueOf(i);
|
|
|
|
return m.createBlockData();
|
|
}
|
|
|
|
catch(Throwable e)
|
|
{
|
|
|
|
}
|
|
|
|
return AIR;
|
|
}
|
|
|
|
public static boolean isLit(BlockData mat)
|
|
{
|
|
return isLit(mat.getMaterial());
|
|
}
|
|
|
|
public static boolean isLit(Material mat)
|
|
{
|
|
if(mat.equals(B.mat("GLOWSTONE")) || mat.equals(B.mat("TORCH")) || mat.equals(Material.REDSTONE_TORCH) || mat.equals(B.mat("SOUL_TORCH")) || mat.equals(Material.REDSTONE_WALL_TORCH) || mat.equals(Material.WALL_TORCH) || mat.equals(B.mat("SOUL_WALL_TORCH")) || mat.equals(B.mat("LANTERN")) || mat.equals(Material.JACK_O_LANTERN) || mat.equals(Material.REDSTONE_LAMP) || mat.equals(Material.MAGMA_BLOCK) || mat.equals(B.mat("SEA_LANTERN")) || mat.equals(B.mat("SOUL_LANTERN")) || mat.equals(Material.FIRE) || mat.equals(B.mat("SOUL_FIRE")) || mat.equals(B.mat("SEA_PICKLE")) || mat.equals(Material.BREWING_STAND) || mat.equals(Material.REDSTONE_ORE))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static boolean canPlaceOnto(Material mat, Material onto)
|
|
{
|
|
if(onto.equals(Material.AIR) || onto.equals(B.mat("CAVE_AIR")))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(onto.equals(Material.GRASS_BLOCK) && mat.equals(Material.DEAD_BUSH))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if(onto.equals(Material.GRASS_PATH))
|
|
{
|
|
if(!mat.isSolid())
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if(onto.equals(Material.STONE) || onto.equals(Material.GRAVEL) || onto.equals(Material.GRAVEL) || onto.equals(Material.ANDESITE) || onto.equals(Material.GRANITE) || onto.equals(Material.DIORITE) || onto.equals(B.mat("BLACKSTONE")) || onto.equals(B.mat("BASALT")))
|
|
{
|
|
if(mat.equals(Material.POPPY) || mat.equals(Material.DANDELION) || mat.equals(B.mat("CORNFLOWER")) || mat.equals(Material.ORANGE_TULIP) || mat.equals(Material.PINK_TULIP) || mat.equals(Material.RED_TULIP) || mat.equals(Material.WHITE_TULIP) || mat.equals(Material.FERN) || mat.equals(Material.LARGE_FERN) || mat.equals(Material.GRASS) || mat.equals(Material.TALL_GRASS))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
if(onto.equals(Material.ACACIA_LEAVES) || onto.equals(Material.BIRCH_LEAVES) || onto.equals(Material.DARK_OAK_LEAVES) || onto.equals(Material.JUNGLE_LEAVES) || onto.equals(Material.OAK_LEAVES) || onto.equals(Material.SPRUCE_LEAVES))
|
|
{
|
|
if(!mat.isSolid())
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public static boolean isDecorant(Material m)
|
|
{
|
|
//@builder
|
|
return m.equals(Material.GRASS)
|
|
|| m.equals(Material.TALL_GRASS)
|
|
|| m.equals(B.mat("CORNFLOWER"))
|
|
|| m.equals(Material.SUNFLOWER)
|
|
|| m.equals(Material.CHORUS_FLOWER)
|
|
|| m.equals(Material.POPPY)
|
|
|| m.equals(Material.DANDELION)
|
|
|| m.equals(Material.OXEYE_DAISY)
|
|
|| m.equals(Material.ORANGE_TULIP)
|
|
|| m.equals(Material.PINK_TULIP)
|
|
|| m.equals(Material.RED_TULIP)
|
|
|| m.equals(Material.WHITE_TULIP)
|
|
|| m.equals(Material.LILAC)
|
|
|| m.equals(Material.DEAD_BUSH)
|
|
|| m.equals(B.mat("SWEET_BERRY_BUSH"))
|
|
|| m.equals(Material.ROSE_BUSH)
|
|
|| m.equals(B.mat("WITHER_ROSE"))
|
|
|| m.equals(Material.ALLIUM)
|
|
|| m.equals(Material.BLUE_ORCHID)
|
|
|| m.equals(B.mat("LILY_OF_THE_VALLEY"))
|
|
|| m.equals(B.mat("CRIMSON_FUNGUS"))
|
|
|| m.equals(B.mat("WARPED_FUNGUS"))
|
|
|| m.equals(Material.RED_MUSHROOM)
|
|
|| m.equals(Material.BROWN_MUSHROOM)
|
|
|| m.equals(B.mat("CRIMSON_ROOTS"))
|
|
|| m.equals(B.mat("AZURE_BLUET"))
|
|
|| m.equals(B.mat("WEEPING_VINES"))
|
|
|| m.equals(B.mat("WEEPING_VINES_PLANT"))
|
|
|| m.equals(B.mat("WARPED_ROOTS"))
|
|
|| m.equals(B.mat("NETHER_SPROUTS"))
|
|
|| m.equals(B.mat("TWISTING_VINES"))
|
|
|| m.equals(B.mat("TWISTING_VINES_PLANT"))
|
|
|| m.equals(Material.SUGAR_CANE)
|
|
|| m.equals(Material.WHEAT)
|
|
|| m.equals(Material.POTATOES)
|
|
|| m.equals(Material.CARROTS)
|
|
|| m.equals(Material.BEETROOTS)
|
|
|| m.equals(Material.NETHER_WART)
|
|
|| m.equals(B.mat("SEA_PICKLE"))
|
|
|| m.equals(B.mat("SEAGRASS"))
|
|
|| m.equals(B.mat("ACACIA_BUTTON"))
|
|
|| m.equals(B.mat("BIRCH_BUTTON"))
|
|
|| m.equals(B.mat("CRIMSON_BUTTON"))
|
|
|| m.equals(B.mat("DARK_OAK_BUTTON"))
|
|
|| m.equals(B.mat("JUNGLE_BUTTON"))
|
|
|| m.equals(B.mat("OAK_BUTTON"))
|
|
|| m.equals(B.mat("POLISHED_BLACKSTONE_BUTTON"))
|
|
|| m.equals(B.mat("SPRUCE_BUTTON"))
|
|
|| m.equals(B.mat("STONE_BUTTON"))
|
|
|| m.equals(B.mat("WARPED_BUTTON"))
|
|
|| m.equals(Material.TORCH)
|
|
|| m.equals(B.mat("SOUL_TORCH"));
|
|
//@done
|
|
}
|
|
}
|